Entrada:
Dos cadenas (NOTA: el orden de entrada es importante).
Salida:
Ambas palabras / oraciones comienzan en líneas con una línea vacía entre ellas. 'Caminan' horizontalmente 'uno al lado del otro'. Pero cuando tienen el mismo personaje en la misma posición, se cruzan y luego continúan caminando 'uno al lado del otro'.
Confuso que dices? Pongamos un ejemplo:
Entrada: Words crossing over
& Ducks quacking
:
Word quack n
s i g
Duck cross n over
Disculpe la mala pintura de MS ...
Reglas de desafío:
- Siempre volvemos a caminar en línea recta después de haber 'cruzado' antes de que podamos cruzar de nuevo (ver caso de prueba arriba {1} - donde
ing
es igual, pero después de haber cruzadoi
, primero tenemos que regresar caminando en línea recta (ignorando asín
), antes de que podamos cruzar de nuevog
). - Las entradas pueden ser de diferente longitud, en cuyo caso el más largo continúa caminando en línea recta (ver casos de prueba 1, 2, 4 y 6).
- Ambas entradas pueden ser iguales (ver caso de prueba 3).
- Las entradas no contendrán pestañas ni líneas nuevas.
- Los espacios se ignoran como caracteres que son iguales (como un caso de borde) , en cuyo caso el siguiente carácter (sin espacio) después de eso, si lo hay, se cruza (ver casos de prueba 3, 5 y 6).
- Las entradas no pueden tener caracteres adyacentes (sin espacio) en la misma posición, en cuyo caso ambos simplemente caminan en línea recta horizontalmente (ver casos de prueba 2).
- Incluso si el primer carácter es igual, siempre comenzamos dos líneas separadas (ver casos de prueba 3 y 6).
- Los espacios finales y una nueva línea final son opcionales.
- Puede suponer que las entradas solo contendrán caracteres ASCII imprimibles (se excluyen las nuevas líneas y pestañas).
- Las entradas son mayúsculas y minúsculas, de modo
A
ya
no son iguales, y no cruzar (ver caso de prueba 7). - Ambas longitudes de entrada siempre serán al menos 2.
- La entrada y salida pueden estar en cualquier formato razonable. Puede ser una sola cadena con nuevas líneas; un conjunto de cadenas / lista; impreso en STDOUT; Matriz 2D de personajes; etc.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
Casos de prueba:
1. Input: "Words crossing over" & "Ducks quacking"
1. Output:
Word quack n
s i g
Duck cross n over
2. Input: "bananas" & "ananas"
2. Output:
bananas
ananas
3. Input: "I see my twin!" & "I see my twin!"
3. Output:
I e y w n
s e m t i !
I e y w n
4. Input: "Is the weather nice?" & "Not really, no.."
4. Output:
Is th ally, no..
e
Not r weather nice?
5. Input: "Codegolf & Programming Puzzles" & "The golfer might solve puzzles"
5. Output:
Code o f & Programming P z l s
g l u z e
The o fer might solve p z l s
6. Input: "Can you turn the lights off?" & "Can you try to solve this?"
6. Output:
C n o urn the ve s off?
a y u t l t
C n o ry to so igh his?
7. Input: "one Ampere" & "two apples"
7. Output:
one Am les
p
two ap ere
8. Input: "Words crossing" & "Words Quacking"
8. Output:
W r s cross n
o d i g
W r s Quack n
Carbón , 69 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Python 2 ,
217210 bytes-1 byte thanks to officialaimm
Try it online!
fuente
s=' '
Haskell,
142138 bytesTry it online!
Cómo funciona:
fuente
g 0
. Regarding the missing word: "a" as in "variable named a", but that's indeed confusing, so I reworded it.a
. :) Personalmente usoa
en mis explicaciones cuando indico las variables, aunque generalmente es bastante claro sin ellas. Gracias por la aclaración, y de hecho esperaba una corrección de errores bastante sencilla.'
Ya no estoy seguro de cómo hacer 'a' (con ser reemplazado por una marca de retroceso) en un comentario, que es lo que quería decir ... (Así que utilizo marcas de retroceso alrededor de las variables, dentro de mis bloques de código)JavaScript (ES6), 112 bytes
Sin golf:
Casos de prueba:
Mostrar fragmento de código
fuente
APL (Dyalog) , 50 bytes
Pruébalo en línea!
⍵⍀⍨¯1*⍳4
da la matriz:(los puntos representan espacios). Sus columnas se rotarán en diferentes cantidades para que las primeras tres filas terminen pareciéndose al resultado deseado, de ahí el
3↑
el comienzo cercano. El resto del algoritmo calcula las cantidades de rotación.Dentro de los padres:
3↑⍵
crea una matriz comoy
2=⌿
compara sus filas por pares, es decir, la primera cadena frente a la segunda cadena y la segunda cadena frente a la fila de todos los espacios.Estamos interesados en que el primero sea verdadero (1) y el segundo falso (0), por lo que reducimos con
>⌿
para obtener un vector booleano llamadoa
.Ahora, en cada tramo de 1 s necesitamos poner a cero las ocurrencias pares porque no pueden ocurrir dos giros uno al lado del otro. Primero obtenemos una numeración como:
hablando libremente, reemplazando
a[i]
cona[i]*max(a[i-1]+1, a[i])
hasta que el resultado se estabilice:{⍵⌈a×1+1,¯1↓⍵}⍣≡
y tomamos ese mod 2:2|
Ahora sabemos dónde ocurrirán los giros. Copiamos cada uno
1
a la izquierda -2∨/
(en parejas "o"):y calcular las sumas parciales -
+\
Eso nos da las cantidades de rotación de columna que necesitábamos al principio. El módulo 4 está implícito.
fuente
Perl 5 , 211 bytes
Pruébalo en línea!
# Perl 5 , 234 bytesreparó el error que Kevin señaló
Pruébalo en línea!
fuente
"Can you turn the lights off?" & "Can you try to solve this?"
, parece que recibo un error:Modification of non-creatable array value attempted, subscript -1 at .code.tio line 1, <> line 2.
¿Es esto un error o estoy haciendo algo incorrecto? Aquí está el TIO.05AB1E , 31 bytes
Puerto de @ETHproductions respuesta Japt 's , pero con dos diferencias menores:
1) que toma la entrada como una lista de personajes 2D en lugar de lista de cadenas.
2) En
counter_variable
05AB1E es 0 por defecto, en lugar de 11 (o 3) comoB
en Japt, entonces elNĀ
se agrega como verificación adicional dentro del mapa (y giro hacia la derecha en lugar de hacia la izquierda).Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente