Numer wzgórza to liczba, która ma tę samą cyfrę na pierwszym i ostatnim , ale to nie wszystko. W liczbach na wzgórzu pierwsze cyfry ściśle się zwiększają , a ostatnie cyfry ściśle się zmniejszają. Największa cyfra może zostać powtórzona .
Oto przykład numeru wzgórza:
12377731 | 1237... | ...731
^ same ^ | strictly increasing | strictly decreasing
---------+---------------------+---------------------
12377731
^^^ okay because largest digit can be repeated
To nie jest :
4588774 | ...8774
| ^^ not the largest digit
| so this has to be strictly decreasing
| but it's not, so not a hill number
Wyzwanie
Biorąc pod uwagę dodatnią liczbę całkowitą, napisz pełny program lub funkcję, która zwraca wartość prawda dla liczb wzgórz, ale fałszuje inne wartości.
Uwagi:
- Dane wejściowe i wyjściowe mogą być w dowolnym rozsądnym formacie .
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w każdym języku!
Przypadki testowe
12321 -> Truthy
1233321 -> Truthy
99 -> Truthy
3 -> Truthy
234567992 -> Truthy
1232 -> Falsy
778896 -> Falsy
23232 -> Falsy
45566554 -> Falsy
5645 -> Falsy
code-golf
decision-problem
number-theory
nieokreślony
źródło
źródło
222222222
? Czy to jest płaski numer wzgórza?222222222
jest numerem wzgórza, największa cyfra to 2 i dlatego może być powtórzona1230321
numer wzgórza?Odpowiedzi:
Galaretka , 8 bajtów
Wypróbuj online!
Jak to działa
źródło
JavaScript (ES6),
6254 bajtyPobiera dane wejściowe jako ciąg. Zwraca wartość logiczną.
Wypróbuj online!
Skomentował
JavaScript (ES6), 65 bajtów
Rozwiązanie wykorzystujące wyrażenie regularne. Pobiera dane wejściowe jako ciąg. Zwraca0 lub 1 .
Wypróbuj online!
W jaki sposób?
Najpierw konwertujemy liczbę na listę różnic cyfr par w[−9,9] :
Przykład:
Ta tablica jest wymuszana na ciąg znaków, co daje:
Stosujemy następujące wyrażenie regularne:
Na koniec testujemy również, czy ostatnia cyfra
p
jest równa pierwszej cyfrzes[0]
.źródło
Pyth, 16 bajtów
Wypróbuj zestaw testowy .
źródło
Galaretka , 11 bajtów
Wyjaśnienie:
Wypróbuj online!
źródło
Perl 6 , 39 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 ,
114112 bajtówWypróbuj online!
źródło
R , 65 bajtów
Bierze sznurki. Wpadłem na pomysł sprawdzenia niezmienności sortowania z odpowiedzi Pyth.
Wypróbuj online!
źródło
05AB1E ,
19171312 bajtów-5 bajtów, tworząc port odpowiedzi Pyth @lirtosiast .
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Â{RQ
może alternatywnie być(Â{Q
dla tej samej liczby bajtów, gdzie(
neguje każdy znak: Wypróbuj online .źródło
J, 23 bajty
Pomysł skradziony z galaretki odpowiada. Chciałem tylko zobaczyć, jak krótko potrafię to zrobić w J.
Wypróbuj online!
źródło
MATL , 12 bajtów
Wypróbuj online!
Wyjaśnienie
Dane wejściowe to ciąg cyfr. Dane wyjściowe to a
1
lub0
. Liczba222222
jest numerem wzgórza według tego programu. Zaoszczędzono 2 bajty, kopiując metodę Dennisa do sprawdzania równości pierwszej i ostatniej cyfry.źródło
Python 2 , 53 bajty
Pobiera dane wejściowe jako ciąg. Wyjście odbywa się poprzez obecność lub brak wyjątku .
Wypróbuj online!
Python 2 , 62 bajty
Pobiera dane wejściowe jako ciąg znaków i zwraca wartość logiczną.
Wypróbuj online!
źródło
Język Mathematica / Wolfram,
6964 bajtówCzysta funkcja. Pobiera dane wejściowe jako liczbę całkowitą, zwraca
True
lubFalse
.Wyjaśnienie:
Pierwsza klauzula sprawdza „górzystość”:
IntegerDigits
: Uzyskaj cyfry z liczby całkowitej. Przechowywać wy
.-Differences
: Weź kolejne różnice i odwróć znaki.Sign
: Zamień każdy wpis na +1, jeśli jest dodatni, 0, jeśli zero, i -1, jeśli ujemny. Przechowywać wx
.Sort
: Sortuj listę +1, 0, -1 od najmniejszej do największej. Porównaj z oryginalną listą wx
.Druga klauzula sprawdza, czy pierwsza i ostatnia cyfra są równe.
Wskazówka dla @IanMiller, która zawiera wskazówki dotyczące udoskonalenia tego kodu.
źródło
IntegerDigits
iDifferences
są dość długie nazwy funkcji jest nieco irytujące.Sort[x=Sign@-Differences[y=IntegerDigits@#]]==x&&y[[1]]==Last@y&
Japt, 11 bajtów
Pobiera dane wejściowe jako tablicę cyfr.
Wypróbuj lub uruchom wszystkie przypadki testowe
źródło
Retina 0.8.2 , 52 bajty
Wypróbuj online! Link zawiera przypadki testowe. Wyjaśnienie:
Konwertuj każdą cyfrę na unary dwukrotnie, oddzielając je
;
si i zakończone,
s. Możesz jednak pomyśleć o wyniku jako o pierwszej cyfrze, a;
, a następnie o wszystkich parach sąsiednich cyfr, o cyfrach każdej pary oddzielonych przez,
i parach oddzielonych przez;
s, następnie o drugiej;
, a następnie o ostatniej cyfrze, a następnie o końcu,
.Odejmij pary sąsiednich cyfr. Pozostawia to
;,;
równe cyfry1
is po większej stronie nierówne cyfry. (Można to zrobić w ramach następującego wyrażenia regularnego, ale oczywiście nie byłoby to tak golfowe).Dopasuj pierwszą cyfrę, następnie dowolną liczbę par cyfr rosnących, następnie dowolną liczbę par równych cyfr, a następnie dowolną liczbę par cyfr malejących, a następnie dopasuj pierwszą cyfrę ponownie na samym końcu.
źródło
Czerwony , 181 bajtów
Wypróbuj online!
Bardziej czytelny:
źródło
PowerShell, 77 bajtów
Skrypt testu mniej golfowego:
Wynik:
źródło
C # (interaktywny kompilator Visual C #) , 161 bajtów
Wypróbuj online!
Oto przegląd tego, jak to działa ...
string
źródło
Python 3 , 114 bajtów
Wypróbuj online!
Znacznie dłużej niż niektóre rozwiązania Python 2, ale to jest oparte na def i bardzo mi się podoba.
źródło
Ruby , 47 bajtów
Wypróbuj online!
Dane wejściowe jako tablica cyfr, dane wyjściowe są logiczne.
źródło