Liczba na klatce schodowej jest dodatnią liczbą całkowitą x, tak że jej n- ta cyfra (jedna indeksowana zaczynająca się od najmniej znaczącej cyfry) jest równa x% (n + 1) . To trochę kęs, więc spójrzmy na przykład. Weźmy 7211311 , jeśli weźmiemy pozostałości modułowe 7211311 w zakresie 2-8, otrzymamy:
7211311 % 2 = 1
7211311 % 3 = 1
7211311 % 4 = 3
7211311 % 5 = 1
7211311 % 6 = 1
7211311 % 7 = 2
7211311 % 8 = 7
To są cyfry 7211311 ! Zatem 7211311 jest numerem klatki schodowej.
Zadanie
Napisz kod, który przyjmuje, gdy podana zostanie liczba dodatnia, wyświetli dwie różne wartości, jedną, jeśli liczba jest liczbą na klatce schodowej, a drugą, jeśli nie jest.
To zawody w golfa , więc twoim celem powinno być zminimalizowanie liczby bajtów w kodzie źródłowym.
Przypadki testowe
Oto pierwsze 13 numerów schodów:
1, 10, 20, 1101, 1121, 11311, 31101, 40210, 340210, 4620020, 5431101, 7211311, 12040210
code-golf
number
decision-problem
Kreator pszenicy
źródło
źródło
0
ma numerów schodów? Wiele odpowiedzi tak uważa.Odpowiedzi:
Haskell, 55
57bajtówInne podejście niż inne rozwiązanie Haskell.
Dzięki xnor za zapisanie 2 bajtów.
źródło
let
wyrażenie.Brachylog ,
25211614 bajtówWypróbuj online!
Pierwsze zgłoszenie Brachyloga: D
prawdopodobnie bardzo nie golfisty...wielkiedzięki Dziurawej Zakonnicy i Fatali za zachęty i pomoc w grze w golfa od 25 do 14 lat :)źródło
JavaScript,
42413938 bajtów-4 bajty dzięki @Shaggy i @ETHProductions
Pobiera liczbę jako ciąg znaków i zwraca,
false
jeśli liczba jest liczbą na klatce schodowej i wtrue
przeciwnym razie.Przykładowy fragment kodu:
źródło
!
ponieważ wyzwanie nie określa wprost, że musisz zwrócić wartośćtrue
true, afalse
false - po prostu musisz zwrócić 2 różne wartości.i
sięs=>[...s].some(d=>s%i--^d,i=s.length+1)
~x == -(x+1)
na liczbach całkowitych ix%-y == x%y
myślę, że można uzyskać jeszcze jeden:s=>[...s].some(d=>s%i++^d,i=~s.length)
05AB1E , 6 bajtów
Kod:
Wykorzystuje kodowanie 05AB1E . Wypróbuj online!
Wyjaśnienie:
źródło
Haskell, 60 bajtów
Pobiera liczbę jako liczbę całkowitą
źródło
Mathematica, 60 bajtów
Wypróbuj online!
@alephalpha grał w golfa do 48
Mathematica, 48 bajtów
następny to 24120020
źródło
Python 2 , 54 bajty
Wypróbuj online!
źródło
Japt ,
97 bajtówPobiera dane wejściowe jako ciąg.
Sprawdź to
Wyjaśnienie
Pośrednio bierzemy ciąg jako dane wejściowe.
Zamapuj każdy znak w ciągu.
J
jest stałą Japt dla-1
i´
zmniejsza ją o 1 przy każdym przejściu (--
w JavaScript). Tak więc przy pierwszym przejściu daje nam to-2
.Używamy tej wartości do wykonywania operacji modulo na ciągu wejściowym, który jest automatycznie rzutowany na liczbę całkowitą w tym procesie. W JavaScript
x%-y
daje taki sam wynik jakx%y
.Odwróć powstały ciąg.
Sprawdź, czy nowy ciąg znaków jest równy oryginalnemu wejściu i domyślnie wyślij wynik jako wartość logiczną.
źródło
(Y+2
, czuję, że może to być co najmniej 1 bajt krótszy ...¥£%´JÃw
:-) (działa, ponieważx%y == x%-y
w JS)Neim , 6 bajtów
Wyjaśnienie:
Wypróbuj online!
źródło
Galaretka , 7 bajtów
Wypróbuj online!
źródło
Python 2 , 56 bajtów
Wypróbuj online!
źródło
Perl 6 , 32 bajty
Wypróbuj online!
.comb
to liczba znaków w reprezentacji ciągu argumentu wejściowego$_
(to znaczy liczba cyfr).1 + .comb ... 2
to ciąg liczb od jednej większej niż liczba cyfr do 2.«%«
jest hyperoperator sprężystości, która daje resztę po$_
argument wejściowy po jego lewej stronie, jest podzielona przez każdy z elementów sekwencji na jej prawej:$_ % 2, $_ % 3, ...
.[~]
łączy te cyfry w nową liczbę, która jest porównywana z argumentem wejściowym za pomocą operatora równości łańcuchaeq
.źródło
PHP , 43 bajty
Wypróbuj online!
PHP , 44 bajty
drukuje 1 za prawdę i nic za fałsz
Wypróbuj online!
źródło
Pyth , 13 bajtów
-1 bajtów dzięki Okx .
Wypróbuj online!
Wyjaśnienie
Alternatywne rozwiązanie , wciąż 13 bajtów (dzięki Karlkastor )
Wypróbuj online! Zasadniczo jest to to samo co pierwsze rozwiązanie, z tym wyjątkiem, że używa
i
do konwersji z tablicy liczb na liczbę i że zakres jest generowany inaczej.źródło
ss`M_
zejk_
aby zaoszczędzić 2 bajtów.j
wyprowadza ciąg, podczas gdy potrzebuję liczby do porównania z danymi wejściowymi (czyli liczbą).qi_.e%Q+2k`QT
użycie wyliczonej mapy (.e
) zamiast mapy. I przekształcanie reszty w podstawową liczbę całkowitą 10 z listy zamiast łączenia.C ++, 104 bajty
1) oryginalna wersja:
2) w czytelnej formie:
Wypróbuj online!
źródło
Pari / GP , 42 bajty
Wypróbuj online!
źródło
Python 2 ,
66 60 5857 bajtówx and
(nie powinien sprawdzać 0)enumerate
Wypróbuj online!
źródło
Python 3: 63 bajtów
Gdybym mógł policzyć, ile razy chciałbym, żeby „wyliczyć” były krótsze ...
Wypróbuj online!
źródło
lambda m:all(m%n==int(x)for n,x in enumerate(str(m)[::-1],2))
Java (OpenJDK 8) , 60 bajtów
Wypróbuj online!
Wersja bez ciągu.
źródło
Java 8,
156149bajtówNie golfowany:
Wypróbuj online!
UPDATE:
-7 bajtów : usunięto bezużyteczny
{}
i zastąpioneInteger.parseInt(...)
przeznew Integer(...)
-9 bajtów : dzięki Kevin Cruijssen, usuwa się masę bezużyteczne
()
, używaneLong
zamiastInteger
iprint
zamiastprintln
. Dzięki, Kévin!źródło
new Integer
może byćnew Long
(-3 bajty);println
może byćprint
(-2 bajty); i możesz usunąć otaczający nawiasnew Long(s[0])%i+f;
(-4 bajty).Węgiel drzewny ,
2015 bajtówWypróbuj online! Wyjścia
-
dla numeru klatki schodowej, nic poza tym. Link jest do pełnej wersji kodu.źródło
Python 2, 61 bajtów
źródło
q / kdb +, 34 bajty
Rozwiązanie:
Przykład:
Wyjaśnienie:
Rzuć liczbę wejściową na łańcuch, policz od 0.. długości łańcucha, dodaj 2 do wszystkich, odwróć i podaj każdą liczbę
mod
wraz z oryginalnym wejściem. Rzuć wynik modu na ciąg znaków i zmniejsz listę, sprawdź, czy jest równa ciągowi liczby wejściowej:Uwagi:
Większość rozwiązań służy do generowania
2,3,4..
listy, mam inne rozwiązanie, które robi mniej rzeczy, ale kończy się na 37 bajtach po grze w golfa:źródło
Clojure, 75 bajtów
Dane wejściowe są ciągiem znaków,
map
w którym końcowy%
jest krótszy niżfor[i(range(count %))]
podejście.źródło
Haskell, 62 bajty
f x=and$zipWith(==)(reverse$show x)$map(head.show.mod x)[2..]
Zamiast odwracać (nieskończoną) listę modułów, przycina listę, kompresując ją za pomocą odwróconej reprezentacji ciągu całki x, która następnie zapewnia, że jest równa elementowi.
źródło
Perl 5 , 41 bajtów
39 bajtów kodu + 2 flagi
-pa
Wypróbuj online!
Nie wyświetla nic (undef) dla numerów schodów, 1 dla czegokolwiek innego
źródło