Früher verwendeten Telefonautodialer Lochkarten mit einer Spalte für jede Ziffer der zu wählenden Nummer. Die Spalten hatten sieben Zeilen. Die ersten drei Zeilen repräsentierten die Zahlen (1,2,3), (4,5,6) bzw. (7,8,9). Die letzten drei Reihen haben diese Anordnung um 90 ° gedreht: (1,4,7), (2,5,8) und (3,6,9). Die mittlere Reihe wurde für 0 verwendet. Bei jeder Ziffer 1-9 wurden zwei Löcher gestanzt - eines in den ersten drei Reihen und eines in den unteren drei Reihen. Null hätte nur die mittlere Reihe gestanzt. Lassen Sie uns die gelochte Spalte für die Nummer 6 visualisieren ( .
ist ungelocht, x
ist gelocht, die linke Anleitung dient nur zur Veranschaulichung der Codierung):
123 .
456 x
789 .
0 .
147 .
258 .
369 x
Wir suchen nach den Zeilen, in denen sich die Nummer befindet, die wir wählen möchten. Für 6 ist dies die zweite und die neunte Reihe. Diese beiden Reihen werden gestanzt, die restlichen fünf Reihen werden ausgestanzt. Hier sind die Lochmuster für alle Ziffern 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
Ihr Ziel ist es, diese Karten für mich zu lochen (ein Programm oder eine Funktion zu schreiben).
Eingabe: Eine Zahl, die in einem vernünftigen Format (Zeichenfolge, Ganzzahl, Liste von Ganzzahlen usw.) verwendet wird und 9999999999999 nicht überschreitet.
Ausgabe: Das der Zahleneingabe entsprechende Raster aus gelochten Spalten. Die oben gezeigten Überschriften oder zusätzlichen Abstände sind nicht erforderlich, nur die gelochten Spalten. Führende / nachfolgende Zeilenumbrüche sind in Ordnung, ebenso wie Leerzeichen zwischen Zeilen / Spalten, sofern dies konsistent ist . Apropos, solange sie konsistent sind, können Sie ein beliebiges (Nicht-Leerzeichen-) Zeichen für das Lochen und ein beliebiges anderes Zeichen für das Nicht-Lochen verwenden (obwohl dies offensichtlich sein sollte, geben Sie bitte an, welche Zeichen Sie verwenden).
Das ist Code-Golf, also gewinnt der kürzeste Code. Standardlücken sind nicht zulässig.
Testfälle (alle .
zum Ausstanzen, x
zum Ausstanzen):
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
Antworten:
Gelee , 13 Bytes
Probieren Sie es online!
1
= durchstochen,0
= nicht durchstochen.quelle
Pyth, 25 Bytes
Verwendet
0
für gelochte und"
ungelochte.Probieren Sie es hier aus
Erläuterung
quelle
JavaScript (ES6),
6054 BytesNimmt die Eingabe als Array von Ganzzahlen. Gibt eine binäre Matrix mit 0 = ungelocht / 1 = gelocht zurück.
Probieren Sie es online!
quelle
05AB1E ,
1615 BytesVerwendet 0 und 1 .
Probieren Sie es online!
Erläuterung
quelle
SOGL V0.12 , 23 Bytes
Probieren Sie es hier aus!
Kompression.
quelle
Python 2 , 84 Bytes
Probieren Sie es online!
0/1
wird zum Ausstanzen / Lochen verwendet.quelle
Python 3 ,
8480 BytesProbieren Sie es online!
quelle
C (Klirren) ,
108107 BytesProbieren Sie es online!
Übernimmt die eingegebene Nummer als Zeichenfolge. Druckt die Ausgabe in
.
undX
wie in den Beispielen.Credits
-1 Byte danke @ Nur ASCII
quelle
putchar(".X"[(c--?16<<c%3|1<<c/3:8)>>i&1]))c-=48
anstelle vonc-=48,putchar(".X"[(c--?16<<c%3|1<<c/3:8)>>i&1]))
J ,
31-20Bytes-11 Bytes dank FrownyFrog!
Probieren Sie es online!
J , 31 Bytes
Probieren Sie es online!
Übernimmt die Eingabe als Ziffernliste
0 - ungelocht, 1 - gelocht
Erläuterung:
quelle
Canvas ,
2725 BytesProbieren Sie es hier aus!
quelle
Kohle , 28 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Verwendet 0/1, kann jedoch beliebige Zeichen zu einem Preis von 1 Byte unterstützen: Probieren Sie es online aus! . Erläuterung:
quelle
Perl 5
-F
, 52 BytesProbieren Sie es online!
Verwendet
1
für gelochte und0
ungelochte.quelle