“×Ɗ¡‘ŒP»Ṫ¦209ṗ€3Fd⁴ịØHs3ṢQY
Pruébalo en línea!
Cómo funciona
“×Ɗ¡‘
produce los puntos de código de los caracteres entre las comillas en el SBCS de Jelly , que son 0x11 = 17 , 0x91 = 145 y 0x00 = 0 .
ŒP
construye el conjunto de potencia de la matriz de puntos de código, produciendo
[[], [17], [145], [0], [17, 145], [17, 0], [145, 0], [17, 145, 0]]
Las dos últimas entradas corresponden a combinaciones que contienen 80 y FF , por lo que debemos descartarlas.
»Ṫ¦209
consta de tres partes:
Ṫ
(cola) elimina la última matriz de puntos de código, es decir, [17, 145, 0] .
»209
toma el máximo de cada número entero en el resto del conjunto de potencia y 0xD1 = 209 , reemplazándolos por 209 .
¦
(disperso) itera sobre los elementos del resto del conjunto de potencia. Si el índice correspondiente se encuentra en [17, 145, 0] , el elemento se reemplaza con todos los 209 . Si no, se deja intacto.
¦
no es modular, por lo que esto modifica solo la última matriz (índice 0 ) en el resto del conjunto de alimentación. Los índices 17 y 145 son demasiado grandes y no tienen efecto.
El resultado es el siguiente.
[[], [17], [145], [0], [17, 145], [17, 0], [209, 209]]
ṗ€3
calcula el tercer poder cartesiano de cada matriz, es decir, la matriz de todas las 3 tuplas de elementos de cada matriz.
Fd⁴
aplana el resultado y calcula el cociente y el resto de cada entero dividido por 16 .
ịØH
índices (basados en 1) en "0123456789ABCDEF , por lo que 0x11 , 0x91 , 0x00 y 0xD1 se asignan a " 00 " , " 80 " , " FF " y " C0 " (resp.).
s3ṢQ
divide los pares de caracteres en 3 tuplas, clasifica las tuplas y deduplica.
Finalmente, se Y
une a las tuplas únicas, separándose por avances de línea.
“0FC8”
, como lo hemos hecho00
,FF
,C0
, y80
.Python 3,
1341291251089190 bytesCreo que todavía hay mucho golf por hacer aquí. Sugerencias de golf bienvenidas!
Editar: -9 bytes y muchas gracias a Mego por ayudar con el formato de la cadena. -17 bytes de encontrar una mejor manera de imprimir la cadena en primer lugar. -17 bytes de encontrar una mejor manera de escribir el bucle for en primer lugar. -1 byte gracias a la sugerencia de xnor para usar en
i%3//2*"\n"
lugar de"\n"*(i%3<2)
.Ungolfing
fuente
*
.i%3//2*"\n"
guarda un byte.JavaScript (ES6),
109107bytesGuardado 2 bytes, gracias a Neil
Esto es
79 bytes más corto que simplemente devolver la cadena sin formato en las comillas inversas.Prueba
Mostrar fragmento de código
fuente
.replace(/./g)
tiene la misma longitud que.map().join
, pero.map(x=>'08CF'[x=n>>x&3]+'000F'[x],n+=+v||21)
ahorra dos bytes.PowerShell,
113106bytesSí, no he encontrado nada más corto que simplemente imprimir la cadena literal ...Gracias a @ Martin Smith por reducir 7 bytes usando un reemplazo simple (que pasé por alto por completo). Entonces, somos al menos 7 bytes más cortos que simplemente codificarlo. ¡Hurra!¡Pero eso es aburrido!
Así que en vez ...
PowerShell v4, 128 bytes
El
[system.consolecolor]
espacio de nombres define los colores de la consola (de forma nativa) disponibles para la consola de PowerShell. Si los hacemos referencia a través de una matriz entera como esta, el valor predeterminado es el nombre (por ejemplo,Black
oWhite
similar). Combinamos eso con una cadena que ha estado-split
en espacios, por lo que ahora tenemos una serie de cadenas de nombres de colores.Recorremos esos
|%{...}
y cada iteración extrae el[system.windows.media.colors]
valor correspondiente . La cadena de caracteres predeterminada para esos objetos es el color en#AARRGGBB
formato como un valor hexadecimal, por lo que aprovechamos eso encapsulando esa llamada en una cadena con un bloque de secuencia de comandos"$(...)"
. Pero, dado que no queremos los valores alfa o el hash, tomamos el extremo posterior[3..8]
de la cadena y necesitamos-join
esachar
matriz resultante de nuevo en una cadena. Entonces, un simpleSort-Object
ponerlos en el orden correcto.fuente
00
y.Replace(7,'00')
es <21 caracteres.-replace
for8
y80
es el mismo número de bytes (ahorra 12 ceros, que es la-replace8,80
longitud). Hacerlo para elFF
es más largo por dos bytes debido a las comillas necesarias alrededor"FF"
de la-replace2,"FF"
declaración.Pyth -
644844 bytesCompresión de base super simple.
Pruébelo en línea aquí .
fuente
MATL , 39 bytes
Pruébalo en línea!
fuente
05AB1E , 57 bytes
Pruébalo en línea!
Lo que necesitamos generar es básicamente (invertido y dividido):
Que, en decimal es:
Que en Base-214 es:
Esta es la solución más simple que se me ocurrió, porque no hay forma de que esté golpeando a Dennis. Pasó una hora intentándolo y nada mejoró su idea.
fuente
PHP, 92 bytes
Pruébalo en línea!
simplemente reemplazo de los dígitos como clave en la matriz con los valores strtr
fuente
Lote, 137 bytes
Sí, es así de aburrido. Intento anterior de 148 bytes:
Lamentablemente, no puede canalizar la salida de
for
uncall:
comando o un comando, por lo que tengo que invocarme recursivamente.fuente
Pyke, 42 bytes
Pruébalo aquí!
fuente
Befunge,
8369 bytesPruébalo en línea!
Los colores están codificados en la cadena que ve en la primera línea, dos bits por componente de color, con un bit alto adicional establecido para forzar cada valor en el rango ASCII (excepto en el caso de 63, que estaría fuera del rango como 127 )
La lista de colores en la pila se procesa de la siguiente manera:
fuente
C #, 195 bytes
Lamentablemente, esto supera, por un amplio margen, lo más interesante, aunque increíblemente complicado (me divertí mucho más escribiéndolo) C #, 270 bytes
fuente
()=>@"string_here"
(esto se convierte enAction<string>
). También sugiero usar una cadena literal (@
) para que pueda poner las nuevas líneas directamente en la cadena sin necesidad de escapar de ellas.C (gcc) , 99 bytes
Pruébalo en línea!
Después de haber intentado crear una lista de números y generarlos mientras los ordenaba, los comparé con la solución ingenua, que era aleccionadora:
Ese se registra en 140 bytes en comparación con mi intento en 200 y cambia.
La solución fue pensarlo como un texto como cualquier otro, aunque con un alfabeto pequeño. Cada color podría considerarse como un triplete de índices de 2 bits en el alfabeto {0xff, 0xc0, 0x80, 00}. El proceso de color -> triplete -> número -> carácter (con desplazamiento +35 para hacerlos todos imprimibles y evitar la necesidad de fugas) puede ilustrarse como tal:
Entonces es solo una cuestión de iterar sobre la cadena resultante y cortar las partes apropiadas de la cadena del alfabeto.
fuente