Dados dos números arbitrarios A, B. Imprima el número B como un patrón LED digital donde A es la escala.
entrada:
1 2320451640799518
salida:
_ _ _ _ _ _ _ _ _ _ _ _
_| _| _|| ||_||_ ||_ |_|| | ||_||_||_ ||_|
|_ _||_ |_| | _| ||_| ||_| | | | _| ||_|
entrada:
2 23
salida:
__ __
| |
__| __|
| |
|__ __|
Reglas:
Use STDIN / STDOUT para entrada / salida
Código con más votos positivos. En caso de empate, se aceptará el código más corto
La respuesta más votada será aceptada el 01/02/2014 ( esta respuesta fue aceptada con los 12 votos más altos)
9
en mi respuesta , ya que me gusta más :-)Respuestas:
Commodore 64 BÁSICO
Reglas de arte PETSCII :)
Salida:
fuente
Pitón 3,
286 282280Sí, jugué golf con este. Buen desafío!
Además, ¡aquí hay una versión de Python 2 que pesa solo 273 bytes!
No actualizar esto más con más fuentes originales de golf. Esto se creó cuando la fuente original era de 282 bytes (versión Python 3).
Esto puede ser trampa, así que lo agrego por separado. Déjame saber si esto se considera válido o no.
fuente
Haskell (389 caracteres)
La solución utiliza 7 matrices, una para cada segmento de la matriz, utilizando los nombres de esta imagen:
. El valor
a !! 4
será el carácter que debe mostrarse en esa posición para el número 4.Los valores se multiplican por la escala donde sea apropiado (usando
r
yrp
para la replicación), y finalmente se imprimen.El código
Ejemplo de uso
fuente
C,
249226 caracteresSolución de golf en C:
Con espacios en blanco agregados:
Notas:
Proporcionaré una explicación de cómo funciona, si a alguien le importa.
fuente
#include <stdio.h>
(ya que se compilará sin él). También puede poner un intmain()
, por ejemplomain(x)
, recortar 1 byte, aunque no es válido firma y ponerscanf
dentrofor
:for(scanf("%d %98s", &s, &i); …)
afeitado de uno más. - Mira aquí .#include
, movido elscanf
interior delfor
, eliminado el innecesaria&
en&i
, y poner lasint
variables que en el ámbito global de explotar la estática 0 inicialización. El código ahora debería ser legal C89, pero no lo revisé a fondo. Creo poniendo unaint
en lamain
que no es legal, por lo que me fui a cabo.int
las variables globales. También%98s
puede ser%s
(para cadenas más largas fallas de todos modos, ¿importa de qué manera?)Ruby 2.0
Implementación rápida y (no tan) ingenua de rubí.
Explicación rápida:
Primero declaro las cadenas que representan dígitos de encendido y apagado para barras horizontales y verticales.
Luego leí la escala y los dígitos.
Luego declaro una matriz del tamaño necesario para almacenar suficientes líneas para la escala dada. La cadena extraña es en realidad una asignación de valores de 7 bits que representa qué LED encender para cada dígito.
A continuación, para cada dígito, lleno la matriz de salida de arriba a abajo, teniendo en cuenta la escala horizontal.
El bucle final es llenar las filas que solo tienen barras verticales, que solo se pueden generar a partir de las filas medias e inferiores eliminando las barras horizontales.
¡Finalmente, imprimo la matriz de salida!
fuente
Python 2.6 sin importaciones. Yo diría que el atractivo de esta solución es el uso de plantillas. Desafortunadamente, creo que es por eso que me costó tanto compactarlo.
Y un poco más corto (308 caracteres):
fuente
(Editar: esta solución ahora no es válida porque la semántica de la
銻
instrucción ha cambiado. No me di cuenta de que ya había hecho uso de la instrucción cuando la cambié. Sin embargo, puede arreglar este programa simplemente cambiándolo a la nueva instrucción壹
)Sclipting - 85 caracteres①
Entrada:
Salida:
②
Entrada:
Salida:
fuente
銻
a壹
, pero eso haría que esta entrada engañara porque壹
se inventó después de que se publicó este desafío.C # (
480443 caracteres)Versión extendida:
Mi idea era dividir la tarea en 5 líneas horizontales, que a su vez se dividen en una parte izquierda, derecha y media para cada personaje.
fuente
;
allí (480); puedes escribirAction<z,z,z,int>q=(l,m,r,n)=>{...};
(470); puedes hacer el primer parámetro deh
achar
y hacer el""+
insideh
(467); y finalmente, puede declarar y reutilizarz d="134579",b="1237"
(465). Eso es lo más pequeño que pude llegar hasta ahoraSupongo que hay soluciones muy cortas, pero como esto no es código golf, ¡estoy bastante satisfecho!
Este script PHP tomará dos números
a
,b
desde STDIN y echob
en formato LED, aa
tamaño.EDITAR: Mirando el ejemplo de salida anterior, supuse erróneamente que el espacio entre dígitos debería ser tan grande como el
a
tamaño. Esto se ha solucionado con la declaración del OP de que no se necesita espacio.fuente
C #,
435359473 bytesEDICIONES:
Aquí está el código de golf (con saltos de línea y espacios en blanco agregados):
fuente
using System;using S=System.String;class P{static void Main(){Action<S[]>D=n=>{var r=int.Parse(n[0]);Func<int,int,bool>F=(i,c)=>("ϭͱͼΟŅŭϻ"[i]&1<<c-48)>0;S s="",v="|",w=" ",x=new S('_',r),y=new S(' ',r);foreach(var c in n[1])s+=w+(F(0,c)?x:y)+w+w;for(int j=1;j<6;j+=3)for(int i=r;i-->0;){s+="\n";foreach(var c in n[1])s+=(F(j,c)?v:w)+(i<1&&F(j+1,c)?x:y)+(F(j+2,c)?v:w)+w;}Console.Write(s);};D(Console.ReadLine().Split(' '));}}
System
espacio de nombres lo lleva a 423C (
561492 bytes)El autor es frmar. Me envió su respuesta la semana pasada (todavía no ha creado su cuenta).
492 bytes pero un poco más ofuscado:
Versión anterior con 561 bytes:
Versión original de frmar (623 bytes):
Compilacion:
Ejemplos que usan un
0123456789
número predeterminado pero diferentes tamaños:Otros ejemplos:
Tamaños más grandes:
fuente
Perl + FIGlet + BRA * : 54 caracteres
Pensé que esto sería bastante fácil de hacer con FIGlet , pero no parecía haber ninguna fuente adecuada para este propósito. Entonces hice algunos :-)
Así es como se ve en la terminal:
* BRA: abuso de reglas flagrantes
fuente
PERL
261 244 187166 caracteresUn poco de filosofía de codificación bit a bit rulez :-)
Código con espacio en blanco agregado:
Perl tiene que ser invocado con
-n
:Notas:
Gl+%<UWm7=
:-) Un carácter corresponde a un dígito, codificado son 3 posiciones de 3 caracteres consecutivos dentro del" _ _|_| |_ |"
cadena.c
, que también realiza el zoom vertical para la segunda y tercera línea.c
.Mi
sed
programa no puede ampliar, pero se ve mucho mejor, ¿no? :-)Más o menos la idea que usa mi script PERL, pero en PERL es mucho más feo. Tenga en cuenta que para mi programa sed preferí usar el
9
que tiene el guión bajo en la última línea, que es como el reverso 6.fuente
C #,
386382364 caracteres / 374 bytes (UTF-8) y (¿mucho?) Margen de mejora ...EDITAR basura ... Me perdí la parte de "escala"
Le daré otra oportunidad si lo consigo ...
fuente
J - 147
95caracteresSe agregó la escala requerida:
Versión anotada:
Ejemplo:
fuente
Ruby, 126 caracteres ASCII
Cada dígito se codifica como un mapa de bits en tercios, por lo tanto, con cada tercio representado por un dígito octal.
Como todos los dígitos tienen el bit de 64 o el bit de 32 establecido, el rango es de 044 octal a 177 octal. Desafortunadamente, 177 es el carácter DEL no imprimible, por lo que la cadena mágica contiene los números 2 debajo del código de mapa de bits requerido, y tenemos que agregar 2 nuevamente en la función.
Sin golf en el programa de prueba
Salida
fuente
Perl 6,
284241237Soluciones anteriores:
fuente