Wyzwanie:
Sprawdź, czy podana liczba stanowi a, number staircase
czy nie
Wejście :
Liczba całkowita (większa niż 0 i nie dziesiętna). UWAGA: Dane wejściowe można traktować jako ciąg znaków, tablicę cyfr.
Wynik :
wartość prawda / fałsz w zależności od tego, czy liczba tworzy schody, czy nie
Liczba schodów:
Numer klatka schodowa jest liczbą całkowitą, gdy czytane od lewej do prawej:
- Zaczyna się od 1
- po którym może następować 2
- po którym może nastąpić 3
- i tak dalej
n
- następnie liczba spada od n - 1
- następnie n - 2
- następnie n - 3
- i tak dalej, aż osiągnie 1
Uwaga :
Część może być używana do wskazania, że jeśli długość> jest większa niż 1. Jeśli tak jest, należy postępować zgodnie z kolejnością. tj .: 12321
Przykład:
12321 ---> true
12345654321 ---> true
9 ---> false
1 ---> true
2 ---> false
123421 ---> false
112312318901323 ---> false
123456789101110987654321 ---> true
Uwaga :
Podane dane wejściowe zawsze będą liczbami całkowitymi większymi niż 0 i nie będą dziesiętne. Twój wynik musi być truthy or falsy
wartością zależną od danych wejściowych
Ograniczenia:
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach (dla każdego języka programowania).
code-golf
math
number
decision-problem
Muhammad Salman
źródło
źródło
[1,2,3,4,5,6,7,8,9,1,0,1,1,1,0,9,8,7,6,5,4,3,2,1]
dla123456789101110987654321
?Odpowiedzi:
R , 97 bajtów
Wypróbuj online!
Przyjmuje
n
jako acharacter
lub aninteger
; użyciecharacter
da poprawne wyniki dla liczb całkowitych, których nie można dokładnie odczytać jako 64-bitdouble
.Generuje numery schodów, dopóki nie znajdzie jednego co najmniej tak długo, jak
n
to jest, a następnie sprawdza równość.Równoważny:
źródło
function(n)
zen=scan();
być krótszy? (oczywiście dla liczb całkowitych)Galaretka , 5 bajtów
Wypróbuj online!
Ostrzeżenie: bardzo wolno (szybko
1
i121
)! PrzygotujDL
się, aby przyspieszyć.źródło
JavaScript (ES6),
6257 bajtówZaoszczędzono 2 bajty dzięki @ l4m2
Zwraca wartość logiczną.
Wypróbuj online!
W jaki sposób?
Zaczynając od k = 1 , szukamy k na początku i na końcu łańcucha, i rekurencyjnie iterujemy proces na pozostałym środkowym podciągu z k + 1 . Rekursja kończy się, gdy tylko nie ma już żadnego dopasowania. Dane wejściowe to numer klatki schodowej, jeśli ostatni podciąg jest równy k .
Przykład dla s = „1234321”:
źródło
m[0]==s&
zamiast tego sprawi, że przejdzie wszystkie przypadki testowe (ale nadal nie powiedzie się na innych, takich jak"123217"
).f=(s,k=1)=>(m=s.match(`^${k}(.*)${k}$`))?f(m[1],k+1):s==k
?Haskell ,
5554 bajtów-1 bajt dzięki Laikoni !
Wypróbuj online!
źródło
Pyth,
1312 bajtówZapisano bajt dzięki RK.
Wypróbuj tutaj
Wyjaśnienie
Jeśli naprawdę chcesz, aby dane wejściowe były liczbą całkowitą, możesz użyć
}Qmsjk+Sd_Std
zamiast tego, ale jest to przerażająco powolne.źródło
/
zamiast,}Q
aby automatycznie uzupełniało sięQ
na końcuPython 2 , 69 bajtów
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) ,
138107102 bajtówWypróbuj online!
Wyjaśnienie:
źródło
Zip...Skip
metoda z poprzedniego komentarza zawodzi[1,1]
, co powinno wrócić,true
jeśli rozumiem specyfikację. Usunąłem to.05AB1E ,
98 bajtówOstrzeżenie: BARDZO WOLNY! Dodaj
g
do początku, aby przyspieszyć.Wypróbuj online!
Wyjaśnienie:
Stare objaśnienie:
Wypróbuj online!
źródło
gLη€ûJså
to kolejny, w którym można zobaczyć wektoryzację palindromizacji za pomocą€û
palindromize każdego.gLη€ûJså
dla 8 bajtów, które nie wysadzają TIO.Python 2 , 77 bajtów
Wypróbuj online!
źródło
Stax , 14 bajtów
Uruchom i debuguj
Bardzo wolny dla większych liczb.
źródło
Attache ,
575546 bajtówWypróbuj online! Ach, to o wiele bardziej eleganckie.
Z
Generate
(49 bajtów):Wyjaśnienie
Funkcja generacji po prostu tworzy
N
numer klatki schodowej. Następnie wyszukiwanie kończy się, gdy`>=:`#&_
jest spełnione. Po rozwinięciu jest to:Kończy się to, gdy długość danych wyjściowych funkcji generowania jest co najmniej długością wejść. W ten sposób generowany jest najmniejszy numer klatki schodowej co najmniej tak długi jak numer wejściowy. Tak więc, jeśli dane wejściowe to numer klatki schodowej, wynikiem będzie ten sam numer klatki schodowej, a w przeciwnym razie następny najdłuższy numer klatki schodowej. Jako taki wystarczy proste sprawdzenie z równością z oryginalnym wejściem, aby ustalić, czy był to numer klatki schodowej.
Attache, 55 bajtów
Wypróbuj online! Z planem rekurencji.
źródło
J , 40 bajtów
Wypróbuj online!
Nie jestem całkiem zadowolony z tego rozwiązania - dużo
@
i boks<
.źródło
SNOBOL4 (CSNOBOL4) , 109 bajtów
Wypróbuj online!
Co ciekawe, zamiana
'1'
drugiego wiersza na1
powoduje awarię programu na wejściu1
.źródło
K , 36 bajtów
Pobiera ciąg taki jak „12321” jako parametr.
Ta funkcja jest napisana jako długi łańcuch aplikacji funkcyjnych, jak w
f g h x
, więc czytaj komentarze od dołu, idąc w górę.{x+1}
tolambda x: x+1
x jest domyślną nazwą parametru. Sprawdź https://pastebin.com/cRwXJn7Z lub pomoc tłumacza dla znaczeń operatora.Generujemy numer klatki schodowej
n
w środku przez{,/$(1+!x),1+1_|!x}
:Cała funkcja
{|/($x)~/:{,/$(1+!x),1+1_|!x}'1+!#x}
:źródło
Haskell ,
646058 bajtów-6 dzięki @BMO!
Wypróbuj online!
źródło
12345678910987654321
, jeśli jesteś w stanie zbudować listę z tylu elementów.Perl 5
-lp
, 49 bajtówWypróbuj online!
0
= prawda, wszystko inne = fałszźródło
Java 10, 142 bajty
Wypróbuj online.
Wyjaśnienie:
źródło
Japt, 11 bajtów
Pobiera dane wejściowe jako ciąg.
Spróbuj
Wyjaśnienie
Alternatywnie,
109 bajtówTo rozwiązanie, które może przyjmować dane wejściowe jako ciąg lub liczbę całkowitą, zwróci tablicę liczb dla prawdy lub, w końcu, wygeneruje błąd dla falsey, jeśli wcześniej nie okaleczy twojej przeglądarki. Używaj ostrożnie.
Spróbuj
źródło
Siatkówka ,
4543 bajtówWypróbuj online! Link zawiera przypadki testowe. Edycja: Zapisano 2 bajty dzięki @Leo. Wyjaśnienie:
Zainicjuj
n
do1
.Podczas gdy
s
zaczyna się i kończy nan
:Usuń
n
z końcóws
i przyrostun
.Sprawdź, czy
n
zostało.źródło
\d
mogą stać się.
i uratować ci dwa bajtyRegex (PCRE) , 92 bajty
Wypróbuj online!
Jestem otwarty na wszelkie sugestie, aby to poprawić.
źródło
Dzięki następującym użytkownikom:
Python 2 , 147 bajtów
Wypróbuj online!
źródło
true
ifalse
ale truthy i falsey wartości.1
i0
działałby na przykłads[0]
zamiaststartswith
? Błędy są dozwolone i można powiedzieć „wyjścia 1 dla schodów, cokolwiek innego (łącznie z niczym) [ponieważ stderrr jest ignorowany] dla nie-schodów”.g
nigdy nie jest 1. Powinieneś przetestować te rozwiązania przed opublikowaniem ich ...