El lenguaje de programación esotérico evil tiene una operación interesante sobre los valores de bytes que llama "tejido". Es esencialmente una permutación de los ocho bits del byte (no importa desde qué extremo comencemos a contar, ya que el patrón es simétrico):
- El bit 0 se mueve al bit 2
- El bit 1 se mueve al bit 0
- El bit 2 se mueve al bit 4
- El bit 3 se mueve al bit 1
- El bit 4 se mueve al bit 6
- El bit 5 se mueve al bit 3
- El bit 6 se mueve al bit 7
- El bit 7 se mueve al bit 5
Por conveniencia, aquí hay otras dos representaciones de la permutación. Como un ciclo:
(02467531)
Y como una lista de pares de mapeo:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
Su tarea es visualizar esta permutación, utilizando los caracteres de cuadro de dibujo ─
, │
, ┌
, ┐
, └
, ┘
,┼
(Unicode puntos de código: U + 2500, U + 2502, U + 250C, U + 2510, U + 2514, U + 2518, U + 253C). Esta visualización debe satisfacer las siguientes restricciones:
La primera y la última línea son exactamente:
0 1 2 3 4 5 6 7
Entre ellos, puede usar tantas líneas como desee de hasta 15 caracteres cada una para adaptarse a los caracteres de su cuadro de dibujo (necesitará al menos 4 líneas). Las líneas deben comenzar verticalmente debajo de uno de los dígitos en la primera fila y terminar verticalmente arriba del dígito correspondiente en la última fila. Las ocho líneas deben estar conectadas y solo pueden cruzarse ┼
(lo que siempre es un cruce, nunca dos líneas de giro que se tocan). Los caminos exactos de las líneas dependen de usted (y encontrar un diseño particularmente golfable es el núcleo de este desafío). Una salida válida sería:
0 1 2 3 4 5 6 7
│ │ └─┼┐│ │ └┐│
└─┼─┐ ││└─┼─┐││
┌─┘ │ ││ │ │││
│ ┌─┼─┘│ │ │││
│ │ │ ┌┼──┘ │││
│ │ │ │└┐ ┌─┼┼┘
│ │ │ │ │ │ │└┐
0 1 2 3 4 5 6 7
Sin embargo, cualquier otro diseño que conecte correctamente los dígitos correctos también está bien. Por favor, muestre el resultado elegido en su respuesta.
Puede escribir un programa o función y no tomará ninguna entrada. Envíe el diagrama a STDOUT (o la alternativa más cercana) o como un valor de retorno de función en forma de una cadena o una lista de cadenas (cada una representa una línea).
Se aplican las reglas estándar de código de golf , por lo que gana el código más corto (en bytes).
fuente
01234567
como una entrada y luego conectar que a01234567
? ¿Para que tengas que descubrir los enlaces tú mismo? Sería una tarea significativamente más desafiante, especialmente para el golf.Respuestas:
En realidad, 69 bytes
Pruébalo en línea! (la alineación está un poco desordenada en el intérprete en línea)
Realmente tiene una GRAN ventaja aquí: todos los caracteres de dibujo de caja están en CP437, por lo que son solo un byte cada uno. Aunque cada carácter necesario podría codificarse teóricamente en 4 bits (dado que solo hay 9 caracteres únicos), los 31 bytes guardados al comprimir la cadena se perderían debido a las capacidades de procesamiento de cadena muy pobres de Actually. Esto también significa que cualquier configuración de 8x4 daría como resultado la misma puntuación. Dado que 8x4 parece ser la configuración más corta (verticalmente) posible, esta es óptima.
¡Gracias a Martin por 3 bytes!
¡Gracias a TimmyD por 4 bytes más!
Explicación:
fuente
PowerShell v2 +,
172153148145142131123 bytes (81 caracteres)Jugué más el tejido, eliminando la necesidad de varias variables mediante el uso de bloques de código en línea. Esto es probablemente dentro de unos pocos bytes de óptimo.
Comenzamos estableciendo
$a
un rango igual al rango0..7
que se ha unido con espacios. Esto se debe a que el valor predeterminado$ofs
(Separador de campo de salida) para una matriz es un espacio, por lo que cuando la matriz se encadena con""+
(con un operador como este, PowerShell intentará convertir implícitamente el objeto derecho como el objeto izquierdo), el resultado es el rango separado por espacios.Eso está encapsulado en parens, lo que agrega el resultado a la tubería. Luego configuramos una variable auxiliar
$b
, seguida de cuatro líneas de salida con la variable apropiada en su lugar (dividida con nuevas líneas literales), y usando bloques de código en línea para las secciones repetidas, seguidas de$a
nuevo. Las cuatro líneas y$a
también se colocan en la tubería, y la salida está implícita al final.fuente
Javascript ES6,
168167 bytesEditar: Whoops, resultó que estaba usando el
|
char de tubería en lugar de U + 2502│
en parte de la función, recuento de bytes actualizado.Devuelve una cadena.
Salida:
Extra: Usando el método de @ TimmyD, tengo otra solución de 167 bytes:
fuente
JavaScript (ES6),
137134bytesComo campanero, inmediatamente reconocí esto como las dos primeras filas de Plain Hunt Major (tenga en cuenta que la imagen vinculada usa 1-8 en lugar de 0-7).
fuente
Pyth -
11910410081 bytesExtremadamente simple (Es realmente bytes esta vez).
Pruébelo en línea aquí .
También robé la salida de @ TimmyD:
fuente
Lote MS-DOS, 136 bytes
Usando la salida de @ TimmyD. Esto también podría funcionar en Windows Batch, pero mi página de códigos es CP850, no CP437.
fuente
MATLAB / Octave,
112109 bytesSalida:
Mi código se basa en los resultados de @Dendrobium y @Neil .
fuente
/// , 112 bytes (100 caracteres)
¡Gracias @MartinEnder por -3 bytes!
¡Gracias @MartinEnder por -9 bytes!
Gracias @MartinEnder (OP) por señalar la regla de 15 caracteres
Utiliza la
salida de @ TimmyD's@ Marcofuente
Python3, 209 bytes
Devuelve una cadena.
¡Gracias a @Mego por guardar 2 bytes!
¡Los créditos del cuerpo del personaje van a @TimmyD!
fuente
a,
parte, lo que también eliminará la necesidad de que se llame con un parámetro.Sprects , 99 bytes (87 caracteres)
Utiliza la salida de @ Marco (reemplaza cada 16 caracteres con una nueva línea (expresión regular:
(.{15}).
->\1\n
)).fuente
Bash + GNU sed, 140 bytes
Salida:
Usando la salida de @ TimmyD : 142 bytes
Salida:
fuente
Tcl , 205 bytes
Pruébalo en línea!
salidas
fuente
SOGL V0.12 , 64 bytes
Pruébalo aquí!
Patrón robado del PowerShell
fuente