Schreiben Sie ein Programm, das ein einzelnes Wort in Kleinbuchstaben als Eingabe akzeptiert und die Anzahl der Buchstabenpaare ausgibt, zwischen denen sich im Wort die gleiche Anzahl von Buchstaben befindet wie im Alphabet.
Zum Beispiel haben wir im Wort 'Natur' 4 Paare:
- nr: da drei Buchstaben im Wort (a, t, u) und drei Buchstaben im Alphabet (o, p, q) dazwischen stehen
- ae: da drei Buchstaben im Wort (t, u, r) und drei Buchstaben im Alphabet (b, c, d) dazwischen stehen
- tu: da im wort keine buchstaben dazwischen und im alphabet keine buchstaben dazwischen sind
- tr: da es einen Buchstaben zwischen ihnen im Wort (u) und einen Buchstaben zwischen ihnen im Alphabet (s) gibt
Da es vier Paare gibt, sollte der Ausgang in diesem Fall 4 sein.
rjjjnfffr
? Wäre das ein Paar (nr
) oder zwei Paare (nr
undrn
)? Und was ist mitabzab
? Sind das zwei Paareab
oder eins?Antworten:
Pyth, 19 Bytes
Probieren Sie es online aus: Demonstration
Erläuterung:
quelle
R, 110 Bytes
Entgolfet:
quelle
Oktave, 41 Bytes
quelle
CJam, 36 Bytes
Probieren Sie es online.
quelle
J, 27 Bytes
Verwendung:
Erläuterung:
Probieren Sie es hier online aus.
quelle
CJam, 25 Bytes
Probieren Sie es online aus
Erläuterung:
quelle
JavaScript (ES6), 98 Byte
Verwendung
Erläuterung
quelle
Python 2, 91 Zeichen
quelle
MATLAB, 84 Bytes
Diese Zeile fordert eine Zeichenfolge als Eingabe an. Anschließend werden alle möglichen Buchstabenpaare erstellt und für die entsprechenden Indizes die gleichen Schritte ausgeführt. Dann bestimmen wir, ob die (absolute) Differenz der Werte übereinstimmt, um schließlich alle Fälle zu summieren, in denen dies der Fall ist. Das Ergebnis wird im Befehlsfenster angezeigt.
quelle
JavaScript ES7, 93
Mit Array Verständnis . ES6 mit
.map.map.map
ist 2 Byte länger.Testen Sie das folgende Snippet mit Firefox
quelle
PowerShell,
114100 BytesZiemlich unkompliziert, benutzt aber ein paar Tricks.
param(..)
Nimmt unsere Eingabe, speichert es auf$a
.$b
als.length
Eingabe. Dadurch wird ein Byte später gespeichert.0..($b-1)|%{..}
ist das Äquivalent von afor($i=0;$i-le($b-1);$i++){..}
Schleife, aber viel kürzer.$i
setzen, damit das so bleibt ...($_+1)..$b|%{..}
die nächstefor
Schleife seit$_
nur positionell zur inneren Schleife.+
, um eine Reihe von Bytes zu speichern)-eq
dem Positionsunterschied im Array entspricht. Da explizit Kleinbuchstaben eingegeben werden, ist keine Konvertierung der Groß- und Kleinschreibung erforderlich. Diese Anweisung gibt entwederTrue
oder zurückFalse
.$o
, alsoTrue
addieren wir 1, während wirFalse
0 addieren.$o
. Beachten Sie, dass wir das gleiche trickreiche Cast-to-Int ausführen müssen, um+
zu vermeiden, dass gedruckt wird,False
wenn keine Übereinstimmungen vorhanden sind.quelle
Rubin, 74
Nichts super interessantes hier. Am liebsten hätte ich verwendet,
eval("s[i].#{["succ"]*(j-i)*?.}")
aber ... schien zu lang.quelle
Matlab
(94)(80)Die Binomialfunktion löst eine dumme Ausnahme aus, wenn k größer als n ist und ich Ausnahmen in derWer braucht eine eingebaute Funktion?arraycell
Funktion nicht fangen kann, da ich sonst mehr Golf spielen könnte.Jetzt könnte ich es einfach von Hand tun und das Binom (n, 2) = n / (2 (n-2)!) = N (n-1) / 2 vereinfachen. Beachten Sie, dass dieser letzte Wert die Summe der ganzen Zahlen von 1 bis n-1 darstellt. Dies macht in Matlab keine Ausnahme. Gott segne Mathe.
Ps: Diese Methode ist anders als die von slvrbld
Ausführung
quelle