Meine Eltern haben ein Heimkino-Gerät. Die Fernbedienung ist kaputt und es ist unglaublich schwierig, in einem Menü nach rechts zu navigieren. Meistens funktioniert es nicht, aber wenn es funktioniert, bewegt es sich unglaublich schnell nach rechts.
Dies ist offensichtlich frustrierend, aber es ist am frustrierendsten, wenn Sie einen Filmtitel eingeben möchten, für den eine Tastatur verwendet werden muss, die wie folgt aussieht:
a b c d e f
g h i j k l
m n o p q r
s t u v w x
y z 1 2 3 4
5 6 7 8 9 0
Ihre Aufgabe ist es, einen Filmtitel als Eingabe zu verwenden und zu berechnen, wie "frustrierend" es ist, diesen Filmtitel einzugeben. Die Frustrationszahl einer bestimmten Zeichenfolge ist die Anzahl der Buchstaben, die direkt von dem Buchstaben vor ihnen verschoben werden müssen. Es ist uns egal, wie weit sie richtig liegen, denn wenn wir uns nach rechts bewegen, gehen wir ziemlich sofort ans Ende der Linie und es ist uns egal, ob wir uns nach oben, unten oder links bewegen, weil sie einfach sind.
Zum Beispiel, wenn wir eintippen wollten
keyboard
- Wir starten
k
umsonst. e
ist gerade oben,k
damit wir uns nicht nach rechts bewegen müssen.y
Ist ganz links, so dass Sie sich nicht nach rechts bewegen müssen.b
Befindet sich jedoch in der nächsten Spalte nach rechts, müssen wir uns nach rechts bewegen, um dorthin zu gelangen.o
Ist in der nächsten Spalte vorbei, müssen wir nach rechts gehen, um dorthin zu gelangen.a
ist wieder in der ersten Spalte, also bewegen wir uns nach links, um dorthin zu gelangen.r
ist den ganzen Weg auf der rechten Seite, also bewegen wir uns direkt dorthin.d
befindet sich zwei Spalten links vonr
der Spalte.
Die Charaktere, die sich nach rechts bewegen müssen, bor
bedeuten, dass dies Frustration ist 3.
Zusätzliche Regeln
Dies ist eine Code-Golf- Herausforderung, daher werden Ihre Antworten in Bytes bewertet, wobei weniger Bytes besser sind. Die Eingabe besteht immer aus alphanumerischen Zeichen. Sie können entweder Groß- oder Kleinbuchstaben eingeben und müssen nur eine eingeben. Die Eingabe wird niemals leer sein.
Testfälle
keyboard -> 3
2001aspaceodyssey -> 6
sorrytobotheryou -> 8
thinblueline -> 5
blast2 -> 3
"blast2" -> 3
(kein echter Film, aber einige Antworten haben Probleme mit solchen Testfällen)90 -> 1
Antworten:
JavaScript (Node.js) ,
615554 Byte1 Byte dank @nwellnhof gespeichert
Nimmt die Eingabe als Array von Zeichen.
Probieren Sie es online!
Wie?
Für alle Zeichen außer Ziffern größer als0 ist die mit 0 indizierte Spalte x gegeben durch:
Dabei ist der ASCII-Code des Zeichens.c
Für positive Ziffern müssen wir stattdessen Folgendes tun:n
Beispiele:
Kommentiert
quelle
"blast2"
."234"
.Jelly , 11 Bytes
Ein monadischer Link, der eine Liste von (Groß-) Zeichen akzeptiert.
Probieren Sie es online!
Wie?
Ersetzt zuerst ein beliebiges
'0'
s durch'4'
s (der Rest des Codes behandelt sie also so, als ob sie sich in der äußersten rechten Spalte befinden). Wirft dann auf Ordnungszahlen, addiert Eins und Modulo6
, um 0-basierte Spaltenindizes zu erhalten. Dann vergleicht Nachbarn mit is-less-than und summiert das Ergebnis.quelle
Perl 6 ,
4539 BytesProbieren Sie es online!
Funktioniert mit Großbuchstaben.
(2-ord(c))%46%6
berechnet die umgekehrte x-Koordinate.quelle
Sauber , 85 Bytes
Probieren Sie es online!
quelle
Ruby , 56 Bytes
Probieren Sie es online!
Vorläufige naive Version, wird Golf gespielt.
quelle
Japt
-x
, 14 BytesProbieren Sie es online!
Port dieser Gelee-Antwort. Nimmt die Eingabe als Array von Zeichen mit Großbuchstaben.
Erläuterung:
quelle
Java (OpenJDK 8) , 73 Byte
Keine schlechte Lösung für Java! Diese Null auf der rechten Seite hat mich mehrere Bytes gekostet.
Probieren Sie es online!
Erklärt
quelle
05AB1E ,
1211 Bytes-1 Byte danke an Kevin Cruijssen
Eine weitere Portierung von Jonathan Allans Jelly-Antwort. Nimmt die Eingabe in Großbuchstaben vor.
Erläuterung:
Probieren Sie es online!
quelle
0'4
kann sein¾4
, ein Byte zu speichern ( relevanter 05AB1E-Tipp ).K (ngn / k) ,
32 3128 BytesProbieren Sie es online!
quelle
Retina 0.8.2 , 46 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung:
Listen Sie das Alphabet und die Ziffern in der Reihenfolge auf, in der sie im OSK aufgeführt sind, und ordnen Sie sie jeweils einer (1-indizierten) Spaltennummer zu.
Wandle jede Spaltennummer in eine unäre um.
Zählen Sie die Anzahl der Spalten, auf die eine größere (dh nach rechts gerichtete) Spalte folgt. Dadurch
&`
können sich die Übereinstimmungen überlappen.quelle
Python 2 , 84 Bytes
Probieren Sie es online!
quelle
Mathematica, 102 Bytes
Funktion pur. Nimmt eine Liste von Zeichen als Eingabe und gibt eine Zahl als Ausgabe zurück. Dies ist eine ziemlich naive Lösung, Golf Vorschläge willkommen.
quelle
PHP,
74 8177 BytesLaufen Sie als Pipe mit
-nR
oder probieren Sie es online aus .quelle
C (gcc) ,
82 7977 BytesProbieren Sie es online!
Diese Funktion unterstützt nur Eingaben in Kleinbuchstaben
Ungolfed und kommentiert:
Wenn meine Funktion breite Zeichenketten akzeptieren darf, kann sie auf 76 Bytes reduziert werden mit:
Probieren Sie es online!
Diese Version akzeptiert nur Eingaben wie
int*
anstelle vonchar*
Bearbeitungen:
c
) abgelegtquelle