Parece que recientemente, ha habido muchos Jimmys cayendo a su muerte, como se puede ver aquí , y aquí donde se le pidió que determinara si Jimmy caería. Es hora de detener esta locura y tratar de salvar a Jimmy.
Jimmy tiene tres partes del cuerpo /
, o
y \
dispuesta como este
/o\
Las plataformas están representadas con -
. Jimmy se caerá de su plataforma si tienen dos o más partes del cuerpo que no están directamente encima de una plataforma.
Algunos ejemplos:
/o\
- -------
Jimmy se equilibrará ya que todas sus partes del cuerpo están por encima de a -
.
/o\
------ ---
Jimmy equilibrará ya que dos partes del cuerpo están por encima del -
s.
/o\
-- ---- --
Jimmy se equilibrará aunque estén divididos entre dos plataformas
/o\
-
Jimmy no se equilibrará ya que dos partes del cuerpo no están por encima de una plataforma.
Como el suministro de mi plataforma se está agotando, solo tengo plataformas con una longitud de 5, y es importante que usemos la menor cantidad posible.
Su tarea es tomar una entrada de Jimmys y generar una serie de plataformas que guardarán todos los Jimmys en la entrada. Su salida debe usar la menor cantidad de plataformas posible, pero cada plataforma debe tener 5 -
'de ancho.
Tenga en cuenta que la regla de la plataforma es de 5 de -
ancho, significa que cada plataforma debe tener un espacio entre ellas. ----------
no es válido en la salida ya que se considerará una plataforma de longitud 10 y no dos plataformas de longitud 5.
Casos de prueba
/o\ /o\/o\ // input
----- ----- // output
/o\ /o\
----- -----
/o\ /o\ // same input as above
----- ----- // this is also valid output
/o\ /o\
-----
Aplican reglas estándar.
Este es el código de golf, ¡que gane la respuesta más corta!
Respuestas:
Carbón ,
1715 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Repita mientras la posición del cursor sea menor que la longitud de la entrada.
Si el carácter en esa posición en la entrada es una
o
o una\
, imprima 5-
s.Pasa al siguiente personaje, garantizando así al menos un espacio entre plataformas.
La solución anterior de 17 bytes es en mi humilde opinión más "Carbón-y".
Pruébalo en línea! El enlace es a la versión detallada del código. La salida incluye entrada, lo que demuestra la corrección de la solución. Explicación:
Imprima la entrada y avance al inicio de la siguiente línea.
Pase sobre cada carácter de la entrada para asegurarse de que no se pierda a Jimmy.
Mira el personaje sobre el cursor. Si no hay ninguno, o si es espacio o
/
, no haga nada, de lo contrario imprima 5-
s.Pasa al siguiente personaje, garantizando así al menos un espacio entre plataformas.
fuente
Python 2 ,
7067 bytesPruébalo en línea!
-3 bytes gracias a Kevin Cruijssen y Neil
No es el más bonito, no estoy seguro de cómo manejar mejor esas barras sobrantes ...
Desafortunadamente, no podemos reemplazar ambos extremos de cada plataforma con espacios usando una sola
re.sub
llamada, porque en el caso de que 2 plataformas estén separadas por un espacio, la brecha entre ellas no puede coincidir más de una vez. Una afirmación de mirar hacia atrás / mirar hacia atrás no ayudará, porque todo lo que coincida con esas afirmaciones no se reemplaza.Usando una sola
re.sub
referencia:Python 3.8 (prelanzamiento) , 78 bytes
Pruébalo en línea!
fuente
/
y luego el[^ ]
.JavaScript (ES6),
56 5554 bytesPruébalo en línea!
O 47 bytes si devolver una matriz de caracteres es aceptable.
fuente
Python 3 ,
158164160 bytesPruébalo en línea!
Esta es mi primera respuesta de código de golf, ¡y estoy feliz de que sea una pregunta de Jimmy!
Explicación:
a=input();r=""
: Tome la entrada e inicialice una nueva cadenar
.for i,c in enumerate(a):
: Enumerar sobre la entrada.try:r[i] ... except:
: Vea sir[i]
existe; de lo contrario, procese elexcept
bloque.if c in"/o":
: Comprueba si el personaje actual está en las dos primeras partes del cuerpo de Jimmy.r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- "
: Si es así, agregue un nuevo segmento. Agregue un espacio antes de nuestro nuevo segmento si otra cabeza de Jimmy está presente en cinco caracteres.else:r+=" "
: De lo contrario, solo agregue un espacio.print(r)
: Imprime nuestro resultado final.fuente
Retina ,
2321 bytes-2 bytes gracias a @Neil .
Contiene un solo espacio final en las líneas segunda, cuarta y sexta.
Puerto de la respuesta Python 2 de @negativeSeven , ¡así que asegúrate de votarlo!
Pruébalo en línea.
Explicación:
Reemplace todo
"/"
con un" "
:Añadir 5 espacios finales:
Reemplace todas las subcadenas de tamaño seis que no comienzan con un espacio
"----- "
:fuente
\S
lugar de[^ ]
?Jalea , 35 bytes
Pruébalo en línea!
Un enlace monádico que toma la entrada como una cadena y devuelve una cadena Jelly con las plataformas.
Se inspira en la respuesta de @ negativeseven .
fuente
05AB1E ,
2524 bytesPuerto de la respuesta Python 2 de @negativeSeven , ¡así que asegúrate de votarlo!
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Japt ,
2322 bytesUn puerto de la solución JS de Arnauld que estoy demasiado cansado para probar completamente. Si no es válido, ¿puede un Diamante eliminar?
Intentalo
fuente