Ce que je veux:
Tout simplement, je veux un affichage basé sur du texte, qui demande une entrée n
, puis affiche cette valeur sur l'affichage! Mais il y a un hic. Chacun des «vrais» «pixels» (ceux remplis) doit être représenté par ce nombre n
.
Exemple :
On vous donne une entrée n
. Vous pouvez supposer qu'il n
s'agira d'un seul chiffre
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
Défi:
Faites-le ci-dessus en aussi peu d'octets que possible.
Je n'accepterai que des réponses qui répondent à toutes les exigences.
L'espace blanc environnant est facultatif, tant que le chiffre s'affiche correctement.
En outre, <75 octets est un vote de ma part, le plus bas accepte, mais je pourrais toujours changer la réponse acceptée, alors ne vous découragez pas de répondre.
code-golf
ascii-art
kolmogorov-complexity
VortexYT
la source
la source
Réponses:
SOGL V0.12 , 30 octets
Essayez-le ici! La chaîne compressée
■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘
estqui est (commençant par 1, se terminant par 0) les nombres, ligne par ligne, numéro à numéro. Le reste
la source
-
), et le reste est facile. Je suis curieux, quel testeur en ligne avez-vous utilisé? Je n'en ai ni fait ni vu.JavaScript (ES6), 88 octets
Les nombres codent quels carrés contiennent des espaces pour un chiffre donné, par exemple le coin inférieur gauche a une valeur de 146 car les 1, 4 et 7 ne l'utilisent pas et 146 = 2¹ + 2⁴ + 2⁷.
la source
05AB1E ,
403938 octetsEssayez-le en ligne!
Explication
la source
Japt , 43 octets
Contient certains non imprimables. Essayez-le en ligne!
Correspondances: 13 octets de données compressées, 9 octets pour les décompresser et 21 octets pour former la sortie.
Explication
Code non golfé:
Il y a exactement 4 possibilités de lignes différentes: (
#
représente un chiffre)Ainsi, chaque numéro peut être stocké sous la forme d'un ensemble de cinq chiffres de base 4. Étant donné que chaque numéro peut ensuite être stocké sur 10 bits, le total est de 100 bits, ce qui correspond à 13 octets. Je vais sauter le processus de compression et expliquer à la place la décompression.
Après la décompression, la chaîne compressée de 13 octets ressemble à ceci:
Notez que cela échouerait si l'une des exécutions à 4 chiffres commençait par
0
, car les zéros de tête seraient laissés de côté lors de l's4
exécution. Nous pouvons résoudre ce problème en ayant0
represent#
, qui n'apparaît que trois fois, et aucun de ceux-ci ne tombe au début d'une exécution à 4 chiffres.D'accord, donc pour que notre chaîne de 50 chiffres se comprime bien en morceaux de 4, nous avons dû ajouter deux chiffres supplémentaires. Les ajouter au début de la chaîne signifie que nous pouvons les couper avec un octet
¤
.De manière embarrassante, Japt n'a pas de fonction intégrée pour diviser une chaîne en tranches de longueur X. Cependant, il a une fonction intégrée pour obtenir chaque Xème caractère, afin que nous puissions stocker toutes les données en codant d'abord toutes les lignes supérieures, puis toutes les deuxièmes rangées, etc.
Nous avons donc maintenant la chaîne à 5 chiffres codant le chiffre que nous voulons créer, par exemple
32223
pour0
.Pour expliquer le nombre magique, reportez-vous aux quatre lignes distinctes. Si vous remplacez
par
#
par1
et0
, vous obtenezTransposer cela et ensuite se joindre à une seule chaîne nous donne
101100010111
. Convertissez en décimal et, voilà, vous avez 2839. Inverser le processus mappe les chiffres0123
dans les quatre lignes binaires indiquées ci-dessus.Presque fini! Il ne reste plus qu'à ajouter les espaces et les chiffres:
Et hop, la sortie implicite s'occupe du reste. Je suis désolé que cette explication soit si longue, mais je ne vois aucun moyen réel de la jouer au golf sans la rendre moins compréhensible (si elle est compréhensible ...)
la source
JavaScript (ES6),
115111 octetsPrend l'entrée sous forme de chaîne.
Comment ça fonctionne
Encodage de motif
Les quatre modèles distincts
"XXX"
,"X.."
,"..X"
et"X.X"
peuvent être compressés comme"XXX...X.X"
et extraits de cette façon:En remplaçant le chiffre d'entrée
n
pour"X"
et l' utilisation des espaces réels, ce qui donne l'expression:Encodage numérique
En utilisant les identificateurs de modèle définis ci-dessus, chaque chiffre peut être représenté par une quantité 5 * 2 = 10 bits.
Par exemple:
La liste complète est:
Cependant, la division de ces valeurs par 2 permet d'économiser deux octets. Au lieu de cela, nous stockons:
Démo
Afficher l'extrait de code
la source
Utilitaires Bash + GNU, 114
Il existe probablement d'autres possibilités de compression ici, mais voici un début:
Explication
Chaque ligne de chaque chiffre est l'un de ces quatre modèles:
En étiquetant ces 0-3, chaque chiffre peut être représenté par 5 chiffres de base 4. Par exemple, 0 serait
32223
, et la liste complète des chiffres est codée en base 4 comme32223000003031330303223003130331323300003232332303
. Ce codé en hexadécimal commeEAC00CDF33AC373DEF00EEFB3
.dc
convertit hexEAC00CDF33AC373DEF00EEFB3
en base-4.fold
met 5 chiffres de base 4 sur chaque lignesed
:x
es) pour chaque ligne du chiffre donné, avec une nouvelle ligne pour la fin de chaque lignex
es au chiffre n.Essayez-le en ligne .
la source
s/1/x \n/g
pars/1/x\n/g
, car ces espaces n'affecteront pas visuellement la sortie.MATL ,
4543 octetsEssayez-le en ligne!
Explication
la source
Rétine,
166164163 octetsDeux espaces sur la troisième ligne à partir du bas
Essayez-le en ligne!
Une version améliorée de la solution @ Okx
la source
Pyth 82
8591100octetsBeaucoup de golf probablement possible, mon premier défi.
la source
Fichier de commandes, 8 + 184 octets
Voici ma solution batch obligatoire. Malheureusement, la méthode standard pour y parvenir est de plus de 300 octets par lot, nous avons donc recours à des tactiques beaucoup moins chères.
Dans le répertoire actuel, j'ai 10 fichiers configurés, nommés de 0 à 9. Dans chacun d'eux se trouve la grille de pixels 5x3 respective. Par exemple:
Les octets comptent pour ceux-ci:
Toujours battre Java.
la source
Rubis, 94 octets
Non testé dans le programme de test
la source
PHP, 115 octets
Essayez-le en ligne!
Étendu
Encodage Essayez-le en ligne!
la source
Rétine , 125 octets
Essayez-le en ligne! (Supprimez la suite de tests dans l'en-tête pour tester les chiffres d'entrée individuels.) La dernière ligne contient deux espaces.
la source
PowerShell,
126120113109101Unicode est amusant. Les caractères sont également beaucoup plus courts que les chiffres. Le code ci-dessus contient deux fois U + 0000, il ne peut donc pas être copié directement (fonctionne bien dans un fichier, cependant). Le code suivant peut être copié:
Nous perdons trois octets car nous avons besoin de la signature UTF-8 au début. Sinon, la chaîne ne fonctionnera pas.
la source
Rétine , 190 octets
Il y a deux espaces sur la dernière ligne
mais SE ne veut pas le rendre: /Fixed!Essayez-le en ligne!
la source
a
avec trois chiffres et une nouvelle ligne. (Peut-être à l'aide de lookaheads?)Java 8,
278214210 210204 octetsRéponse de Port of @Neil Retina . Prend l'entrée comme un
String
.Essayez-le ici.
la source
Python 2 ,
174125 octetsEssayez-le en ligne!
la source
PowerShell ,
159135128118 octetsRéponse actuelle: suppression de la dénomination des variables superflues
Essayez-le en ligne!
Je vais devoir voir si je peux obtenir quelques astuces des autres réponses: P
EDIT Pour devenir plus intelligent en appelant la méga chaîne
EDIT2 Passé à l'utilisation d'une chaîne de nombres à indexer
$a
pour économiser 7 octets. Bien que j'aie aimé mes appels de nom de variable dynamique précédents dans le code ci-dessous (135 octets)la source
Fusain ,
6138 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Remarque: Espace de fin. Explication:
Divisez la chaîne (compressée) en groupes de 5, prenez celle de l'index donné par l'entrée et mappez sur les caractères du groupe (qui sont toujours 1, 4, 5 ou 7).
Convertissez le caractère de la base 10 en base 2 à 3 chiffres en utilisant le caractère saisi et l'espace comme chiffres. Les 5 résultats sont ensuite imprimés implicitement sur des lignes distinctes.
Un port générique est un peu ennuyeux, alors voici une réponse plus idiomatique de 61 octets:
Essayez-le en ligne! Pas de version verbeuse car le déverbosificateur ne comprend pas les listes de directions ou même multidirectionnelles à l'intérieur des polygones ordinaires. Explication:
Chaque chemin est spécifié à l'aide d'une liste de directions (
←↑→↓
). Quatre raccourcis utilisables permettent d'économiser des octets:L
représente↑→
,¬
représente↓←
,T
représente→↓←
tandis que+
représente→↓←↑
, bien qu'au moins une flèche doit rester pour que la liste soit reconnue comme une liste de directions (donc, par exemple,TT
ne peut pas être utilisée pour3
).la source
Gelée ,
3532 octetsEssayez-le en ligne! ou voir tous .
Identique à la méthode de dzaima.
la source
Perl 5
-Mbigint -pa
, 101 octetsEssayez-le en ligne!
la source
Python 3 , 119 octets
Essayez-le en ligne!
Chaque «pixel» est représenté comme un entier où chaque puissance de deux indique si le pixel est solide. Cela profite du fait que les trois coins à droite sont toujours le chiffre.
la source
JavaScript (ES8), 87 octets
la source