Este é um desafio bem simples, mas (espero) divertido.
Tarefa
Se, no momento, é o mês 4
e o dia 20
, a hora (em um relógio de 12 horas) é 4
e o minuto é 20
, ou o minuto é 4
e o segundo é 20
, imprima esta arte ascii:
.
.:.
:|:
.:|:.
::|::
:. ::|:: .:
:|:. .::|::. .:|:
::|:. :::|::: .:|:;
`::|:. :::|::: .:|::'
::|::. :::|::: .::|:;
`::|::. :::|::: .::|::'
:::|::. :::|::: .::|::;
`:::|::. :::|::: .::|::;'
`::. `:::|::. :::|::: .::|::;' .:;'
`:::.. `;::|::. :::|::: .::|::: ::::;
`:::::. ':|::. :::|::: .::|:' ,::::;'
`:::::. ':|:::::|:::::|:' :::::;'
`:::::.:::::|::::|::::|::::.,:::;'
':::::::::|:::|:::|:::::::;:'
':::::::|::|::|:::::::''
`::::::::::;'
.:;'' ::: ``::.
:':':
;
Você pode ter espaços à direita.
Caso contrário, imprima o número de minutos e segundos restantes até a próxima ocasião no formato: %d minutes and %d seconds left until your next hit.
com o tempo minimizado.
Isso é código-golfe , então o código mais curto em bytes vence!
PS Se este desafio for inadequado demais para este site, diga-me e eu o mudarei.
code-golf
ascii-art
kolmogorov-complexity
date
Maltysen
fonte
fonte
Respostas:
Python 2, 371 bytes
Essa fonte contém bytes não imprimíveis e, portanto, é apresentada como um hexdump que pode ser decodificado
xxd -r
.Parte legível:
fonte
JavaScript (ES6), 537 bytes
Usa a codificação CP-1252.
Nota: Todos os ilegíveis nesta postagem são escapados
\u00xx
para que o sistema Stack Exchange não os remova automaticamente. Eles devem ser considerados como tendo um tamanho de um byte.Explicação
Usa um esquema de codificação de execução, junto com o empacotamento de cada caractere em 4 bits. A lógica principal do código é 174 bytes e a string da folha (incluindo descompressão) é 364 bytes. Mais detalhes sobre o método de compactação são encontrados abaixo.
Algoritmos de compressão
Sem compactação, 911 bytes
Esta é a sequência de folhas sem compactação.
Codificação de comprimento de execução, 542 bytes
Como há muitos caracteres repetidos consecutivos, a codificação de duração da execução melhora significativamente a contagem de bytes.
Cada caractere repetido 3 ou mais vezes é substituído pelo caractere seguido por um número decimal de
amount - 3
. A cadeia codificada é gerada com este código:Embalagem de 4 bits + RLE, 364 bytes
Existem 9 caracteres distintos na string original, o que significa que 4 é o número mínimo de bits para representar cada um. Convenientemente, isso permite que exatamente duas representações de caracteres se encaixem em um único byte, permitindo que um algoritmo de descompressão simples (e favorável ao golfe) seja usado. Além disso, existem 7 caracteres restantes, o que permite que a codificação base 7 seja usada antes da compactação. Colocar cada índice de 4 bits nas mordidelas superior e inferior de cada caractere compactado significa que 2 caracteres são armazenados por byte, porque a codificação CP-1252 codifica todos os caracteres no ponto de código 256 como um byte único.
O código a seguir é usado para fazer a codificação e compactação no comprimento da execução:
Huffman Coding, (Possível aprimoramento futuro)
Certos caracteres ocorrem muito mais que outros, portanto, uma codificação de Huffman (números inteiros de comprimento variável representando cada caractere) poderia salvar alguns bytes adicionais. No entanto, isso introduzirá muito mais complexidade no algoritmo de descompressão, portanto, além de ser muito mais trabalhoso, também pode custar mais bytes para descompactá-lo do que salvar na string codificada.
fonte
Javascript ES6, 905 bytes
Ufa .. O relógio de 12 horas matou minha solução curta ( ahum ).
905 bytes para imprimir 898 caracteres da arte ascii yay
Código ungolfed
Nota: O código não protegido não será executado
Tente!
No seguinte snippet de código, você pode definir a data para testar a arte ascii
fonte
15:16:20
será uma correspondência no seu regex e exibirá acidentalmente a string mágica?()
são necessários para odate
construtor:c=new d(), ...
pode se tornar apenasc=new d, ...