Schreiben Sie anhand einer Eingabezeichenfolge ein Programm, das die Gesamtzahl der Linien und Kurven ausgibt.
Die Herausforderung
- Nehmen Sie Eingaben von
STDIN
oder eine andere Eingabemethode entgegen. - Ausgabe an
STDOUT
oder eine andere Ausgabemethode für die Gesamtzahl der in der Zeichenfolge enthaltenen Linien und Kurven in dieser Reihenfolge , basierend auf der folgenden Tabelle im Codeausschnitt. - Nicht alphanumerische Zeichen sollten ignoriert werden.
- Standardlücken sind verboten.
- Dies ist Code-Golf , also gewinnt der kürzeste Code.
Klarstellungen
- Die Linien und Kurven werden durch die in Stackexchange für verwendete Schriftart bestimmt
code blocks
. - Kreise (wie
O, o, 0
) und Punkte (i, j
) werden als jeweils 1 Kurve betrachtet. - Die Eingabe kann eine Zeichenfolge, eine Liste von Zeichen, ein Strom von Zeichen, Bytecodes usw. sein.
- Die Ausgabe kann ein Array von ganzen Zahlen sein, Tupel von ganzen Zahlen, durch Kommas getrennte Zeichenfolge, usw. Die beiden Zahlen getrennt sein müssen, so
104
ist nicht gültig, aber10,4
,10 4
,10\n4
,[10,4]
,(10, 4)
, und so weiter ist. - Überschriften und nachfolgende Leerzeichen sind durchaus akzeptabel.
Sample Input und Output
# Format: str -> line, curve
hi -> 4, 2
HELLO WORLD -> 20, 4
l33+ 5pEak -> 13, 8
+=-_!...?~`g@#$%^ -> 1, 2
9001 -> 5, 3
O o O o O o -> 0, 6
Zeichentabelle
Char | Lines | Curves
0 | 1 | 1
1 | 3 | 0
2 | 1 | 1
3 | 0 | 2
4 | 3 | 0
5 | 2 | 1
6 | 0 | 1
7 | 2 | 0
8 | 0 | 2
9 | 0 | 1
A | 3 | 0
B | 1 | 2
C | 0 | 1
D | 1 | 1
E | 4 | 0
F | 3 | 0
G | 2 | 1
H | 3 | 0
I | 3 | 0
J | 1 | 1
K | 3 | 0
L | 2 | 0
M | 4 | 0
N | 3 | 0
O | 0 | 1
P | 1 | 1
Q | 0 | 2
R | 2 | 1
S | 0 | 1
T | 2 | 0
U | 0 | 1
V | 2 | 0
W | 4 | 0
X | 4 | 0
Y | 3 | 0
Z | 3 | 0
a | 0 | 2
b | 1 | 1
c | 0 | 1
d | 1 | 1
e | 1 | 1
f | 1 | 1
g | 1 | 2
h | 1 | 1
i | 3 | 1
j | 1 | 2
k | 3 | 0
l | 3 | 0
m | 3 | 2
n | 2 | 1
o | 0 | 1
p | 1 | 1
q | 1 | 1
r | 1 | 1
s | 0 | 1
t | 1 | 1
u | 1 | 1
v | 2 | 0
w | 4 | 0
x | 4 | 0
y | 1 | 1
z | 3 | 0
s
2 Kurven oder 1? Befindet sich der Stielj
sowohl in einer Linie als auch in einer Kurve? Es wäre am besten, wenn Sie nur die erforderlichen Werte für alle Buchstaben auflisten könnten.o
sollte 0 Linien, 1 Kurve seinAntworten:
Haskell,
214199188175 BytesProbieren Sie es online aus!
Die Anzahl der Linien und Kurven sind die Ziffern der Basis-5-Zahlen und werden als Basis-16-Zahlen gespeichert. Die Funktion wird
g
zurück zur Basis 5 übersetzt.Bearbeiten: -13 Bytes dank @cole.
quelle
05AB1E ,
786965 Bytes-4 Bytes danke an Kevin Cruijssen, Geh und schau dir seine noch bessere 05AB1E Antwort an
Probieren Sie es online aus!
Ausgaben als [Kurve, Linie]
Ich bin wirklich schlecht bei 05AB1E. Ich habe es gerade herausgefunden. Kann definitiv mehr Bytes sparen, wenn ich 05AB1E in
è
meiner Liste der Listen ausführen kannErläuterung
quelle
line curve
nicht seincurve line
.Output to STDOUT, or any other output method, the total number of lines and curves contained in the string, in that order
. Beachten Sie diein that order
, soline curve
.[Line, Curve]
als Ausgabereihenfolge, obwohl dies zufällig und nicht beabsichtigt ist).Gelee , 45 Bytes
Ein monadischer Link, der eine Liste von Zeichen akzeptiert, die eine Liste von (zwei) ganzen Zahlen ergibt.
Probieren Sie es online aus! Oder sehen Sie sich die Testsuite an .
Wie?
quelle
Scala , 235 Bytes
Probieren Sie es online aus!
Nicht so klein, kann wahrscheinlich weiter Golf gespielt werden.
Hinweis: Das Zeichenfolgenliteral mit 52 Zeichen ähnelt einem Wörterbuch, das ein Zeichen einem anderen Zeichen zuordnet, das die Anzahl der Linien und Kurven gemäß der folgenden Tabelle angibt:
quelle
Python 2 ,
159154 BytesFür jedes Zeichen
lines*4 + curves
wird ein Wert von 0 bis 16 angegeben. Base-36 wird verwendet, um diese Werte zu codieren (1 Zeichen = 1 Wert).-5 Bytes dank @Chas Brown
Probieren Sie es online aus!
Python 2 , 141 Bytes
Dies ist ein Port meiner Python3-Lösung. Diese Version gibt eine Liste mit langen Ints aus, also sieht es so aus wie
[4L, 2L]
statt[4, 2]
.Probieren Sie es online aus!
quelle
'/'<x<'{'
anstelle vonx.isalnum()
.'/'<x<'{'
, aber ich habe versucht, es auszudrücken, um es auch loszuwerdenif
.Gelee , 51 Bytes
Probieren Sie es online aus!
Ein monadischer Link, der eine Zeichenfolge als Eingabe verwendet und eine Liste von Ganzzahlen als zurückgibt
[lines, curves]
quelle
JavaScript (Node.js) ,
251 219217 Byte-34 Bytes von @Expired Data : o
Probieren Sie es online aus!
quelle
Retina 0.8.2 , 160 Bytes
Probieren Sie es online aus!Link enthält Testfälle. Erläuterung:
Duplizieren Sie die Eingabezeichenfolge.
Zählen Sie die Zeilen jedes Zeichens in der ersten Zeile.
Zählen Sie die Kurven jedes Zeichens in der zweiten Zeile.
Summieren Sie die Ziffern in jeder Zeile separat.
quelle
R ,
164153 BytesProbieren Sie es online aus!
Ich hatte die gleiche Idee wie Nimis Antwort mit einer Base 5-Codierung, aber codiert als ASCII-Zeichen anstelle von Base 16. Verwendet
nomatch = 0
inmatch
nicht-alphanumerische Zeichen zu beseitigen.Rückgabe
curves lines
.quelle
Holzkohle , 60 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Erläuterung:
Dies ist ein Array aus zwei Zeichenfolgen
13103202000101111131333201110112441331014323313243010202024433
und10120110212111112112002111111110001002110010010000112110100000
. Die Zeichenfolgen werden dann zugeordnet.Die Elemente der Eingabe werden darüber gefiltert, ob sie in den (62) Zeichen des Standard-Basiskonvertierungsalphabets enthalten sind.
Die verbleibenden Elemente werden dann von der Basis (62) konvertiert und diese werden dann in die zugeordnete Zeichenfolge indiziert.
Die Ziffern werden summiert und für den impliziten Druck in eine Zeichenfolge zurückgesetzt.
quelle
Python 3 ,
165159148146 BytesFür jedes Zeichen (einschließlich nicht alphanumerischer Zeichen)
lines*3 + curves
wird ein Wert von 0 bis 12 angegeben, sodass wir zum Codieren von Daten eine lange Basis-13-Zahl verwenden können. Um es kürzer zu machen, wird es in Base-36 konvertiert.Vielen Dank an @Chas Brown für tolle Ratschläge.
-2 Bytes durch Konvertieren von Lambda in Programm.
Probieren Sie es online aus!
quelle
Python 2 ,
179166165163 BytesProbieren Sie es online aus!
Gibt eine Liste zurück
[curves, lines]
.quelle
Python 2 , 525 Bytes
Probieren Sie es online aus!
Ähnlicher Ansatz zur Referenzimplementierung, jedoch etwas kürzer.
quelle
Perl 5
-MList::Util=sum -p
, 180 BytesProbieren Sie es online aus!
quelle
05AB1E , 53 Bytes
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Sehen Sie diese 05AB1E Spitze von mir (Abschnitte Wie große natürliche Zahlen zu komprimieren? Und Wie zu komprimieren integer Listen? ) Zu verstehen , warum
•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ
ist101629259357674935528492544214548347273909568347978482331029666966024823518105773925160
und•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ5в
ist[1,0,2,0,0,2,1,0,1,2,0,3,2,0,1,1,0,3,1,1,0,3,0,3,0,4,0,4,0,2,1,0,0,2,1,0,1,2,2,0,1,1,1,0,0,3,0,4,0,2,0,3,1,1,0,3,0,3,1,2,0,3,0,4,1,1,1,0,2,1,0,3,0,3,1,1,0,4,0,4,0,2,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,2,2,3,0,3,0,3,2,1,1,3,1,1,2,1,1,1,1,1,1,1,1,0,1,1,2,0]
.quelle
Python 3 , 697 Bytes
Ein einfacher erster Versuch. Ich legte die Tabelle in ein Wörterbuch, durchlief die Zeichenfolge, erhöhte einige Zähler und gab ein Tupel zurück. Eingabe ist eine Zeichenfolge.
Probieren Sie es online aus!
quelle
C # (Visual C # Interactive Compiler) , 157 Byte
Probieren Sie es online aus!
quelle