Prosty krokomierz można modelować za pomocą wahadła z dwoma przełącznikami po przeciwnych stronach - jednym przy x = 0 i jednym przy x = l . Gdy wahadło zetknie się z przełącznikiem dalekim, można założyć, że ambulator zrobił pół kroku. Gdy zetknie się z przełącznikiem Near, krok jest zakończony.
Biorąc pod uwagę listę liczb całkowitych reprezentujących pozycje wahadła, określ liczbę pełnych kroków zarejestrowanych na krokomierzu.
Wejście
Liczba całkowita l > 0, długość ścieżki.
Lista liczb całkowitych reprezentujących pozycje wahadła krokomierza za każdym razem.
Wynik
Zmierzona liczba pełnych kroków. Krok jest podejmowany, gdy wahadło styka się z przełącznikiem dalekiego zasięgu (x> = l), a następnie przełącznikiem bliskim (x <= 0).
Przypadki testowe
8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7]
1
Wahadło natychmiast kontaktuje się z przełącznikiem dalekiego zasięgu przy x = 8 przy t = 0. Następnie dotyka przełącznika near w punkcie t = 2 it = 4, wykonując jeden krok. Następnie ponownie dotyka przełącznika dalekiego przy x = 9 przy t = 8, ale nigdy więcej nie dotyka przełącznika bliskiego.
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
źródło
7, [5, 4, 0]
? Czy to 0 czy 1? To znaczy - czy zakładasz, że huśtawka jest zawsze „na całej długości”? Czy7, [5, 8, 6, 1, 2]
? Czy to 0 czy 1?8, [0 8 0 8]
powinien dać1
, a nie2
. Mam rację?Odpowiedzi:
CJam,
2724 bajtówFormat wejściowy to lista pozycji wahadła, po której następuje
l
pojedynczy wiersz.Sprawdź to tutaj.
Wyjaśnienie
źródło
MATL , 22 bajty
Używa bieżącej wersji (14.0.0) języka / kompilatora.
Dane wejściowe są w tej samej kolejności i formacie co w wyzwaniu, oddzielone znakiem nowej linii.
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript ES6 57 bajtów
Dzięki @NotThatCharles za -4
źródło
/10/
?Perl, 28 bajtów
Obejmuje +1 dla
-p
Uruchom z wejściem jako jedną długą linię liczb całkowitych oddzielonych spacją na STDIN, pierwsza liczba to długość:
steps.pl
:Używa operatora przerzucania perla i odlicza liczbę razy, gdy powraca do wartości false
źródło
Pyth, 18 bajtów
Zestaw testowy
Wyjaśnienie:
źródło
Ruby, 42 lata
r
zaczyna się jakofalse
. Przełączamy sięr
na każdym końcu toru i dodajemy go do naszej liczby. Następnie zmniejsz o połowę liczbę (zaokrąglając w dół), aby uzyskać liczbę kroków.źródło
Retina, 34
Wypróbuj online! lub spróbuj z wprowadzeniem dziesiętnym .
Pobiera dane wejściowe w postaci jednoargumentowej, ujemne liczby jednoargumentowe są traktowane jak,
-111...
a zero jest pustym ciągiem. Zlicza, ile razy pojawia się pierwsza liczba, a po niej zero. Używa grupy atomowej, aby zagwarantować, że dopasowania są minimalne (niestety grupy atomowe nie przechwytują, więc musi być zawinięte w inną grupę ...).źródło
Python 3, 82
Zaoszczędzono 2 bajty dzięki DSM.
Jeszcze nie super golfa.
Przypadki testowe:
źródło
Clojure, 64 bajty
Odwzorowuje wartości mniejsze lub równe od zera do
0
, większe niż lub równe długości do1
i inne do pustego ciągu""
. Jest to następnie łączone w ciąg i"10"
liczone są wystąpienia .źródło
APL (Dyalog Unicode) , 17 bajtów SBCS
Znany również jako „jak bardzo mogę nadużywać iota-underbar?”
Wypróbuj online!
źródło