Étant donné tout entier non signé de 16 bits, convertissez sa forme décimale (c.-à-d. Base-10) en une grille ASCII 4x4 de ses bits, avec le bit le plus significatif (MSB) en haut à gauche, le bit le moins significatif (LSB) à en bas à droite, lire en travers puis en bas (comme le texte anglais).
Exemples
Entrée: 4242
+---+---+---+---+
| | | | # |
+---+---+---+---+
| | | | |
+---+---+---+---+
| # | | | # |
+---+---+---+---+
| | | # | |
+---+---+---+---+
Entrée: 33825
+---+---+---+---+
| # | | | |
+---+---+---+---+
| | # | | |
+---+---+---+---+
| | | # | |
+---+---+---+---+
| | | | # |
+---+---+---+---+
Exigences particulières
L'entrée doit être décimale (base-10), mais vous pouvez convertir en binaire comme vous le souhaitez (y compris en utilisant les langages intégrés, si disponibles).
Le format du tableau de sortie doit correspondre exactement . Cela signifie que vous devez utiliser les caractères ASCII spécifique (
-
,+
et|
) pour les lignes de la grille de table comme le montre, l' intérieur de chaque cellule est de 3 caractères et vrais bits sont représentés par#
tout faux est représenté par un espace ().
Les espaces blancs avant ou arrière ne sont pas autorisés. Une nouvelle ligne finale est requise .
L'ordre des bits doit correspondre aux exemples décrits.
Indemnités
- L' entrée doit être un numéro de base 10 sur la ligne de commande, l' entrée standard, ou l' entrée d'utilisateur, mais ne doit pas être codé en dur dans votre code source.
Que le code le plus court le plus clair gagne! :-)
la source
Réponses:
J, 26 octets
Un verbe anonyme. Heureusement, J est très bon pour dessiner des boîtes. Essayons-le:
Comme certains commentateurs l'ont mentionné, la façon dont J dessine les boîtes dépend du système: sur certaines plates-formes, ce code fonctionnera avec les paramètres par défaut, mais sur d'autres, les boîtes seront dessinées en utilisant des caractères de dessin au trait Unicode. (Les commandes
9!:6
et9!:7
vous permettent d'interroger et de définir les caractères pour dessiner des valeurs encadrées avec, respectivement.)la source
JavaScript (ES6), 102
... ou 96 en utilisant
return
au lieu deconsole.log
.Testez l'exécution de l'extrait ci-dessous dans un navigateur compatible EcmaScript 6.
la source
Befunge -93, 196
218octetsPour exécuter le programme ...
Show
.Input
case.Run
. (Ou passezSlow
à quelque chose comme 5 millisecondes, puis cliquez surShow
.)Sortie pour 4242:
Sortie pour 33825:
Explication
Oh mon Dieu, dans quoi je me suis embarqué? Eh bien, c'est parti! (Le code non pertinent est remplacé par l'
.
art.)Partie 1: Obtenez l'entrée (stockez en 0,0) et calculez 32768 (stockez en 1,0).
Partie 2: Imprimez "+ --- + --- + --- + ---".
Partie 3: Imprimez "+" et une nouvelle ligne et vérifiez si (1,0) est 0 (c'est-à-dire que nous avons terminé). Si oui, terminez. Sinon, continuez.
Partie 4: Obtenez des chiffres binaires d'entrée, en mettant à jour (0,0) et (1,0) au fur et à mesure. Imprimez les bonnes choses. Je profite du comportement de bouclage de Befunge.
Partie 5: Imprimez une nouvelle ligne et revenez à la partie qui affiche "+ --- + --- + --- + --- +". L'astuce de bouclage est utilisée.
Ta-da!
la source
Julia,
156143 octetsNon golfé:
Essayez-le en ligne
la source
Python 2,
157153151146 octetsMerci à Morgan Thrapp pour avoir économisé 4 octets et à Jonathan Frech pour en avoir économisé 5.
Usage
la source
'+---'*4
dans une variable et deux autres si vous le faitesj=''.join
int(input())
avecinput()
et sauver cinq octets.Ruby,
118114merci pour @ w0lf d'avoir sauvé quelques caractères.
la source
?
notation (ex:?|
au lieu de'|'
). Cela fonctionne pour tout sauf l'espace.?\s
fonctionne pour l'espace, mais ce n'est pas vraiment utile ici.GNU sed + dc, 116
Le score inclut +1 pour les
-r
drapeauxsed
:Sortie de test:
Alternativement:
Pure sed, 146
Vous pourriez penser que c'est de la triche d'utiliser
sed
l'extension GNU pour évaluer unedc
commande. Dans ce cas, nous pouvons le faire un peu différemment, selon cette méta-réponse . Bien sûr, la question indique clairement que l'entrée doit être en base 10, mais ici j'essaie de prétendre que nous pouvons remplacer cela pour lessed
réponses et utiliser unaire (base 1) à la place.Sortie de test
Utilisation
printf
pour générer la chaîne unaire nécessaire:la source
C ++ 11,
193191190 190176172 octetsMa première solution sur codegolf jamais, alors ne me blâmez pas.
Non golfé
La version précédente
la source
using namespace std
dans le code de production. Et ce n'est pas utile ici aussi.0x
.using namespace std
enregistre quelques octets, car je n'ai pas à préfixercout
etcin
avecstd::
. Même en utilisant justeusing std::cout;
ne va pas aider.C++
ne prend pas en charge auto int.Pyth, 37 octets
Essayez-le en ligne: Démonstration ou suite de tests
Explication:
la source
CJam,
4341 octetsCertainement golfable, mais c'est un début, je suppose. Génère la ligne supérieure, puis pour chaque 4 bits, il crée une ligne paire et copie la ligne impaire précédente.
Essayez-le en ligne .
la source
Python 2,
122121120 octets-1 octet grâce à l'
4**8+
astuce soignée de @ xnor . L'impression principale se fait en bouclant 9 fois, en sélectionnant la ligne appropriée pour impair / pair.la source
bin(4**8+input())[3:]
économise un octetformat
Python 2, 94
L'idée est de prendre le motif
sauf avec
%s
à la place des blancs et effectuez la substitution de tuple. Le tuple ressembleIl est créé en retirant les chiffres de l'entrée en binaire et en ajoutant le symbole correspondant à l'avant du tuple. Une expression avec un tuple explicite donne une longueur égale.
Merci à Sp3000 pour 2 octets.
la source
PowerShell,
203188182 octetsModifier - enregistré 15 octets en changeant l'ordre
|
est dessiné, afin que nous puissions vider le.TrimEnd("|")
sur la sortie et à la place convertir la boucle for en un bloc de sous-code qui produit un tableauEdit2 - sauvé encore 6 octets en éliminant le besoin d'enregistrer dans le
$o
variable et juste de sortir avec-join''
directement.Ooooooooof.
Il est difficile de dessiner dans PowerShell . Travailler avec des chiffres binaires dans PowerShell est difficile de .
Utilise des éléments intégrés à
[convert]
l'entier d'entrée dans une représentation sous forme de chaîne en binaire, puis rediffusés en un[int64]
afin que nous puissions rappeler.ToString()
afin d'ajouter / ajouter le nombre approprié de zéros. (Notez que la création d'un tableau de chaînes et leur jonction@(,"0"*16)-join''
est 1 caractère plus court que la chaîne littérale"0000000000000000"
)Ensuite, prenez une simple boucle for
1..16|%{...}
vérifiant chaque chiffre pour construire notre tableau de sortie, puis enfin le-join''
remettre ensemble.Précédent, 188
Précédent-er, 203
la source
Javascript (ES6),
216207 octetsDéfinit une fonction anonyme.
Merci à ETHproductions pour des conseils!
la source
.join` | `
2. Vous pouvez également utiliser des chaînes de modèle pour interpoler des valeurs:i=>`,${"0".repeat....join`,`},`.replace...
3 Vous pouvez trouver plus de conseils ES6 sur ce fil .i=>`,${("0".repeat(16)+i.toString(2)).slice(-16).split``.map((v,l,a)=>l%4?"":"| "+a.slice(l,l+4).map(v=>' #'[v]).join` | `+" |").filter(v=>v).join`,`},`.replace(/,/g,`<line break>+---+---+---+---+<line break>`).slice(1)
("0".repeat(16)+i.toString(2)).slice(-16)
->(65536|i).toString(2).slice(1)
CJam, 62 octets
Essayez-le en ligne .
la source
Pyth, 50 octets
L'explication devra attendre une autre fois, je poste ceci sur mon téléphone!
la source
Rubis, 102
Algorithme
Imprimer un séparateur horizontal
Boucle 20 fois (19..0)
Si le numéro de boucle ne divise pas par 5, convertissez-le en un nombre compris entre 16..0 en multipliant par 4/5. Imprimer un espace (ascii 32) ou
#
(ascii 32 + 3 = 35) précédé de|
et suivi d'un espace.Si le numéro de boucle est divisé par 5, imprimez un |, un retour à la ligne et un séparateur horizontal identiques au premier.
la source
Perl, 103 octets
Beaucoup de répétitions de chaînes pour faire une grille de
x
s, convertir l'entrée en binaire puiss///
lex
s en#
ou$"
() selon le drapeau à la position spécifiée (
$x
).la source
PHP, 159 octets
bingrid16.php
:Usage:
Rien d'extraordinaire, juste rendu le rendu forcé.
J'ai essayé un autre angle en utilisant des tableaux au lieu de boucles, mais il était plus long à 224 octets:
la source
Perl 5 ,
8584 octets8483 octets de code +-p
indicateur-1 octet après que Dom m'a rappelé d'utiliser une nouvelle ligne
Essayez-le en ligne!
la source
$/
!c99 263 octets
golfé:
non golfé:
J'ai juste aimé présenter une variante un peu décalée et j'ai pensé que c'était la première fois que cela convenait (même cela me coûtait quelques octets, mais C ne pouvait pas relever ce défi en octets même avec une chance, donc je m'en fichais) d'utiliser l'argc / argv
la source
Rubis, 95
Nod to Mhmd pour une conversion de chaîne concise, mais je voulais essayer d'utiliser des méthodes de chaîne au lieu de méthodes numériques.
la source
Rubis, 93
Une version légèrement plus courte utilisant uniquement des opérations numériques.
la source
C # 227 octets
Golfé:
Indention:
La première fois que j'essaie quelque chose comme ça, des conseils seraient les bienvenus!
la source
wc
commandePython 3,
145144 octetsEn ligne:
Avec les nouvelles lignes:
Edit: Tanks @manatwork pour économiser 1 octet
la source
r=0,1,2,3
est plus courte que 1 caractère à générer avecr=range(4)
.Kotlin , 192 octets
Embellie
Tester
la source
05AB1E , 45 octets
Essayez-le en ligne!
la source