Défi
Avec deux chiffres 0 à 9 en entrée, génère un domino (du jeu de neuf domino ) avec ce nombre de points (pips) sur les deux faces. Voici les dix faces possibles (séparées par des tuyaux):
| | o| o|o o|o o|o o o|o o o|o o o|o o o
| o | | o | | o | | o |o o|o o o
| |o |o |o o|o o|o o o|o o o|o o o|o o o
Ou sur des lignes séparées:
-----
o
-----
o
o
-----
o
o
o
-----
o o
o o
-----
o o
o
o o
-----
o o o
o o o
-----
o o o
o
o o o
-----
o o o
o o
o o o
-----
o o o
o o o
o o o
Formats d'entrée
Vous pouvez prendre des entrées dans n'importe quel format raisonnable, y compris, mais sans s'y limiter:
- Deux entiers séparés, des chaînes ou des tableaux singleton;
- Un seul entier de 0 à 99;
- Un tableau de deux entiers;
- Une chaîne de deux chiffres.
Formats de sortie
- Les deux faces peuvent être alignées horizontalement, séparées par des tuyaux comme suit:
o|o o
| o
o |o o
- Ou ils peuvent être alignés verticalement, séparés par des traits d'union comme ceci:
o
o
-----
o o
o
o o
- Vous pouvez créer une bordure autour du domino si vous le souhaitez.
- Vous pouvez également choisir de générer une liste de lignes, une liste des deux faces ou une combinaison de celles-ci.
- Vous pouvez utiliser n'importe quel caractère non-blanc pour les pépins (j'ai utilisé
o
). - Si vous le souhaitez vraiment, vous pouvez utiliser
0
pour les espaces blancs et1
pour les pépins, ouFalse
/True
(ou l'équivalent de votre langue) pour générer un tableau. - Vous pouvez supprimer les espaces entre les colonnes. c'est une sortie valide pour 7, 7:
ooo|ooo
o | o
ooo|ooo
- Toutes les faces peuvent être pivotées de 90 degrés. C'est aussi une sortie valide pour 7, 7:
o o|o o o
o o o| o
o o|o o o
- Vous pouvez avoir autant / peu de blancs que vous le souhaitez, à condition que la partie principale de la sortie corresponde toujours aux autres contraintes.
- Chaque face doit avoir 3 lignes de hauteur, même si les lignes sont vides. Pour 0, 1 vous ne pouviez pas sortir ceci:
-----
o
Mais vous pouvez sortir ceci:
-----
o
De même, si vous produisiez une liste de deux listes de lignes, vous pourriez le faire [["", "", ""], ["", " o", ""]]
, mais pas [[""], [" o "]]
.
Notation
C'est du code-golf , donc le code le plus court en octets dans chaque langue gagne.
[2, 1]
, je pourrais sortir[[[0,0,1],[0,0,0],[1,0,0]],[[0,0,0],[0,1,0],[0,0,0]]]
?[0,5,21,29,31]
sont tous des chiffres importants ici mes amis.Réponses:
Python 2 ,
10197926864 octetsEssayez-le en ligne!
Crédits
la source
0
etFalse
sont égaux en Python, cela devrait donc être OK).C (gcc) ,
252242269262241235220 octetsJ'étais sur le débordement de pile pour les sockets en python, quand cela est apparu, pourquoi pas? premier code de golf, donc je ne suis pas tout à fait sûr d’avoir suivi les règles à 100% (et si ce n’est pas le cas et si quelqu'un veut voler mon cookie proverbial et le réparer, qu’il en soit ainsi). Avec 'o' et '',
255 245 272 265 244 238228 octets. remplacez +48 par * 79 + 32.Essayez-le en ligne!
Comment ça marche?
J'utilise un bit shift et bit à bit pour trouver si un spot doit être dégagé ou un pip, puis décaler le 0 ou le 1 sur la valeur ASCII correcte. ça déconne sur 4 et 5, alors ils avaient besoin de réparation. effectivement ajouté quelques octets. était capable de supprimer plusieurs octets en enlevant un masque et en utilisant simplement 1 (doh)
Un merci spécial à M. Xcoder pour les 7 octets de moins en supprimant un excès de #define
Changements: memset -21 octets supprimé. refait la logique des bits pour 6, 4, 2 pour dépendre de 8 | 4 & 2, 8 | 4, 8 | 4 | 2, respectivement. -6 octets. supprime les nouvelles lignes supplémentaires en utilisant des options de vente au lieu de printf, qui est également plus courte. raccourci le tableau à 11, en supprimant l'affectation supplémentaire. -15 octets. MAINTENANT, je pense que c'est le mieux que je puisse faire.
la source
'\n'
peut être remplacé par10
. (car en C, les types de données char sont également des types de données entiers) Certainschar
peuvent probablement être remplacés parint
. (ou omettre entièrement)Gelée , 20 octets
Essayez-le en ligne!
Version alternative, sortie originale,
333231 octetsMerci à @ user202729 pour le golf d'un octet!
Essayez-le en ligne!
Comment ça marche
Tout d'abord,
“¤o.ƤẸʠṚ’
un littéral entier dans la base bijective 250 définit la valeur de retour sur 1086123479729183 .Ensuite,
B¬
convertit la valeur de retour en binaire et prend le NON logique de chaque chiffre, donnant le tableauEnsuite,
s5ŒB
divise ce tableau en morceaux de longueur 5 , puis rebondit chaque morceau, transformant abcde en abcdedcba , donnantMaintenant,
ị@
récupère les j ème et k ème items de ce tableau, où j, k est le premier argument du programme. Notez que l'indexation est 1 et modulaire, l'élément zeroth est également le dixième.Enfin,
s€3
divise chaque morceau de longueur neuf en trois morceaux de longueur trois.la source
3
utilise0
pour les pépins, pas1
comme tous les autres.“¤o.ƤẸʠṚ’
devrait marcher.Gelée , 13 octets
Essayez-le en ligne!
Combinant l'idée de Dennis d'utiliser
ŒB
(rebond) dans cette réponse et l'observation de Xcali dans cette réponse pour obtenir 13 octets.Gelée , 28 octets
(avec une jolie impression)
Ce n’est que maintenant que je sais que le littéral de chaîne Jelly se termine automatiquement ...
Essayez-le en ligne!
la source
⁽½ÑD
conduit à moins de compteurs que la réponse d'EriktheOutgolfer“¤¦¢¬‘
iciPHP
155, 150 octetsIl faut un tableau d'entiers en entrée. Pour tester:
Format de sortie:
Regardez ça en direct ici
Ma solution
Pour ma solution, j'ai utilisé une matrice composée de nombres au niveau du bit (puissance de 2). Cela peut être visualisé comme ceci:
Et puis un tableau de stockage composé des positions de bits pour les pépins de chaque domino en corrélation par l'index numéroté:
Alors juste pour clarifier:
0
ou la valeur0
serait le domino vide, qui est toujours faux.1
ou value16
correspond au domino numéro un et à la matrice située au centre16
.2
ou value68
correspond au domino numéro deux et dans la matrice en haut à droite4
et en bas à gauche64
ou4|64
5
ou valeur341
correspond au domino numéro cinq et à la matrice qui est1|4|16|64|256
9
ou value511
correspond au domino numéro neuf et à la combinaison des bits dans la matrice.Une fois que cela est établi , il est une question assez simple de boucle pour les 9 positions dans la matrice, et la mise
$x
à2
la puissance de$i
Ensuite, nous faisons un peu de temps et
&
parcourons ces endroits. Ainsi, par exemple, l'exemple 2 ci-dessus sera utiliséx
et, à la place, des espaces pour des raisons de clarté visuelle:68 & 1 ? 0 : 'x'
qui aboutit à'x'
68 & 2 ? 0 : 'x'
qui aboutit à'x'
68 & 4 ? 0 : 'x'
qui aboutit à0
68 & 8 ? 0 : 'x'
qui aboutit à'x'
68 & 16 ? 0 : 'x'
qui aboutit à'x'
68 & 32 ? 0 : 'x'
qui aboutit à'x'
68 & 64 ? 0 : 'x'
qui aboutit à0
68 & 128 ? 0 : 'x'
qui aboutit à'x'
68 & 256 ? 0 : 'x'
qui aboutit à'x'
Lorsque la boucle est terminée, nous nous retrouvons avec cette chaîne
"xx0xxx0xx"
.Ensuite , nous ajoutons la frontière
"---xx0xxx0xx"
à elle (je commence en fait avec la frontière, mais peu importe) .Et finalement nous chunk_split () sur 3 pour:
N'hésitez pas à me faire savoir ce que vous pensez.
la source
**
introduit dans PHP 5.6 au lieu depow()
php.net/manual/fr/language.operators.arithmetic.php^
mais c'est le bitwise XOR ... lol$argv
. La surcharge de la fonction en PHP est généralement de 13 octets.Perl 5 ,
107 7670+ 1 (= 70 octets-a
)Perl 5 , 70 octets
Essayez-le en ligne!
Utilise 0 pour les espaces et 1 pour les pépins. Méthode assez simple: observez que lorsque le chiffre augmente, une fois qu'un pip est "activé", il ne disparaît jamais, sauf pour celui situé au centre. En position centrale, il est activé pour tous les nombres impairs. Ainsi, pour chaque position, il suffit de vérifier si le chiffre est supérieur au dernier chiffre pour lequel il est désactivé. Le
||0
crée la sortie lorsque la condition est fausse. En Perl, false correspondundef
à la valeur null.la source
JavaScript (ES6),
7978 octetsEnregistré 1 octet grâce à @ETHproductions
Accepte la syntaxe de curry
(a)(b)
et génère un domino ASCII vertical.Démo
Afficher l'extrait de code
Version horizontale,
80 à79 octetsEnregistré 1 octet grâce à @ETHproductions
Prend les entrées sous forme de tableau de 2 entiers et génère un domino ASCII horizontal.
Démo
Afficher l'extrait de code
la source
n>d|0
ou(+d?n>d:n)&1
APL (Dyalog) , 25 octets
Essayez-le en ligne!
-2 grâce à ngn .
Le format de sortie est un peu bizarre: cette fonction renvoie un tableau contenant deux tableaux de forme 3, 3 contenant chacun des 0 et des 1.
la source
2∘|(3 3⍴⊢,,∘⌽)¨>∘3 5 1 7¨
C (gcc) , 115 octets
Essayez-le en ligne!
la source
Javascript (ES6), 87 octets
la source
Haskell - 88 caractères
Prend une liste de deux nombres indiquant les visages, retourne une liste de liste de liste de bool. Pas si court mais je trouve la solution intéressante.
la source
map
place derepeat
etzipWith
:map$(<$>[[(>4),(>5),(>1)],[(>7),odd,(>7)],[(>1),(>5),(>3)]]).map.flip($)
essayez-le en ligne!Pip ,
32272421 octets-3 octets grâce à @DLosc
Essayez-le en ligne!
Explication:
la source
3517
plutôt que sur une liste[3 5o7]
. ;)> <> , 57 + 3 = 60 octets
Essayez-le en ligne . Sortie en tant que domino vertical avec 1s pour les points, 0s pour les espaces et 9s pour les séparateurs comme ceci:
Techniquement, cela peut être étendu jusqu'à 12 valeurs entrées.
Ancienne version:
> <> , 76 + 3 = 79 octets
Essayez-le en ligne . Affiche un domino vertical avec 1s pour les points et 0s pour les espaces, comme ceci:
la source
Charbon de bois ,
46444339 octetsEssayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
Lire deux entiers et les mapper dans la table de recherche. Puis mappez le résultat. (Cela capture effectivement le résultat dans une situation temporaire.)
Les résultats sont ensuite implicitement imprimés sur des lignes séparées, avec une ligne vierge supplémentaire entre chaque face, car les résultats sont imbriqués.
Montez et tracez la ligne de démarcation entre les faces.
Version horizontale précédente de 43 octets:
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
Travailler verticalement.
Imprimer la ligne de démarcation.
Position au début de la première face.
Lire deux entiers et les mapper dans la table de recherche.
Préparez-vous à produire jusqu'à 9
o
s.Mais commencez une nouvelle colonne toutes les trois
o
secondes.Convertissez les 5 bits inférieurs du code ASCII en binaire, puis reproduisez la sortie pour les 4
o
s restantes .la source
Gelée , 16 octets
Essayez-le en ligne!
Stratégie de Neil utilisée et la décompression de base pour générer les valeurs; les sorties sous forme de tableau binaire. Prend une liste en entrée.
Explication:
la source
APL + WIN,
4947 octetsEdité selon le commentaire d'Adam, merci d'exécuter avec l'index d'origine zéro.
Invite à la saisie à l’écran sous forme de vecteur d’entiers un pour chaque visage.
La sortie est de la forme:
pour une entrée de
7 3
et0 5
Explication:
la source
⎕IO←0
pour vous sauver le1+
?Python 2 , 121 octets
Essayez-le en ligne!
Réduit à 121 avec un lambda après avoir relu les règles. Affiche maintenant une liste de lignes.
Version précédente avec une sortie bien formatée:
Python 2 ,
156153147141 octetsEssayez-le en ligne!
-3 avec merci à @NieDzejkob
Prend les entrées en tant que 2 entiers et les sorties en format vertical avec 0 = espace et 1 = point.
la source
Pyt ,
220154 octetsDeuxième tentative (154 octets)
Explication:
Première tentative (220 octets):
Explication:
Essayez-le en ligne!
la source
05AB1E , 34 octets
Essayez-le en ligne!
C'était difficile parce que 05AB1E a un mauvais rembourrage.
Explication de base:
la source
SmileBASIC,
9269 octetsExemple:
C'est ce qui se passe lorsque vos règles ne sont pas assez strictes.
la source
FALSE,
11680787069666361 615958 octetstravaille encore sur ce ...
la source
Puce ,
142135 octetsEssayez-le en ligne!
L'entrée est une chaîne de chiffres. Utilise les zéros comme les pépins. Dessine les pépins pour un nombre, lit l'octet suivant. S'il n'y a pas d'octet suivant, terminez, sinon dessinez le séparateur et allez au début.
Chacun
Z
(ouz
) correspond à un caractère de sortie, ils sont positionnés pour tirer de haut en bas. CapitaliséA
,B
,C
etD
correspondent aux faibles quatre bits de l'entrée (qui est tout ce que nous regardons, donc"34" == "CD" == "st" ...
). Le minusculeb
,d
,e
,f
correspondent à différents bits de la sortie.Peut aussi faire des dominos d’infini; essayez de donner
0123456789
comme entrée.la source
PHP, 116 octets
nécessite PHP 5.5 ou une version ultérieure. Courez avec
-nr
ou essayez-le en ligne .la source
C (gcc) ,
150146 octetsEssayez-le en ligne!
la source