Ordenar los libros de texto
La escuela comienza pronto (si aún no lo ha hecho) y es hora de poner en orden nuestros libros de texto. Necesita ordenar sus libros en orden alfabético, pero eso lleva demasiado tiempo, por lo que decide escribir un programa para hacerlo.
Ejemplos
Entrada:
_
| | _
|F| | |
|o|_|P|
|o|B|P|
| |a|C|
| |r|G|
|_|_|_|
Salida:
_
| |_
|F| |
_|o|P|
|B|o|P|
|a| |C|
|r| |G|
|_|_|_|
Entrada
La entrada será un conjunto de libros que deben reorganizarse alfabéticamente. Contendrá solamente: |
, _
, , y
A-Za-z
. Los títulos de los libros se leen verticalmente, de arriba abajo.
Puede optar por asumir que la entrada se rellena con espacios en blanco para ajustarse a un rectángulo. Si elige que su entrada se rellene con espacios en blanco, especifíquelo en su respuesta.
La altura máxima de libro que su programa necesitará manejar es de 5,120 líneas de alto sin fallar.
Los libros siempre tendrán 1 grosor y siempre tendrán al menos un libro en la entrada
Salida
La salida deberá ser el mismo conjunto de libros organizados en orden alfabético. La altura de los libros debe permanecer igual y el título debe tener el mismo espacio desde la parte superior cuando se reorganiza.
Los libros deben estar ordenados alfabéticamente. Si su idioma tiene una función de clasificación, puede usarla. De lo contrario, puede usar la clasificación alfabética como se describe aquí .
Ejemplos de títulos de libros
_
| |
| |
|F|
|o|
|o|
| |
| |
|B|
|a|
|r|
| |
| |
|_|
El título de este libro es:
"Foo Bar"
Los títulos de los libros solo contendrán letras y espacios.
Se permite el espacio en blanco al final
Victorioso
Este es el código de golf, por lo que el código más corto en bytes gana.
Respuestas:
CJam, 60 bytes
Intenté portar mi respuesta de Python, que también es similar al enfoque de @ RetoKoradi .
Pruébalo en línea . La entrada debe rellenarse con espacios para formar un rectángulo.
fuente
Python 3, 231 bytes
Solo un truco rápido. Comprime los libros, ordena, vuelve a cerrar, cuidando las columnas
|
mientras estamos en ello.Ingrese una cadena multilínea, rellenada con espacios finales a un rectángulo. La salida tiene un espacio final más en cada línea de lo necesario.
Sin golf
fuente
Rubí
209204 204200198 bytes)los
transpose
función en esta solución requiere que todas las líneas tengan la misma longitud, por lo tanto, la entrada debe rellenarse con espacios en blanco.Explicación
fuente
ruby
versión se requiere? Con 2.1.2 para la entrada de muestra de la pregunta me sale "'transposición': el tamaño del elemento difiere (6 debería ser 2) (IndexError)".gsub(?|,' ')
→tr(?|,' ')
.Python 2 - 399 bytes
Espera que la entrada no tenga una nueva línea final.
fuente
CJam,
756665 bytesEsto espera entradas rellenadas con espacios para formar un rectángulo.
Pruébalo en línea
Gracias a @ Sp3000 y @Dennis por las sugerencias sobre el recorte de cadenas en el chat, así como por darme una pista de que el
$
operador puede tomar un bloqueo como argumento.Todavía no estoy del todo contento con el segundo bucle. Pero después de probar algunas otras opciones sin mayor éxito, me estoy cansando.
Explicación:
fuente
Scala
359341 bytesespera que todas las líneas tengan la misma longitud (es decir, rellenadas con espacios)
sin golf y comentado:
fuente