Usted trabaja en una imprenta virtual y anticuada. Para ayudarlo a organizar sus letras monoespaciales más rápido, decide hacer el programa más corto posible para ayudarlo. Dada una cadena de texto y un tamaño de página, genera y genera cada página del texto.
Ejemplos
Por ejemplo, con un ancho de página de 14, altura 7 y algo de texto, aquí está su libro:
14, 7, "Fruits make an extremely good snack due to their utterly scrumptious sweetness. They are also very healthy for you."
+------------+
| Fruits |
| make an |
| extremely |
| good snack |
| due to |
+------------+
+------------+
| their |
| utterly |
| scrumptio- |
| -us |
| sweetness. |
+------------+
+------------+
| They are |
| also very |
| healthy |
| for you. |
| |
+------------+
Aquí está la configuración básica de la página:
|---i.e.14---|
+------------+ -
| Xxxxxxxxxx | |
| Xxxxxxxxxx | i.
| Xxxxxxxxxx | e.
| Xxxxxxxxxx | 7
| Xxxxxxxxxx | |
+------------+ -
Unas pocas cosas
- Hay un margen de un espacio entre los bordes de la página y el texto.
- El ancho y la altura incluyen los bordes de la caja, si eso no estaba claro.
- Wraparound solo ocurre si una palabra no cabe en una sola línea.
- El programa necesita poder generar tantas páginas como sea necesario, y solo esa cantidad.
- Su programa debe admitir cualquier tamaño de página, no solo 14 por 7.
- Este es el código de golf, por lo que gana la solución más pequeña en bytes (cualquier idioma).
- No arruines la diversión. Las lagunas estándar obviamente no están permitidas.
Ah, y por cierto:
+------------+
| May the |
| best book |
| publisher |
| win. Good |
| Luck! |
+------------+
+------------+
| Best |
| program |
| so far: |
| Charcoal |
| |
+------------+
for example 14
que ese.g.
scru-/-mpt-/-ious
)Respuestas:
Python 2 ,
306304283279 bytesPruébalo en línea!
fuente
L=len
para guardar un total de 2 bytes ...7, 3, "Three Is The Magic Number!"
) produce una página vacía principal.Carbón ,
10583 bytesPruébalo en línea! Enlace es prolijo versión del código de
la deverbosifier no puede manejar las. Si las líneas en blanco iniciales fueran aceptables, podría reducirlo a 76 bytes:ⅈ
yⅉ
nilary operadoresExplicación:
Ingrese el ancho
q
y la altura enh
.Muévase a una posición que active el primer cuadro que se dibujará, pero sin generar un margen superior.
Recorre todas las palabras en la cadena de entrada.
Repita mientras una palabra es demasiado ancha para caber en un cuadro.
Empuje la mayor parte de la palabra que se ajuste más un guión final.
Prefije un guión al resto de la palabra.
Empuja el resto de la palabra.
Recorre todas las palabras con guiones.
Compruebe si la palabra se ajusta a la línea actual.
Si es así, imprima un espacio.
De lo contrario, avance al inicio de la siguiente línea.
Comprueba si necesitamos una nueva caja.
Si es así, dibuja el cuadro.
Finalmente, imprime la palabra.
fuente
Perl 5 ,
203182+ 1 (-a
) = 183 bytesPruébalo en línea!
fuente
SOGL V0.12 , 92 bytes
Pruébalo aquí!
fuente
JavaScript (ES8), 242 bytes
Gracias a @ Tvde1 por informar de un error
Pruébalo en línea!
Comentado
fuente
12
y7
, algunas líneas / palabras se invierten.Jalea , 93 bytes
Un programa completo de tomar tres argumentos (
text
,width
,height
), que imprime las páginas.Pruébalo en línea! NB Demasiado ineficiente para ejecutar el ejemplo desde el OP dentro del límite de 60 segundos.
( 97 bytes si la línea en blanco entre las páginas es realmente un requisito)
¿Cómo?
fuente
PHP, 299 bytes
Ejecutar con
php -nr '<code>' <width> <height> '<text>'
o probarlo en línea .fuente