Tâche
La tâche consiste à afficher l'un des 128 états possibles d'un affichage à 7 segments .
Votre programme doit accepter une chaîne de 7 caractères ("bits") qui sont soit 0
ou 1
. Le premier bit d'entrée correspond au segment A de l'illustration suivante, le second à B, etc. (ignorer dp
):
La façon dont vous représentez l'affichage dépend de vous - un seul symbole Unicode ou ASCII, de l'art ASCII , grafiquement, ou tout ce que vous pouvez trouver. Cependant, chaque entrée doit avoir sa propre sortie distincte. Si vous trouvez quelque chose de fantaisiste, je suis sûr que vous pouvez récolter des votes positifs en montrant quelques exemples.
Les 128 états possibles de l'affichage sont:
Règles
- Codegolf
- Comme je l'ai dit, tout type de sortie est autorisé, mais ce serait bien si vous le spécifiiez.
- L'entrée peut être un argument stdin ou de ligne de commande.
Exemples
Contribution
1101101
Sortie
En ASCII / Unicode:2
Différents types d'art ASCII (je ne suis pas trop bon dans ce domaine)
_ ╺┓ ╒╗ ---
_| ┏┛ ╔╝ |
|_ ┗╸ ╚╛ ---
|
---
Réponses:
J (51)
sortie:
la source
1 2 1#"1' #'{~5 3$,0,.502 A.".&>1!:1]1
.C, 106
La taille est de 74 caractères si elle est autorisée à renommer le programme "W00WG5WW1GW66WG4WW2GW33WG"
fonctionnement:
Remarques:
'W' et 'G' (0x47 et 0x57) sont choisis de telle sorte que la valeur & 7 = 7, c'est-à-dire qu'ils indexent en toute sécurité le caractère nul qui termine la chaîne d'entrée.
la source
Brainfuck - 224
Imprime à l'aide de points d'exclamation:
Pas le plus lisible, mais pas trop horrible non plus.
Surpris de voir à quel point cela est proche de ne pas être la dernière place.
la source
Postscript
121107nécessite
n
d'être défini comme la chaîne à traiter, alors appelez commeobtenir
l'ensemble complet est
la source
Mathematica:
135129118, affichage d'imageespaces ajoutés "pour plus de clarté"
modifier
Pour les utilisateurs difficiles du site: sans utiliser de masque externe:
la source
&
.&
.APL,
5855Exemple d'entrée:
Sortie:
⍞='1'
prend l'entrée comme un tableau de caractères et le convertit en un tableau numérique.1 2 2 1 2 2 1×⍞='1'
convertit ce tableau en:0
for blank,1
for_
,2
for|
(x←1 2 2 1 2 2 1×⍞='1')[6 7 2 5 4 3]
affecter ce tableau à une variablex
et réorganiser pour représenter les segments F, G, B, E, D, C0,x[1],0,(x←1 2 2 1 2 2 1×⍞='1')[6 7 2 5 4 3]
concatène un blanc, un segment A et un autre blanc à l'avant3 3⍴0,x[1],0,(x←1 2 2 1 2 2 1×⍞='1')[6 7 2 5 4 3]
remodeler en une matrice 3x31+3 3⍴0,x[1],0,(x←1 2 2 1 2 2 1×⍞='1')[6 7 2 5 4 3]
convertit en indexation 1Utilise enfin la chaîne
' _|'
pour convertir les indices en caractèresmodifier
Réduit 3 caractères en concaténant un
0
à l'avant du tableau et en utilisant des indices en double, empêchant une affectation de variablela source
{
est 1 caractère plus courte que l'indexation des crochets[]
.PHP 66 octets
Une légère amélioration en utilisant une
md5
formule magique, mais nécessite 3 octets binaires supplémentaires:¡
,æ
, etÚ
sont des caractères 161, 230, et 218 respectivement. Il doit fonctionner tel quel s'il est copié directement et enregistré au format ANSI.PHP 73 (70) octets
Si vous me permettez trois caractères binaires, cela peut être réduit à 70 octets :
où
ƒ
,ß
etõ
sont respectivement les caractères 131, 223 et 245.Reçoit l'entrée comme argument de ligne de commande. Exemple d'utilisation:
la source
php.ini
(par défaut, ils le sont déjà), ou pour les tests, vous pouvez ajouter le code suivant au script:<? error_reporting(E_ALL & ~E_NOTICE); ?>
JavaScript + jQuery + HTML + CSS (
210201)Cette solution utilise des sprites CSS et l'image fournie à titre d'exemple :
HTML (3)
CSS (
8271)Merci à xem pour le " background: url ":
JavaScript (125 après la suppression des nouvelles lignes ajoutées ici pour plus de lisibilité)
Test en ligne: http://jsfiddle.net/zhqJq/3/
la source
<p>
tag et éviterdisplay:block
sur CSS pour économiser de l'espaceR (65 caractères):
S'appuie sur quelques approximations lâches pour certains nombres transcendantaux ...
la source
Python 2-65
Exemple:
la source
PostScript:
53 binaires, 87 ASCII52 binaires, 86 ASCIIHexdump du programme utilisant des jetons binaires:
Téléchargez ce fichier pour l'essayer.
Utilisation de jetons ASCII:
La première
forall
boucle place toutes les coordonnées requises sur la pile. Les coordonnées sont stockées dans une chaîne pour minimiser l'espace requis. Les coordonnées sont dans l'ordre inverse, c'est-à-dire que les 4 derniers caractères sont pour le segment A. On trace une ligne de(0,8)
à(4,8)
pour ce segment (en fait, nous devons ajouter 48 à toutes les coordonnées, carforall
met tous les codes ASCII sur la pile).Le second
forall
parcourt tous les0
s et1
s de la chaîne d'entrée et les transforme en valeur grise.0
s sont dessinés en blanc (valeur de gris 1) et1
s sont dessinés en noir (valeur de gris 0). Ensuite, nous utilisons les coordonnées que le premierforall
boucle a laissées sur la pile pour tracer les lignes.Appelez le programme en utilisant Ghostscript, tout comme Geoff Reedy:
Cela affiche:
la source
neg 49 add
(ce qui est génial btw) par1 and
.not 1 and
, non? Enregistre toujours un octet à la fois en ASCII et en binaire.bitshift
c'est un si long mot.APL
101 86 7369L'entrée se fait depuis l'écran via ⍞
Ce qui produit une matrice de 9x5 caractères composée de blancs et de ⎕ comme suit:
Le nombre à sept chiffres est converti en un vecteur de partition pour sélectionner les coordonnées ⎕.
la source
Mathematica
1121031009688, en utilisant les graphiquesla source
[123]
ni ["123"], niIntegerDigits[123]
travailler pour moi. Je reçois seulementz
, sans mise en évidence.Python (107)
Certainement plus golfable.
Sortie:
Explication:
la source
Python 2.7 (93 caractères):
Explication:
Avec l'entrée stdin, utilisez un opérateur ternaire de fortune pour donner
*
vrai et un espace pour faux. Prenez ces valeurs et branchez-les dans une déclaration de format au format de l'affichage à 7 chiffres. Ce serait au plus 83 caractères si l'affichage fonctionnait comme ceci:mais la commande le rend plus long. Quelqu'un a un moyen de contourner cela?
Exemple:
la source
print' {0}\n{5} {1}\n {6}\n{4} {2}\n {3}'.format(*[' *'[i=='1']for i in raw_input()])
) Pas besoin non plus de crochets et d'espace pour l'instruction print.>'0'
au lieu de=='1'
etinput()
(avec des crochets autour, mais cela n'apparaîtra pas à cause du formatage ici) au lieu deraw_input()
.x = `input()`
Je pensais que nous avions besoin d'une réponse nette ...
Clojure, 159 caractères
Ce qui précède s'exécutera dans le REPL et fournira la bonne réponse. Par exemple:
Lancer des chiffres avec de petites modifications:
rendements:
Pas facile à lire, mais ils sont là!
la source
Javascript 123
Je peux réduire le nombre de caractères (101) si nous n'utilisons qu'un seul caractère pour l'état "on", mais il est moins lisible:
la source
Post-scriptum 136
Pas gagnant, mais une approche différente.
Attend que la chaîne d'entrée soit sur la pile:
Celui-ci est encore pire. 294 pour créer un bitmap "binaire". J'ai mis un certain temps à me souvenir que chaque ligne est complétée par un octet pair. Ainsi, un bitmap 3x5 fait cinq octets, les bits de 3 ms étant significatifs.
La sortie est tout aussi moche que l'autre. :(
D'accord, voici celui qui a l'air bien. 190
Edit: C'était à l'envers et à l'envers. Fixé maintenant.
la source
Mathematica 264
Pour obtenir une sortie correcte, il fallait de nombreux octets, donc pas de cigare cette fois. Mais voici le code détaillé (264 caractères) de toute façon.
L'ensemble complet de caractères:
Les chiffres:
la source
PHP - 155 caractères
ce serait 150 caractères si nous utilisons la déclaration de tableau de type php 5.4, mais je ne l'ai pas installé sur mon ordinateur portable, je ne pouvais donc pas le tester.
Échantillon de sorties.
Explication:
J'ai d'abord divisé l'affichage à 7 segments en cinq lignes et 3 colonnes. Avec la 1ère, la 3ème et la 5ème ligne, havimg '-' dans la colonne du milieu, et espace sinon.
Les 2e et 4e rangées ont un tuyau '|' dans la première et la dernière colonne. Maintenant, la présence de ces caractères doit être guidée par les valeurs d'entrée.
J'ai créé une table de recherche, qui est essentiellement deux tables de recherche. Premier pour le calcul des valeurs pour les 1ère, 3ème et 5ème rangées. Et un autre au décalage 2 (3e élément) pour le calcul des lignes 2e et 4e.
la source
Java - 204 caractères
Exemple de sortie:
Formaté correctement:
J'aimerais vraiment pouvoir éviter cela pour la boucle, mais j'ai essayé quelques autres choses et elles étaient toutes plus longues. Il y a probablement une meilleure façon de le faire, mais c'est ma première tentative de code golf. (Et Java est comme le pire langage pour cela, c'est pourquoi j'ai pensé que ce serait intéressant.) Même Brainfuck m'a fait battre, mais au moins ma sortie est plus belle.
EDIT: peut se débarrasser de "public" en classe, me sauve 7 caractères!
Et merci, daniero, de m'avoir montré printf! (18 caractères enregistrés)
Réécriture du format de sortie, modification des littéraux de caractères en décimal, 12 caractères enregistrés.
la source
printf
méthode de quelques versions en arrière, qui est essentiellementprintln
etformat
en une seule (comme la fonction C); Cela vous fera économiser quelques personnages,for
boucle et la partie mise à jour en un seul, en sauvegardant un caractère:for(int i=7;i>0;c[--i]=a[0].charAt(i)==49?(i%3==0?95:'|'):32);
VBA - 263
C'est moche mais ça marche, je pense. J'ai du mal à visualiser l'ordre des bits approprié, donc je déduis des réponses des autres. Même si cette pièce est incorrecte, la longueur du code doit rester la même.
la source
VBScript - 178 caractères
la source
CJam - 29
CJam est un nouveau langage que je développe, similaire à GolfScript - http://sf.net/p/cjam . Voici l'explication:
l
lit une ligne à partir de l'entrée0
est le numéro 0N
est une variable préinitialisée à la chaîne de nouvelle ligne]
rassemble les éléments de la pile en un tableaus
convertit une valeur (le tableau) en chaîne, ajoutant ainsi un zéro et une nouvelle ligne à l'entrée donnée7078571876784728737
est un nombre (le même nombre que j'ai utilisé en python, mais il était en hexadécimal là-bas)A
est une variable préinitialisée à 10b
effectue une conversion de base, générant le tableau [7 0 7 8 ... 3 7]\
échange les deux dernières valeurs de la pilef=
applique l'=
opérateur (ici, l'accès au tableau indexé) sur la chaîne d'entrée (plus zéro et la nouvelle ligne) et chaque numéro 7, 0, 7, ...L'index 7 correspond au zéro ajouté et 8 correspond à la nouvelle ligne ajoutée.
Ma solution python fait exactement la même chose (sauf que la séparation des chiffres se fait via la conversion de chaîne)
la source
VBA, 188 caractères
Notez que celui-ci doit taper 188 caractères si seulement y compris les espaces obligatoires - l'EDI le développe lorsque vous le copiez dans l'éditeur VBA.
Malheureusement, VBScript n'a pas de tableau d'octets fortement typé, ou celui-ci pourrait être beaucoup plus court en utilisant cette méthode.
la source
Javascript (ECMAScript 2016) - 108 octets
Cela peut probablement être joué plus loin, mais je ne pense à rien.
la source
JavaScript, 148 octets
Essayez-le en ligne! (Le pied de page est Node.js à lire
.input.tio
)Accepte l'entrée d'ABCDEFG dans les drapeaux binaires et retourne:
la source
SmileBASIC, 136 octets
La sortie est graphique.
la source
05AB1E , 4 octets
Essayez-le en ligne ou vérifiez toutes les entrées possibles .
Voir le lien Vérifier toutes les entrées possibles ci-dessus pour voir le mappage utilisé pour chaque entrée.
Explication:
Cela abuse des règles où il stipule:
Alternative plus dans l'esprit du challenge en utilisant le format de sortie:
38 octets :
Peut certainement être joué au golf ..
Essayez-le en ligne ou vérifiez toutes les entrées possibles .
Explication:
Voir cette astuce de mes 05AB1E ( section Comment compresser les grands entiers? ) Pour comprendre pourquoi
•L7ו
est1367524
.la source
PHP 5.6, 65 octets ASCII ordinaire
ou, sans saut de ligne de fin, mais avec un peu de plaisir au niveau du bit:
Exécuter en tant que tuyau avec
-nR
ou essayez-les en ligne .panne 1
ventilation 2
la source