Escaleras de cuerda
Descargo de responsabilidad: este es el primer desafío que propongo. Cualquiera y todos los comentarios son bienvenidos. Si se trata de un duplicado, indíquelo.
Aquí hay un enlace a la publicación de sandbox.
Gol
El objetivo de este desafío es, dada una cadena y un número entero, imprimir la cadena en bloques del tamaño de ese número entero. Si una palabra tiene más caracteres que el tamaño de un bloque, imprímala en un patrón descendente de "escalera".
Reglas
- El "patrón de escalera" mencionado anteriormente significa que, por cada bloque de una misma palabra, ese bloque debe comenzar exactamente donde termina el bloque que está encima. Verifique los casos de prueba (o pregunte) si tiene alguna pregunta.
- Si una palabra se divide en varios bloques, la siguiente palabra debe imprimirse con un número adecuado de espacios, es decir, debe separarse del bloque inferior de la palabra anterior exactamente por un espacio en blanco. Verifique los casos de prueba (o solicite) una aclaración.
- Puede suponer que la cadena de entrada consistirá solo en caracteres ASCII imprimibles. Además, no tendrá múltiples espacios en blanco seguidos.
- También puede suponer que el entero siempre estará en el rango [1, + ∞).
- Se permiten espacios en blanco al final o nuevas líneas.
- Puede usar cualquier método razonable para E / S.
- Se aplican lagunas estándar .
- Este es el código de golf , por lo que gana el código más corto (en bytes, por idioma). Después de una semana (más o menos), aceptaré la respuesta más corta en general.
Casos de prueba
(String, Integer) => (Output)
"This is a large string", 3 => Thi is a lar str
s ge ing
"This is an even larger string!", 2 => Th is an ev la st
is en rg ri
er ng
!
"Ooooh dear, what a big string you have!", 3
=> Ooo dea wha a big str you hav
oh r, t ing e!
"Staphylococcus saprophyticus", 4 => Stap sapr
hylo ophy
cocc ticu
us s
"I hope you find this challenge interesting", 2
=> I ho yo fi th ch in
pe u nd is al te
le re
ng st
e in
g
"Well, this test case looks kinda pointless now doesn't it?", 15
=> Well, this test case looks kinda pointless now doesn't it?
"This one looks a lot more interesting!", 1 => T o l a l m i
h n o o o n
i e o t r t
s k e e
s r
e
s
t
i
n
g
!
"Keep in mind, people: 'Punctuation! Does! Matter!'", 2
=> Ke in mi pe 'P Do Ma
ep nd op un es tt
, le ct ! er
: ua !'
ti
on
!
Respuestas:
Carbón de leña , 22 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
* Más precisamente, "muévete al inicio de la siguiente línea dos veces, pero como si el lienzo estuviera rotado". Editar: En medio de este desafío que se estableció y se aceptó esta respuesta, Charcoal realmente adquirió un medio de dividir una cadena en pares de caracteres, reduciendo el código 16 bytes: ¡
F⪪θ «↑⸿⸿F⪪ιIη«κ↙
Pruébelo en línea! El enlace es a la versión detallada del código. Explicación:fuente
SOGL V0.12 ,
282726 bytesPruébalo aquí!
Implementé
‰
mientras hacía esto, pero la documentación para ello existía antes.Explicación:
fuente
Javascript ES6,
187183174166163148145143141140138 bytesfuente
<"!"
lugar de==" "
.C #, 200 bytes
Donde la cadena se especifica por i y el tamaño se especifica por s .
P.ej
Básicamente, la primera parte Regex.Split utiliza espacios en blanco para dividir la oración en palabras, y Regex.Matches divide cada palabra en fragmentos especificados por s . El fragmento se escribe en la posición del cursor (x, y) donde Y se establece en 0 para cada palabra nueva, y x se incrementa en 2 para el primer fragmento de una palabra y posteriormente (s-1) para cada fragmento.
x comienza su vida útil en -2 para garantizar que su primer uso se establezca en 0.
No conozco lo suficiente en curiosidades de C # para poder hacerlo más pequeño, pero sospecho que probablemente pueda serlo.
fuente
Python 2 ,
203199 bytesPruébalo en línea!
fuente
' '*(i/l*(l-1))
puede seri/l*~-l*' '
.Perl 5, 59 bytes
Código de 55 bytes + 4 para
-ai
.Nota: los
\x1b
s sonESC
caracteres literales , pero se escaparon aquí para copiar y pegar fácilmente.Este script utiliza secuencias de escape ANSI y requiere la entrada a través del
-i
indicador que no es estándar. Si alguno de estos no es aceptable, avíseme y lo actualizaré.Ejecuciones de ejemplo
fuente