Un podomètre simple peut être modélisé par un pendule avec deux commutateurs sur les côtés opposés - un à x = 0 et un à x = l . Lorsque le pendule entre en contact avec l'interrupteur éloigné, l'ambulateur peut être supposé avoir fait un demi-pas. Lorsqu'il contacte l'interrupteur proche, l'étape est terminée.
À partir d'une liste d'entiers représentant les positions du pendule, déterminez le nombre de pas complets enregistrés sur le podomètre.
Contribution
Un entier l > 0, la longueur de la piste.
Une liste d'entiers représentant les positions du pendule du podomètre à chaque fois.
Production
Le nombre de pas complets mesurés. Un pas est franchi lorsque le pendule entre en contact avec l'interrupteur éloigné (x> = l) puis l'interrupteur proche (x <= 0).
Cas de test
8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7]
1
Le pendule entre immédiatement en contact avec l'interrupteur lointain à x = 8 à t = 0. Il touche ensuite l'interrupteur proche à t = 2 et t = 4, complétant une étape. Après cela, il touche à nouveau l'interrupteur éloigné à x = 9 à t = 8, mais il ne touche plus jamais l'interrupteur proche.
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
la source
7, [5, 4, 0]
? Est-ce 0 ou 1? C'est-à-dire - présumez-vous qu'une balançoire est toujours «pleine longueur»? Ou7, [5, 8, 6, 1, 2]
? Est-ce 0 ou 1?8, [0 8 0 8]
devrait donner1
, non2
. Ai-je raison?Réponses:
CJam,
2724 octetsLe format d'entrée est la liste des positions du pendule suivie de
l
une seule ligne.Testez-le ici.
Explication
la source
MATL , 22 octets
Cela utilise la version actuelle (14.0.0) du langage / compilateur.
Les entrées sont dans le même ordre et format que dans le défi, séparées par une nouvelle ligne.
Essayez-le en ligne!
Explication
la source
Javascript ES6 57 octets
Merci @NotThatCharles pour -4
la source
/10/
?Perl, 28 octets
Comprend +1 pour
-p
Exécutez avec l'entrée comme une longue ligne d'entiers séparés par des espaces sur STDIN, le premier nombre est la longueur:
steps.pl
:Utilise l'opérateur de bascule perl et compte le nombre de fois qu'il revient à faux
la source
Pyth, 18 octets
Suite de tests
Explication:
la source
Rubis, 42
r
commence commefalse
. Nous basculonsr
à chaque extrémité de la piste et l'ajoutons à notre décompte. Ensuite, divisez par deux le nombre (arrondi vers le bas) pour obtenir le nombre de pas.la source
Rétine, 34
Essayez-le en ligne! ou essayez-le avec une entrée décimale .
Prend l'entrée en unaire, les nombres unaires négatifs sont traités comme
-111...
et zéro est la chaîne vide. Compte le nombre de fois que le premier nombre apparaît, suivi d'un zéro. Utilise un groupe atomique pour garantir que les correspondances sont minimes (malheureusement, les groupes atomiques ne sont pas en train de capturer, il doit donc être enveloppé dans un autre groupe ...).la source
Python 3, 82
Enregistré 2 octets grâce à DSM.
Pas encore super golfé.
Cas de test:
la source
Clojure, 64 octets
Mappe des valeurs inférieures ou égales de zéro à
0
, supérieures ou égales de longueur à1
et d'autres à une chaîne vide""
. Ceci est ensuite concaténé en une chaîne et les occurrences de"10"
sont comptées.la source
APL (Dyalog Unicode) , 17 octets SBCS
Également connu sous le nom de «combien puis-je abuser de l'iota-underbar?
Essayez-le en ligne!
la source