Escriba el programa más corto que tomará una cadena de números (de al menos 20 de longitud) como entrada, y muestre la salida usando los números de estilo de reloj digital estándar. Por ejemplo, para la entrada 81, una solución con salida ascii daría:
_
|_| |
|_| |
La salida gráfica también es aceptable, si ayuda.
Respuestas:
APL (Dyalog) (45)
La cadena,
ા8धगɯેࣃଏ૽
son los caracteres unicode2750 56 2343 2327 623 2759 2777 2243 2831 2813
(sin embargo, debería poder copiarlos y pegarlos). Codifican los números. El programa lee una línea desde el teclado.Explicación:
1+⍎¨⍞
: lea una línea desde el teclado, analice cada carácter como un dígito, luego agregue 1 a cada número (las matrices APL están basadas en 1 por defecto).⎕UCS'ા8धगɯેࣃଏ૽'[
...]
: Seleccione los caracteres que pertenecen a los dígitos de los números que ingresó y busque los valores Unicode.{
...}¨
: para cada uno de estos valores, haga:1+⍵⊤⍨9⍴3
: obtenga los primeros 9 dígitos de base 3 a partir del valor expresado en base-3 y agregue 1 (porque las matrices están basadas en 1).' _|'[
...]
: seleccione un espacio, una línea horizontal o una línea vertical dependiendo de estos dígitos3 3⍴
: formatear como un cuadro de 3 por 3.fuente
Funciton
Realmente no es un lenguaje adecuado para jugar al golf ... pero de todos modos, traté de mantener el tamaño del código lo más pequeño que pude, un desafío bastante diferente al de los idiomas "habituales". Esto es 1555 caracteres o 3110 bytes (si está codificado como UTF-16; UTF-8 es más grande).
Aquí hay una captura de pantalla del programa en ejecución. Realmente funciona :)
Dado que esto se ve feo en StackExchange debido al espacio adicional entre líneas, considere ejecutar el siguiente código en la consola JavaScript de su navegador para solucionarlo:
$('pre').css('line-height',1)
Probablemente podría ser más pequeño si no hubiera cometido un error debido a que la salida fue al frente; Lo arreglé agregando una función adicional para invertir la entrada. De lo contrario, probablemente tendría que reescribirlo todo.
También cometí otro error (intercambiando los operandos en dos llamadas a
‼
) que hizo necesario declarar la‡
función adicional , ¡pero esta es tan pequeña que cabe dentro de la función principal y por lo tanto no agrega ningún carácter!fuente
wxpython, muchos personajes
Prueba
ps: no es una entrada seria, pero parece que la salida gráfica también es aceptable, así que lo probé :-)
fuente
Golfscript - 66 caracteres
xxd
: (usarxxd -r
para revertir)Esto sigue a la mayoría de las otras respuestas en el sentido de que no hay espacios entre los números y los espacios finales se mantienen. Un espacio entre los números se puede agregar fácilmente con
1+
antes{"_ |"=}%
. Empaquetado en un número de base 3, y luego como base 243 en una cadena.fuente
J,
90,7868 caracteres[ actualización: usando codificación unicode (1 byte):
funciona como antes:]
La clave está en la codificación de dígitos como enteros de base 3. Cero, por ejemplo es:
o
' _ | ||_|'
, que se convierte en 010202212 3 = 2750.fuente
http://codegolf.stackexchange.com/q/1000
)Mathematica
205 209 198179Uso
fuente
JavaScript (145)
148145Dado que JavaScript no tiene realmente entrada / salida estándar, esto se escribe como una función que toma una cadena y devuelve la salida como una cadena.
Espaciado:
Así es como funciona:
Los primeros tres bits son para la primera fila, etc.
En cada grupo de tres bits, el primero especifica si el primer carácter es
|
o espacio, el segundo si es_
o espacio, y el tercero nuevamente|
o espacio.Estos tres bits se recuperan como
c&1
,c&2
yc&4
, que luego se utilizan como índices en la cadenab
.En cada iteración,
i%L
es la "coordenada x", es decir, el dígito dentro de la entradan
En cada iteración,
i/L
es la "coordenada y", es decir, la fila, pero debemos|0
convertirla en un enteroFinalmente, los espacios entre los dígitos y las nuevas líneas entre las líneas también se recuperan indexando
b
, reutilizando el carácter de espacio y la posición 3 no utilizada en esa cadena. :)fuente
Rubí, 142
espera entrada en la variable
x
. ejemplos:fuente
Golfscript - 97 caracteres
fuente
Windows PowerShell, 127
Dado que las cadenas contienen algunos caracteres desagradables para escribir, un hexdump para su conveniencia:
fuente
gforth,
186175 caracteresNueva versión:
Esto realmente molesta salir (+3 caracteres) también :). Aquí está la versión más legible, hace un poco de empaquetado de bits para reducir el tamaño de LUT en 1/3, pero el código resultante es más complejo, por lo que no es un gran ahorro:
Versión antigua:
Esto deja la pila desequilibrada y no se molesta en salir del intérprete. Aquí hay una versión más limpia y legible
fuente
Personajes C # 369
Podría cortar fácilmente algunos caracteres. Lo importante era abusar de LINQ :)
Más versión de espacios en blanco:
fuente
using
(409). Luego hay un espacio en blanco innecesario que se puede eliminar (402). La tarea establece que se debe omitir el espacio en blanco entre los dígitos (399).g
se usa solo una vez, por lo que puede guardar 7 caracteres al incluirlo.b
también se usa solo una vez, por lo que también puede incorporarlo. Además, puede guardar muchos caracteres si cambia la matriz de enteros a"{H=mNgwI\x7fo"
, o incluso más corto si cambia\x7f
al carácter real # 127 (que no se puede imprimir, pero está permitido). El>>
seguirá funcionando porque hay una conversión implícita dechar
aint
..ToCharArray()
y el.ToArray()
son redundantes, puede eliminarlos :)Solución Java:
585570 caracteresNo creo que intente jugar más golf en Java ...
fuente
Pitón,
218180176b=map(int,raw_input());a=map(int,bin(914290166014670372457936330)[2:]);c=' |_';p=lambda k:''.join(c[a[9*n+k]]+c[2*a[9*n+1+k]]+c[a[9*n+2+k]]for n in b)+'\n';print p(6)+p(0)+p(3)
Con saltos de línea:
fuente
Bash, 11 caracteres
Sí, lo sé, estoy haciendo trampa.
Necesitas tener el baño instalado.
fuente
figlet
También funcionaría.Java, 2,095
Muestra de E / S
fuente
D: 295 caracteres
Más legible:
fuente
Ocaml, 268
Versión legible
fuente
Perl (
182180)lee de STDIN.
fuente
Ghostscript
(270)(248)(214)Editar: más sustituciones. Se eliminó el espacio entre dígitos.
Editar: incluso más sustituciones. Main loop ahora se ve como lo que hace!
Utiliza la función de procesamiento de argumentos de ghostscript: invocar con
gs -dNODISPLAY -- digit.ps 012 345 6789
.fuente
Delphi || 453 (568 con formato)
Ni siquiera lo suficientemente cerca como para ganar, pero fue divertido hacerlo ^. ^
Con formato
fin.
fuente
PHP,
140136133131129128 bytesPodría ahorrar
57 más con ascii extendido: uno para cada"| _"
y el salto de línea, tres para~"z/]{4lno~|"
(la negación bit a bit convertiría todo en caracteres ascii extendidos = sin caracteres especiales, y PHP no necesita comillas allí), dos para-1
(es solo allí para mantener el mapa en ascii estándar). Pero por legibilidad y compatibilidad, me quedo con ASCII estándar.el mapa de bits
_
,|_|
,|_|
como bits-6-
,024
,135
(número de bit y 2 es 0 para LEDs verticales)[123,48,94,124,53,109,111,112,127,125]
"z/]{4lno~|"
~"z/]{4lno~|"
(permite la taquigrafía ternaria en la selección de caracteres)la plantilla
7
los espacios ->767
,024
,135
701
,623
,745
(renders$p=0
obsoleto)547326107
(lee el mapa de derecha a izquierda; permite el bucle aritmético)5473261070
(permite combinar el turno con la prueba en la cabeza del bucle)753754680
(dos bytes más cortos: un dígito y el prefijo)Descompostura
fuente
ord(~"z/]{4lno~|v.J=NF"[hexdec($c)])-1
Java 8, 280 bytes
Explicación:
Pruébalo aquí
Como función, esto sería 218 bytes en su lugar.
fuente
Python, 227 caracteres
Simple y directo.
fuente
Perl, 145 caracteres
Sin golf:
fuente
Python 3.4.3 -
1514858 bytesLa tentación de resolver esto fue demasiado grande para no registrarse y responder = P
Soy un poco nuevo en Python, así que formateé mi programa de forma agradable y ordenada (o al menos lo hice). ¡Las mejoras son muy apreciadas!
Editar: nombres de variables acortados, usados; para acortar, solo un espacio al final de los números de salida, variables definidas todas a la vez.
Las nuevas líneas son de 2 bytes (CRLF) y usé pestañas en lugar de 4 espacios.
fuente
SmileBASIC, 216 bytes
Usar gráficos en lugar de texto, porque probablemente sea más corto.
Explicación:
fuente
C ++,
230229225223218207204198 bytesLee desde stdin y salida a stdout.
Explicación:
fuente
Powershell, 114 bytes
Script de prueba:
Salida:
Idea principal:
Cada número de estilo de reloj digital estándar contiene 3 líneas. Además, la primera línea contiene solo 2 opciones. Un total de 6 opciones. Por lo tanto, 7 bits son suficientes para codificar cada dígito.
Entonces, la cadena
f-SR5Z^mvr
codifica todos los segmentos para todos los números de estilo de reloj digital estándar.Nota: El orden del
line str
se seleccionó especialmente para que todos los códigos estuvieran en el intervalo32..126
.fuente