Ein einfaches Pedometer kann durch ein Pendel mit zwei Schaltern auf gegenüberliegende Seiten-Eins bei x = 0 und einem bei x = modelliert werden l . Wenn das Pendel den Fernschalter berührt, kann davon ausgegangen werden, dass der Ambulator einen halben Schritt gemacht hat. Wenn es den Near-Schalter berührt, ist der Schritt abgeschlossen.
Bestimmen Sie anhand einer Liste von Ganzzahlen, die die Positionen des Pendels darstellen, die Anzahl der auf dem Schrittzähler aufgezeichneten Vollschritte.
Eingang
Eine ganze Zahl l > 0 ist die Länge der Spur.
Eine Liste von Ganzzahlen, die die Positionen des Pedometerpendels zu jedem Zeitpunkt darstellen.
Ausgabe
Die Anzahl der gemessenen Vollschritte. Ein Schritt wird ausgeführt, wenn das Pendel den Fernschalter (x> = 1) und dann den Nahschalter (x <= 0) berührt.
Testfälle
8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7]
1
Das Pendel berührt sofort den Fernschalter bei x = 8 bei t = 0. Dann berührt es den Near-Schalter bei t = 2 und t = 4 und vollendet einen Schritt. Danach berührt es den Fernschalter erneut bei x = 9 bei t = 8, aber es berührt den Nahschalter nie wieder.
1, [1, 5, -1, -4, -1, 1, -2, 8, 0, -4]
3
15, [10, -7, -13, 19, 0, 22, 8, 9, -6, 21, -14, 12, -5, -12, 5, -3, 5, -15, 0, 2, 11, -11, 12, 5, 16, 14, 27, -5, 13, 0, -7, -2, 11, -8, 27, 15, -10, -10, 4, 21, 29, 21, 2, 5, -7, 15, -7, -14, 13, 27]
7
7, [5, 4, 0]
0
7, [5, 8, 6, 1, 2]
0
quelle
7, [5, 4, 0]
? Ist das 0 oder 1? Das heißt - nehmen Sie an, dass eine Schaukel immer "in voller Länge" ist? Oder7, [5, 8, 6, 1, 2]
? Ist das 0 oder 1?8, [0 8 0 8]
sollte Input geben1
, nicht2
. Hab ich recht?Antworten:
CJam,
2724 BytesDas Eingabeformat ist die Liste der Pendelpositionen, gefolgt von
l
einer einzelnen Zeile.Teste es hier.
Erläuterung
quelle
MATL , 22 Bytes
Dies verwendet die aktuelle Version (14.0.0) der Sprache / des Compilers.
Die Eingaben erfolgen in der gleichen Reihenfolge und im gleichen Format wie bei der Abfrage, getrennt durch eine neue Zeile.
Probieren Sie es online!
Erläuterung
quelle
Javascript ES6 57 Bytes
Danke @NotThatCharles für -4
quelle
/10/
?Perl, 28 Bytes
Beinhaltet +1 für
-p
Führen Sie die Eingabe als eine lange Zeile mit durch Leerzeichen getrennten Ganzzahlen in STDIN aus. Die erste Zahl ist die Länge:
steps.pl
:Verwendet den Perl-Flip-Flop-Operator und zählt, wie oft false zurückgegeben wird
quelle
Pyth, 18 Bytes
Testsuite
Erläuterung:
quelle
Rubin, 42
r
beginnt alsfalse
. Wir schaltenr
an jedem Ende der Spur um und addieren es zu unserer Zählung. Halbieren Sie dann die Zählung (Abrundung), um die Anzahl der Schritte zu erhalten.quelle
Retina, 34
Probieren Sie es online! oder versuche es mit dezimaleingabe .
Eingaben in unären, negativen unären Zahlen werden behandelt als
-111...
und Null ist die leere Zeichenkette. Zählt, wie oft die erste Zahl gefolgt von einer Null angezeigt wird. Verwendet eine Atomgruppe, um sicherzustellen, dass die Übereinstimmungen minimal sind (leider sind Atomgruppen nicht erfassbar, daher muss sie in eine andere Gruppe eingeschlossen werden ...).quelle
Python 3, 82
2 Bytes dank DSM gespart.
Noch nicht super golfen.
Testfälle:
quelle
Clojure, 64 Bytes
Ordnet Werte kleiner oder gleich Null zu
0
, größer oder gleich Länge1
und andere einer leeren Zeichenfolge zu""
. Dies wird dann zu einer Zeichenfolge verkettet und das Auftreten von"10"
wird gezählt.quelle
APL (Dyalog Unicode) , 17 Byte SBCS
Auch bekannt als "Wie oft kann ich iota-underbar missbrauchen?"
Probieren Sie es online!
quelle