À l'époque, les composeurs automatiques de téléphone utilisaient des cartes perforées avec une colonne pour chaque chiffre du numéro à composer. Les colonnes avaient sept rangées. Les trois premières lignes représentaient les nombres (1,2,3), (4,5,6) et (7,8,9) respectivement. Les trois dernières rangées ont fait pivoter cet arrangement de 90 °: (1,4,7), (2,5,8) et (3,6,9). La rangée du milieu a été utilisée pour 0. Tout chiffre 1-9 aurait deux trous perforés - un dans les trois premières rangées et un dans les trois rangées inférieures. Zéro aurait seulement frappé la rangée du milieu. Visualisons la colonne poinçonnée pour le numéro 6 ( .
non x
poinçonnée, poinçonnée, le guide à gauche est juste pour illustrer l'encodage):
123 .
456 x
789 .
0 .
147 .
258 .
369 x
Nous recherchons quelles lignes contiennent le numéro que nous essayons de composer. Pour 6, il s'agit de la deuxième rangée et de la neuvième rangée. Ces deux lignes sont perforées, les cinq lignes restantes ne sont pas perforées. Voici les motifs perforés pour tous les chiffres de 0 à 9:
0 1 2 3 4 5 6 7 8 9
123 . x x x . . . . . .
456 . . . . x x x . . .
789 . . . . . . . x x x
0 x . . . . . . . . .
147 . x . . x . . x . .
258 . . x . . x . . x .
369 . . . x . . x . . x
Votre objectif est de (écrire un programme ou une fonction pour) perforer ces cartes pour moi.
Entrée: Un nombre, pris dans n'importe quel format raisonnable (chaîne, entier, liste d'entiers, etc.), ne dépassant pas 9999999999999.
Sortie: La grille de colonnes perforées correspondant à l'entrée numérique. Vous n'avez pas besoin des en-têtes ou de l'espacement supplémentaire indiqués ci-dessus, juste des colonnes perforées elles-mêmes. Les sauts de ligne de début / fin sont corrects, tout comme les espaces entre les lignes / colonnes tant qu'ils sont cohérents . En parlant de cela, tant qu'ils sont cohérents, vous pouvez utiliser n'importe quel caractère (non blanc) pour le poinçonnage et tout autre caractère pour le non-poinçonnage (alors que cela devrait être évident, veuillez spécifier les caractères que vous utilisez).
C'est le code-golf, donc le code le plus court l'emporte. Les failles standard ne sont pas autorisées.
Cas de test (tous utilisés .
pour non perforé, x
pour perforé):
In: 911
Out: .xx
...
x..
...
.xx
...
x..
In: 8675309
Out: ....x..
.x.x...
x.x...x
.....x.
..x....
x..x...
.x..x.x
In: 5553226
Out: ...xxx.
xxx...x
.......
.......
.......
xxx.xx.
...x..x
Réponses:
Gelée , 13 octets
Essayez-le en ligne!
1
= perforé,0
= non perforé.la source
Pyth, 25 octets
Utilise
0
pour poinçonné et non"
poinçonné.Essayez-le ici
Explication
la source
JavaScript (ES6),
6054 octetsPrend l'entrée comme un tableau d'entiers. Renvoie une matrice binaire, avec 0 = non perforé / 1 = perforé.
Essayez-le en ligne!
la source
05AB1E ,
1615 octetsUtilise 0 et 1 .
Essayez-le en ligne!
Explication
la source
SOGL V0.12 , 23 octets
Essayez-le ici!
Compression.
la source
Python 2 , 84 octets
Essayez-le en ligne!
0/1
est utilisé pour non perforé / perforé.la source
Python 3 ,
8480 octetsEssayez-le en ligne!
la source
C (bruit) ,
108107 bytesEssayez-le en ligne!
Prend le numéro d'entrée comme chaîne. Imprime la sortie dans
.
etX
comme dans les exemples.Crédits
-1 octet merci @ ASCII uniquement
la source
putchar(".X"[(c--?16<<c%3|1<<c/3:8)>>i&1]))c-=48
place dec-=48,putchar(".X"[(c--?16<<c%3|1<<c/3:8)>>i&1]))
J ,
3120 octets-11 octets grâce à FrownyFrog!
Essayez-le en ligne!
J , 31 octets
Essayez-le en ligne!
Prend l'entrée comme une liste de chiffres
0 - non perforé, 1 - perforé
Explication:
la source
Toile ,
2725 octetsEssayez-le ici!
la source
Fusain , 28 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Utilise 0/1, mais peut prendre en charge des caractères arbitraires au coût de 1 octet: Essayez-le en ligne! . Explication:
la source
Perl 5
-F
, 52 octetsEssayez-le en ligne!
Utilise
1
pour poinçonné et non0
poinçonné.la source