Reto:
Entrada:
Toma dos entradas:
- Una cadena que solo contiene ASCII imprimible (excluyendo espacios, tabulaciones o nuevas líneas)
- Un carácter ASCII imprimible
Salida:
La primera línea contendrá la entrada de cadena. Cada i
primera aparición de -modulo-3 de este personaje se moverá en dirección sudeste; cada i
segundo -modulo-3 segundo evento se moverá en dirección Sur; y cada i
tercera ocurrencia de -modulo-3 se moverá en dirección suroeste. Continuará hasta que los caracteres estén a punto de volver a su posición inicial inicial (lo que significa que se ajustará de un lado al otro si es necesario), y luego imprimirá la última línea con la entrada de cadena nuevamente para terminarlo (Tenga en cuenta que todos los casos de prueba terminarán en su entrada inicial después de la mayoría de las length(input)
filas, incluida la fila que contiene la entrada posterior. Sin embargo, puede ser antes, como se ve en este primer caso de prueba a continuación, con una longitud de 14, pero terminando después 9.)
Todo esto puede ser bastante vago, así que aquí hay un ejemplo:
Caso de prueba 1:
Entrada de cadena: Entrada de "This_is_a_test"
caracteres:'s'
Salida:
This_is_a_test
s s s
ss s
s s
sss
sss
s s
ss s
s s s
This_is_a_test
Aquí está el mismo caso de prueba con las rutas de colores de los tres s
:
donde el primero 's'
sigue el camino verde en dirección sureste; el segundo 's'
sigue el camino amarillo en dirección sur; y el tercero 's'
sigue el camino azul claro en dirección suroeste. (Si hubiera un cuarto 's'
, iría nuevamente en dirección sudeste, lo que se puede ver en algunos de los otros casos de prueba a continuación).
Reglas de desafío:
- Las entradas solo contendrán ASCII imprimibles (excluyendo espacios, pestañas y nuevas líneas)
- Los formatos de E / S son flexibles. Puede ser una cadena delimitada por una nueva línea, una matriz de caracteres, etc. Su llamada.
- Es posible que el carácter dado no esté presente en la cadena, en cuyo caso se le permite generar la cadena de entrada una o dos veces (es decir,
"test", 'a'
puede tener cualquiera de estos como salida posible:"test\ntest"
/"test"
). - Los espacios iniciales son obligatorios; los espacios finales son opcionales. Se permiten una o varias líneas nuevas iniciales / finales.
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 code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. 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 / más ejemplos:
Caso de prueba 2:
Entrada de cadena: Entrada de "abcabcabcabcabc"
caracteres:'b'
Salida:
abcabcabcabcabc
b b b b b
bbb bb
b b
bbb bb
b b b b b
b b b b
b b b b b
bb b bb
b b b
bb bbb
b b bbb
b b b b
b bb bb
b b bb b
abcabcabcabcabc
Aquí está el mismo caso de prueba con las rutas de colores de los cinco a
:
Caso de prueba 3:
Entrada de cadena: Entrada de "only_two_paths?"
caracteres:'o'
Salida:
only_two_paths?
o o
o o
o o
o o
o o
oo
o
oo
o o
o o
o o
o o
o o
o o
only_two_paths?
Aquí está el mismo caso de prueba con las rutas de colores de los dos o
:
Caso de prueba 4:
Entrada de cadena: "lollollollollol"
Entrada de caracteres:'l'
Salida:
lollollollollol
lll ll ll
ll ll ll
l ll ll ll ll
lll l ll l ll
llllll ll ll
l l ll ll
ll lll ll
l l l lll ll l
ll l ll l l
l l l l llll l
ll lll lll
l l l ll
ll lll lllll
l l l ll l ll
lollollollollol
Aquí está el mismo caso de prueba con las rutas de colores de los diez l
:
Caso de prueba 5:
Entrada de cadena: "AbCdEeDcBaAbCdEeDcBa_CCCCC"
Entrada de caracteres:'C'
Salida:
AbCdEeDcBaAbCdEeDcBa_CCCCC
C C C C C
C C C C CCC
C C C C C C C
C C C C C C C
C C C C C C C
C C C C C C C
C C C C C C C
C C C CC C C
C C CC C C
C C CC C C
C C CC C
CC CC C C
CC CC C C
C C CC C C
C C CC C C C
C C C C C C
C C CC C C C
C C C C C C C
C C C C C C C
C C C C C CC
C C C C C C
C C C C CCC
C C C CCCC
C C C C
C C CCCCC
AbCdEeDcBaAbCdEeDcBa_CCCCC
Aquí está el mismo caso de prueba con las rutas de colores de los siete C
:
Caso de prueba 6:
Entrada de cadena: "XyX"
Entrada de caracteres:'X'
Salida:
XyX
XX
X
XyX
Aquí está el mismo caso de prueba con las rutas de colores de los dos X
:
Caso de prueba 7:
Entrada de cadena: "aaaa"
Entrada de caracteres:'a'
Salida:
aaaa
aa
aaa
aaa
aaaa
Aquí está el mismo caso de prueba con las rutas de colores de los cuatro a
:
length(input)
todo vuelve a coincidir, pero puede ser antes, como lo demuestra el primer caso de prueba. Pero parece que tienes razón sobre el múltiplo de 3 partes (aunque no estoy 100% seguro).