Dados dois números arbitrários A, B. Imprima o número B como um padrão digital de LED, onde A é a escala.
entrada:
1 2320451640799518
saída:
_ _ _ _ _ _ _ _ _ _ _ _
_| _| _|| ||_||_ ||_ |_|| | ||_||_||_ ||_|
|_ _||_ |_| | _| ||_| ||_| | | | _| ||_|
entrada:
2 23
saída:
__ __
| |
__| __|
| |
|__ __|
Regras:
Use STDIN / STDOUT para entrada / saída
Código com mais vitórias positivas. Em caso de empate, o código mais curto será aceito
A resposta mais votada será aceita em 01/02/2014 (Aceitou esta resposta com 12 votos mais altos)
9
, em minha resposta , como eu gosto mais :-)Respostas:
Commodore 64 BASIC
Regras da arte PETSCII :)
Saída:
fonte
Python 3,
286282280Sim, eu joguei esse aqui. Bom desafio!
Além disso, aqui está uma versão do Python 2 pesando apenas 273 bytes!
Não atualizando mais este com mais fontes originais de golfe. Isso foi criado quando a fonte original tinha 282 bytes (versão Python 3).
Isso pode ser trapaça, por isso estou adicionando separadamente. Deixe-me saber se isso é considerado válido ou não.
fonte
Haskell (389 caracteres)
A solução usa 7 matrizes, uma para cada segmento da matriz, usando os nomes desta imagem:
. O valor
a !! 4
será o caractere que deve ser exibido nessa posição para o número 4.Os valores são multiplicados pela escala, onde apropriado (usando
r
erp
para replicação), e finalmente impressos.O código
Exemplo de uso
fonte
C,
249226 caracteresSolução Golfed em C:
Com espaço em branco adicionado:
Notas:
Vou fornecer uma explicação de como funciona, se alguém se importar.
fonte
#include <stdio.h>
(como será compilado sem ele). Você também pode inserir um intmain()
, por exemplomain(x)
, diminuindo 1 byte - embora não seja válido assinatura e colocarscanf
dentrofor
:for(scanf("%d %98s", &s, &i); …)
raspar mais uma. - Dê uma olhada aqui .#include
, mudou-se oscanf
interior dofor
, removido o desnecessário&
na&i
, e colocar asint
variáveis no escopo global para explorar a inicialização estática 0. O código agora ainda deve ser legal C89, mas eu não verifiquei completamente. Eu acredito que colocar umint
emmain
não é legal, então eu deixei isso.int
variáveis globais. Também%98s
pode ser%s
(para cadeias mais longas você falhar de qualquer maneira, que importa de que maneira?)Ruby 2.0
Implementação rápida e (não tão) ingênua de ruby.
Explicação rápida:
Primeiro declaro as strings que representam os dígitos ativados e desativados das barras horizontais e verticais.
Então eu li escala e os dígitos.
Declaro uma matriz do tamanho necessário para armazenar linhas suficientes para a escala especificada. A string estranha é, na verdade, um mapeamento de valores de 7 bits, representando quais LEDs devem ser ativados para cada dígito.
Em seguida, para cada dígito, preencho a matriz de saída de cima para baixo, levando em consideração a escala horizontal.
O loop final é preencher as linhas que possuem apenas barras verticais, que podem ser geradas apenas a partir das linhas central e inferior, removendo as barras horizontais.
Finalmente, imprimo a matriz de saída!
fonte
Python 2.6 sem importações. Eu diria que a atratividade dessa solução é o uso de modelos. Infelizmente, acho que foi por isso que tive tanta dificuldade em compactá-lo.
E um pouco mais curto (308 caracteres):
fonte
(Edit: Esta solução agora é inválida porque a semântica da
銻
instrução foi alterada. Eu não sabia que já tinha feito uso da instrução quando a mudei. Você pode, no entanto, corrigir o programa simplesmente alterando-o para as instruções mais recentes壹
.)Sclipting - 85 caracteres①
Entrada:
Saída:
②
Entrada:
Saída:
fonte
銻
para壹
, mas isso faria essa entrada trapacear porque壹
foi inventada após a publicação deste desafio.C # (
480443 caracteres)Versão extendida:
Minha idéia era dividir a tarefa em 5 linhas horizontais, que por sua vez são divididas nas partes esquerda, direita e do meio de cada personagem.
fonte
;
lá (480); você pode escreverAction<z,z,z,int>q=(l,m,r,n)=>{...};
(470); você pode fazer o primeiro parâmetro deh
achar
e fazer o""+
interiorh
(467); e, finalmente, você pode declarar e reutilizarz d="134579",b="1237"
(465). Esse é o menor que eu poderia fazê-lo até agoraAcho que existem soluções muito mais curtas, mas como esse não é um código-golfe, estou bastante satisfeito!
Esse script PHP terá dois números
a
,b
de STDIN e ecob
no formato LED, noa
tamanho.EDIT: Olhando para o exemplo de saída anterior, suponho erroneamente que o espaço entre os dígitos deve ser tão grande quanto o
a
tamanho. Isso foi corrigido com a declaração do OP de que não é necessário espaço.fonte
C #,
435359473 bytesEDITAS:
Aqui está o código de golfe (com quebras de linha e espaço em branco):
fonte
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
espaço de nomes leva-lo para baixo para 423C (
561492 bytes)Autor é frmar. Ele me enviou sua resposta na semana passada (ele ainda não criou sua conta).
492 bytes, mas um pouco mais ofuscados:
Versão anterior usando 561 bytes:
Versão original da frmar (623 bytes):
Compilação:
Exemplos usando
0123456789
número padrão, mas tamanhos diferentes:Outros exemplos:
Tamanhos maiores:
fonte
Perl + FIGlet + BRA * : 54 caracteres
Imaginei que isso seria muito fácil com o FIGlet , mas não parecia haver fontes adequadas para esse fim. Então eu fiz alguns :-)
Veja como fica no terminal:
* BRA: abuso flagrante de regras
fonte
PERL,
261 244 187166 caracteresUm pouco da filosofia de codificação bit a bit rulez :-)
Código com espaço em branco adicionado:
O Perl deve ser chamado com
-n
:Notas:
Gl+%<UWm7=
:-) Um caractere corresponde a um dígito, são codificadas 3 posições de 3 caracteres consecutivos dentro do" _ _|_| |_ |"
sequência.c
, que também realiza o zoom vertical para a segunda e a terceira linha.c
.Meu
sed
programa não pode ampliar, mas parece muito melhor, não é? :-)Praticamente a idéia que meu script PERL usa, mas no PERL é muito mais feio. Observe que, para o meu programa sed, eu preferi usar o
9
que tem o sublinhado na última linha, como o inverso 6.fonte
C #,
386382364 caracteres / 374 bytes (UTF-8) e (lotes? De) espaço para melhorias ...Editar porcaria ... eu perdi a parte "escala"
Vou tentar outra vez, se eu chegar lá ..
fonte
J - 147
95caracteresAdicionado dimensionamento necessário:
Versão anotada:
Exemplo:
fonte
Ruby, 126 caracteres ASCII
Cada dígito é codificado como um bitmap em terços, portanto, com cada terço representado por um dígito octal.
Como todos os dígitos têm o bit de 64 ou o de 32, o intervalo é de 044 octal a 177 octal. Infelizmente 177 é o caractere DEL não imprimível, portanto, a sequência mágica contém os números 2 abaixo do código de bitmap necessário e precisamos adicionar 2 novamente na função.
Ungolfed in program program
Saída
fonte
Perl 6,
284241237Soluções anteriores:
fonte