O que eu quero:
Simplesmente, quero uma exibição baseada em texto, que solicite uma entrada n
e mostre esse valor na exibição! Mas há um problema. Cada um dos pixels 'verdadeiros' (os preenchidos) deve ser representado por esse número n
.
Exemplo:
Você recebe uma entrada n
. Você pode assumir n
que será um único dígito
Input: 0
Output:
000
0 0
0 0
0 0
000
Input: 1
Output:
1
1
1
1
1
Input: 2
Output:
222
2
222
2
222
Input: 3
Output:
333
3
333
3
333
Input: 4
Output:
4 4
4 4
444
4
4
Input: 5
Output:
555
5
555
5
555
Input: 6
Output:
666
6
666
6 6
666
Input: 7
Output:
777
7
7
7
7
Input: 8
Output:
888
8 8
888
8 8
888
Input: 9
Output:
999
9 9
999
9
999
Desafio:
Faça isso acima no menor número possível de bytes.
Aceitarei apenas respostas que atendam a todos os requisitos.
O espaço em branco circundante é opcional, desde que o dígito seja exibido corretamente.
Além disso, <75 bytes é um voto meu, o menor aceita, mas eu sempre posso alterar a resposta aceita, portanto, não desanime em responder.
code-golf
ascii-art
kolmogorov-complexity
VortexYT
fonte
fonte
Respostas:
Sogl V0.12 , 30 bytes
Experimente aqui! A cadeia compactada
■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘
éque é (começando com 1, terminando com 0) os números, linha por linha, número para número. O resto
fonte
-
), e o resto é fácil. Estou curioso, qual testador online você usou? Eu não fiz nem vi nenhum.JavaScript (ES6), 88 bytes
Os números codificam quais quadrados contêm espaços para um determinado dígito, por exemplo, o canto inferior esquerdo tem um valor de 146 porque os 1, 4 e 7 não o usam e 146 = 2¹ + 2⁴ + 2⁷.
fonte
05AB1E ,
403938 bytesExperimente online!
Explicação
fonte
Japonês , 43 bytes
Contém alguns imprimíveis. Experimente online!
Contagens: 13 bytes de dados compactados, 9 bytes para descompactá-los e 21 bytes para formar a saída.
Explicação
Código não destruído:
Existem exatamente 4 possibilidades de linhas diferentes: (
#
representa um dígito)Assim, cada número pode ser armazenado como um conjunto de cinco dígitos de base 4. Como cada número pode ser armazenado em 10 bits, o total é de 100 bits, o que corresponde a 13 bytes. Vou pular o processo de compactação e explicar a descompactação.
Após a descompactação, a cadeia compactada de 13 bytes fica assim:
Observe que isso falharia se qualquer uma das execuções de quatro dígitos
0
fosse iniciada , pois os zeros à esquerda seriam deixados de fora quandos4
executados. Podemos consertar isso tendo0
represent#
, que aparece apenas três vezes, e nenhum deles cai no início de uma execução de quatro dígitos.Ok, então, para fazer com que nossa string de 50 dígitos seja compactada bem em pedaços de 4, tivemos que adicionar dois dígitos extras. Adicioná-los ao início da string significa que podemos cortá-los com o one-byter
¤
.Embaraçosamente, o Japt não possui um built-in para dividir uma string em fatias de comprimento X. No entanto, ele possui um built-in para obter todos os caracteres X, para que possamos armazenar todos os dados codificando todas as linhas principais primeiro, depois todas as segundas linhas etc.
Então agora temos a sequência de 5 dígitos que codifica o dígito que queremos criar, por exemplo,
32223
para0
.Para explicar o número mágico, consulte as quatro linhas distintas. Se você substituir
com
#
por1
e0
, obtémTranspor isso e depois juntar-se a uma única string nos dá
101100010111
. Converta em decimal e, voilà, você tem 2839. A reversão do processo mapeia os dígitos0123
nas quatro linhas binárias mostradas acima.Quase pronto! Agora tudo o que resta a fazer é adicionar os espaços e dígitos:
E pronto, a saída implícita cuida do resto. Sinto muito que essa explicação seja longa, mas não vejo nenhuma maneira real de jogar golfe sem torná-la menos compreensível (se for compreensível ...)
fonte
JavaScript (ES6),
115111 bytesRecebe a entrada como uma sequência.
Como funciona
Codificação de padrão
Os quatro padrões distintos
"XXX"
,"X.."
,"..X"
e"X.X"
pode ser comprimido como"XXX...X.X"
e extraído desta forma:Ao substituir o dígito de entrada
n
para"X"
e usando espaços reais, o que dá a expressão:Codificação de dígitos
Usando os identificadores de padrão definidos acima, cada dígito pode ser representado por uma quantidade de 5 * 2 = 10 bits.
Por exemplo:
A lista completa é:
No entanto, dividir esses valores por 2 permite salvar dois bytes. Então, em vez disso, armazenamos:
Demo
Mostrar snippet de código
fonte
Utilitários Bash + GNU, 114
Provavelmente existem mais oportunidades de compactação aqui, mas aqui está um começo:
Explicação
Cada linha de cada dígito é um desses quatro padrões:
Ao rotular esses 0-3, cada dígito pode ser representado por 5 dígitos base-4. Por exemplo, 0 seria
32223
e a lista completa de dígitos é codificada na base-4 como32223000003031330303223003130331323300003232332303
. Este codificado em hexadecimal comoEAC00CDF33AC373DEF00EEFB3
.dc
converte hexadecimalEAC00CDF33AC373DEF00EEFB3
em base-4.fold
coloca 5 dígitos base-4 em cada linhased
:x
es) de cada linha do dígito fornecido, junto com uma nova linha no final de cada linhax
es para o dígito n.Experimente online .
fonte
s/1/x \n/g
pors/1/x\n/g
, pois esses espaços não afetam visualmente a saída.MATL ,
4543 bytesExperimente online!
Explicação
fonte
Retina,
166164163 bytesDois espaços na terceira linha da parte inferior
Experimente Online!
Uma versão aprimorada da solução da @ Okx
fonte
Pitão 82
8591100bytesProvavelmente, é possível praticar muito golfe, meu primeiro desafio.
fonte
Arquivo em lote, 8 + 184 bytes
Aqui está minha solução obrigatória em lote. Infelizmente, o método padrão de fazer isso é superior a 300 bytes em lote, por isso recorremos a táticas muito mais baratas.
No diretório atual, tenho 10 arquivos configurados, nomeados de 0 a 9. Em cada um desses, há a respectiva grade 5x3 de pixels. Por exemplo:
A contagem de bytes para eles é:
Ainda vença o Java.
fonte
Ruby, 94 bytes
Ungolfed in program program
fonte
PHP, 115 bytes
Experimente online!
Expandido
Codificação Experimente online!
fonte
Retina , 125 bytes
Experimente online! (Exclua o conjunto de testes no cabeçalho para testar dígitos de entrada individuais.) A última linha contém dois espaços.
fonte
PowerShell,
126120113109101Unicode é divertido. Os caracteres também são muito mais curtos que os números. O código acima contém U + 0000 duas vezes, portanto, não pode ser copiado diretamente (embora funcione bem em um arquivo). O seguinte código pode ser copiado:
Perdemos três bytes porque precisamos da assinatura UTF-8 no início. Caso contrário, a string não funcionará.
fonte
Retina , 190 bytes
Existem dois espaços na última linha,
mas o SE não deseja renderizá-la: /Corrigido!Experimente online!
fonte
a
três dígitos e uma nova linha. (Talvez usando lookaheads?)Java 8,
278214210204 bytesPorto da resposta Retina de @Neil . Toma a entrada como a
String
.Experimente aqui.
fonte
Python 2 ,
174125 bytesExperimente online!
fonte
PowerShell ,
159135128118 bytesResposta atual: nomeação de variável externa removida
Experimente online!
Vou ter que ver se consigo obter alguns truques das outras respostas: P
EDIT Ficando mais esperto ao chamar a mega string
EDIT2 Alternou para usar uma sequência de números para indexar
$a
e salvar 7 bytes. Embora eu tenha gostado das chamadas de nome de variável dinâmica anterior no código abaixo (135 bytes)fonte
Carvão ,
6138 bytesExperimente online! Link é a versão detalhada do código. Nota: Espaço à direita. Explicação:
Divida a sequência (compactada) em grupos de 5, pegue a que está no índice fornecido pela entrada e mapeie os caracteres no grupo (que são sempre 1, 4, 5 ou 7).
Converta o caractere da base 10 para a base 2 de 3 dígitos, usando o caractere de entrada e o espaço como dígitos. Os 5 resultados são impressos implicitamente em linhas separadas.
Uma porta genérica é um pouco chata, então aqui está uma resposta mais idiomática de 61 bytes:
Experimente online! Nenhuma versão detalhada, pois o deverbosifier não entende listas de direções ou mesmo multidirecionais dentro de polígonos comuns. Explicação:
Cada caminho é especificado usando uma lista de direções (
←↑→↓
). Quatro atalhos utilizáveis salvam bytes:L
representa↑→
,¬
representa↓←
,T
representa→↓←
enquanto+
representa→↓←↑
, embora pelo menos uma seta deva permanecer para que a lista seja reconhecida como uma lista de direção (por exemplo,TT
não pode ser usada para3
).fonte
Geléia ,
3532 bytesExperimente online! ou vê-los todos .
O mesmo que o método de dzaima.
fonte
Perl 5
-Mbigint -pa
, 101 bytesExperimente online!
fonte
Python 3 , 119 bytes
Experimente online!
Cada 'pixel' é representado como um número inteiro, onde cada potência de dois indica se o pixel é sólido. Isso tira vantagem do fato de que os três cantos do lado direito são sempre o dígito.
fonte
JavaScript (ES8), 87 bytes
fonte