Este es un desafío bastante simple, pero (espero) divertido.
Tarea
Si en este momento el mes es 4
y el día es 20
, la hora (en un reloj de 12 horas) es 4
y el minuto es 20
, o el minuto es 4
y el segundo es 20
, imprima este arte ascii:
.
.:.
:|:
.:|:.
::|::
:. ::|:: .:
:|:. .::|::. .:|:
::|:. :::|::: .:|:;
`::|:. :::|::: .:|::'
::|::. :::|::: .::|:;
`::|::. :::|::: .::|::'
:::|::. :::|::: .::|::;
`:::|::. :::|::: .::|::;'
`::. `:::|::. :::|::: .::|::;' .:;'
`:::.. `;::|::. :::|::: .::|::: ::::;
`:::::. ':|::. :::|::: .::|:' ,::::;'
`:::::. ':|:::::|:::::|:' :::::;'
`:::::.:::::|::::|::::|::::.,:::;'
':::::::::|:::|:::|:::::::;:'
':::::::|::|::|:::::::''
`::::::::::;'
.:;'' ::: ``::.
:':':
;
Puede tener espacios finales.
De lo contrario, imprima el número de minutos y segundos que faltan hasta la próxima ocasión en el formato: %d minutes and %d seconds left until your next hit.
minimizando el tiempo.
Este es el código de golf , por lo que gana el código más corto en bytes .
PD: si este desafío es demasiado inapropiado para este sitio, dímelo y lo cambiaré.
code-golf
ascii-art
kolmogorov-complexity
date
Maltysen
fuente
fuente
Respuestas:
Python 2, 371 bytes
Esta fuente contiene bytes no imprimibles, por lo que se presenta como un hexdump con el que se puede decodificar
xxd -r
.Parte legible:
fuente
JavaScript (ES6), 537 bytes
Utiliza la codificación CP-1252.
Nota: se escapan todos los elementos ilegibles en esta publicación
\u00xx
para que el sistema Stack Exchange no los elimine automáticamente. Se debe considerar que tienen un tamaño de un byte.Explicación
Utiliza un esquema de codificación de longitud de ejecución junto con empaquetar cada carácter en 4 bits. La lógica principal del código es de 174 bytes y la cadena de la hoja (incluida la descompresión) es de 364 bytes. Más detalles del método de compresión se encuentran a continuación.
Algoritmos de Compresión
Sin compresión, 911 bytes
Esta es la cadena de la hoja sin compresión en absoluto.
Codificación de longitud de ejecución, 542 bytes
Dado que hay muchos caracteres repetidos consecutivos, la codificación de longitud de ejecución mejora significativamente el recuento de bytes.
Cada carácter repetido 3 o más veces se reemplaza con el carácter seguido de un número decimal de
amount - 3
. La cadena codificada se genera con este código:Embalaje de 4 bits + RLE, 364 bytes
Hay 9 caracteres distintos en la cadena original, lo que significa que 4 es el número mínimo de bits para representar cada uno. Convenientemente, esto permite que exactamente dos representaciones de caracteres quepan en un solo byte, lo que permite utilizar un algoritmo de descompresión simple (y amigable para el golf). Además de eso, quedan 7 caracteres, lo que permite utilizar la codificación de longitud de ejecución de base 7 antes de empaquetar. Poner cada índice de 4 bits en los nibbles superiores e inferiores de cada carácter comprimido significa que se almacenan 2 caracteres por byte, porque la codificación CP-1252 codifica cada carácter bajo el punto de código 256 como un solo byte.
El siguiente código se utiliza para realizar la codificación y el empaquetado de longitud de ejecución:
Codificación Huffman, (Posible mejora futura)
Ciertos caracteres aparecen mucho más que otros, por lo que una codificación Huffman (enteros de longitud variable que representa cada carácter) podría ahorrar algunos bytes adicionales. Sin embargo, esto introducirá mucha más complejidad en el algoritmo de descompresión, por lo que, además de ser mucho más trabajo, también puede costar más bytes descomprimirlo de lo que ahorra en la cadena codificada.
fuente
Javascript ES6, 905 bytes
Menos mal ... El reloj de 12 horas mató a mi solución por lo demás corta ( ahum ).
905 bytes para imprimir 898 caracteres de ascii art yay
Código sin golf
Nota: el código no protegido no se ejecutará
¡Intentalo!
En el siguiente fragmento de código, puede establecer la fecha para probar el arte ascii
fuente
15:16:20
será una coincidencia en su expresión regular y mostrará accidentalmente la cadena mágica?()
sean necesarios para eldate
constructor:c=new d(), ...
puede volverse justoc=new d, ...