C'est un défi assez simple, mais (j'espère) amusant.
Tâche
Si en ce moment, le mois est 4
et le jour est 20
, l'heure (sur une horloge de 12 heures) est 4
et la minute est 20
, ou la minute est 4
et la seconde est 20
, imprimez cet art ascii:
.
.:.
:|:
.:|:.
::|::
:. ::|:: .:
:|:. .::|::. .:|:
::|:. :::|::: .:|:;
`::|:. :::|::: .:|::'
::|::. :::|::: .::|:;
`::|::. :::|::: .::|::'
:::|::. :::|::: .::|::;
`:::|::. :::|::: .::|::;'
`::. `:::|::. :::|::: .::|::;' .:;'
`:::.. `;::|::. :::|::: .::|::: ::::;
`:::::. ':|::. :::|::: .::|:' ,::::;'
`:::::. ':|:::::|:::::|:' :::::;'
`:::::.:::::|::::|::::|::::.,:::;'
':::::::::|:::|:::|:::::::;:'
':::::::|::|::|:::::::''
`::::::::::;'
.:;'' ::: ``::.
:':':
;
Vous pouvez avoir des espaces de fin.
Sinon, imprimez le nombre de minutes et de secondes restantes jusqu'à la prochaine occasion au format: %d minutes and %d seconds left until your next hit.
le temps étant minimisé.
C'est le code-golf , donc le code le plus court en octets gagne!
PS Si ce défi est trop inapproprié pour ce site, dites-le moi et je le changerai.
code-golf
ascii-art
kolmogorov-complexity
date
Maltysen
la source
la source
Réponses:
Python 2, 371 octets
Cette source contient des octets non imprimables, elle est donc présentée comme un hexdump qui peut être décodé avec
xxd -r
.Partie lisible:
la source
JavaScript (ES6), 537 octets
Utilise l'encodage CP-1252.
Remarque: Tous les éléments illisibles de ce message sont échappés avec
\u00xx
pour que le système Stack Exchange ne les supprime pas automatiquement. Ils doivent être considérés comme ayant une taille d'un octet.Explication
Utilise un schéma de codage de longueur avec empaquetage de chaque caractère sur 4 bits. La logique principale du code est de 174 octets et la chaîne feuille (y compris la décompression) est de 364 octets. De plus amples détails sur la méthode de compression se trouvent ci-dessous.
Algorithmes de compression
Aucune compression, 911 octets
Il s'agit de la chaîne de feuilles sans compression du tout.
Codage de longueur, 542 octets
Étant donné qu'il existe de nombreux caractères répétés consécutifs, le codage de longueur d'exécution améliore considérablement le nombre d'octets.
Chaque caractère répété 3 fois ou plus est remplacé par le caractère suivi d'un nombre décimal de
amount - 3
. La chaîne encodée est générée avec ce code:Emballage 4 bits + RLE, 364 octets
Il y a 9 caractères distincts dans la chaîne d'origine, ce qui signifie que 4 est le nombre minimum de bits pour représenter chacun. De manière pratique, cela permet à exactement deux représentations de caractères de tenir dans un seul octet, ce qui permet d'utiliser un algorithme de décompression simple (et adapté au golf). En plus de cela, il reste 7 caractères, ce qui permet d'utiliser l'encodage de la longueur de base 7 avant de compresser. Mettre chaque index de 4 bits dans les grignotages supérieur et inférieur de chaque caractère compressé signifie que 2 caractères sont stockés par octet, car le codage CP-1252 code chaque caractère sous le point de code 256 comme un octet unique.
Le code suivant est utilisé pour effectuer l'encodage et l'emballage de la longueur d'exécution:
Codage Huffman, (Amélioration future possible)
Certains caractères se produisent beaucoup plus que d'autres, donc un codage Huffman (entiers de longueur variable représentant chaque caractère) pourrait économiser quelques octets supplémentaires. Cependant, cela introduira beaucoup plus de complexité dans l'algorithme de décompression, donc en plus d'être beaucoup plus de travail, il peut également coûter plus d'octets pour le décompresser qu'il n'en enregistre dans la chaîne codée.
la source
Javascript ES6, 905 octets
Ouf .. L'horloge de 12 heures a tué ma solution autrement courte ( ahum ).
905 octets pour imprimer 898 caractères d'ascii art yay
Code non golfé
Remarque: Le code non golfé ne s'exécutera pas
Essayez!
Dans l'extrait de code suivant, vous pouvez définir la date pour tester l'art ascii
la source
15:16:20
sera un match sur votre regex et affichera accidentellement la chaîne magique?()
soit nécessaire pour ledate
constructeur:c=new d(), ...
peut devenir justec=new d, ...