Rozważ ciąg liczb naturalnych, dla których N pojawia się jako podłańcuch w N ^ 2. A018834
Wyprowadza n
element th tej sekwencji.
Zasady
Program przyjmuje tylko n
jako dane wejściowe i wyjściowe tylko jedną liczbę - N
.
Sekwencja może być indeksowana 0 lub indeksowana 1.
Sequence: 1 5 6 10 25 50 60 76 100 250 376 500 600 625 760 ...
Squares: 1 25 36 100 625 2500 3600 5776 10000 62500 141376 250000 360000 390625 577600 ...
To jest golf golfowy, więc wygrywa najkrótszy kod.
Odpowiedzi:
05AB1E , 6 bajtów
1-indeksowany
Wypróbuj online!
Wyjaśnienie
źródło
µ
polecenie jest po prostu ... Chciałbym to mieć.Nth
liczbę, która spełnia określony warunek.å
daje true, to mamy prądN
na górze stosu (licznik przyrostów i przyrostN
), ale jeśli nie, kontynuujemy (przyrostN
). Może użyj czegoś innego niż „N
”, ponieważ jest to końcowy wynik w treści pytania: pPerl 6 ,
3331 bajtów-2 bajty dzięki nwellnhof
Wypróbuj online!
Wyjaśnienie:
źródło
JavaScript (ES6), 43 bajty
Wypróbuj online!
Wersja nierekurencyjna, 47 bajtów
Wypróbuj online!
źródło
n=23
tylko?MathGolf , 8 bajtów (działa dla dowolnego wkładu w teorii, ale tylko
n<10
w praktyce)Wypróbuj online!
Alternatywa (działa
n<49
w praktyce i teorii)Jedyną różnicą jest to, że zamiast tworzyć listę z
10^(input)
wartościami, tworzę listę z10^6
elementami. Uruchomienie zajmuje trochę czasu, więc możesz zamienić pierwszy bajt na dowolny 1-bajtowy literał, aby go przetestować.Wyjaśnienie
Powodem, dla którego to rozwiązanie nie obsługuje dużych danych wejściowych, jest to, że zauważyłem, że sekwencja rośnie mniej niż wykładniczo, ale więcej niż jakikolwiek wielomian. Właśnie dlatego użyłem
10**n
operatora (chciałem użyć,2**n
ale nie udało się to dla wejścia 1). Oznacza to, że tworzę niezwykle dużą tablicę nawet dla małych danych wejściowych, aby odfiltrować ogromną większość, a następnie wziąć jeden z pierwszych elementów. Jest to bardzo marnotrawstwo, ale nie mogłem znaleźć innego sposobu, aby to zrobić bez zwiększenia liczby bajtów.źródło
Common Lisp, 95 bajtów
Wypróbuj online!
źródło
Czysty , 83 bajty
Wypróbuj online!
źródło
Galaretka , 6 bajtów
1-indeksowany.
Wypróbuj online!
W jaki sposób?
Znajduje pierwszy
n
z sekwencji listy, a następnie dostarcza się z ogonaN
.Gdybyśmy
0
zostali uznani za liczbę naturalną, moglibyśmy zastosować pełny programẇ²$#Ṫ
z indeksowaniem 1 dla 5.źródło
Japt,
1211 bajtówSpróbuj
Spróbuj
źródło
Rubinowy , 45 bajtów
Wypróbuj online!
źródło
Java 8,
666563 bajtów-1 bajt dzięki @Shaggy .
-2 bajty dzięki @Arnauld .
1-indeksowany.
Wypróbuj online.
Wyjaśnienie:
źródło
Clojure , 81 bajtów
Wypróbuj online! (Niestety, TIO nie wydaje się obsługiwać standardowej biblioteki ciągów Clojure)
Jeśli Clojure miał krótszą składnię importu lub miał
includes?
metodę w bibliotece podstawowej, mogłoby to być nieco konkurencyjne.clojure.string/includes?
sam jest jednak dłuższy niż niektóre odpowiedzi tutaj: /Ponieważ łącze TIO jest zepsute, oto przebieg próbny. Liczba po lewej to indeks (
n
), a wynik (N
) znajduje się po prawej stronie:Powinno to być w stanie wesprzeć dowolną wartość
n
; pod warunkiem, że jesteś gotów czekać na zakończenie (znalezienie 50 do 100 liczb całkowitych w sekwencji zajęło około 15 minut). Clojure obsługuje dowolnie dużą arytmetykę liczb całkowitych, więc gdy liczby stają się ogromne, zaczyna używaćBigInt
s.źródło
Węgiel , 25 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. 0-indeksowane. Wyjaśnienie:
Wejście
n
.Zacznij
N
od 1. (Lub może to zacząć liczyć, od0
czego wejście 1-indeksowane).Powtarzaj, dopóki nie znajdziemy
n
liczb w sekwencji.Przyrost
N
.Jeśli
N*N
zawieraN
, to ...... zmniejszenie
n
.Drukuj
N
.Moje próby gry w golfa były dalej utrudnione przez węgiel a) brak posiadania
if..then
wyjątku na końcu bloku (który kosztuje 2 bajty) b) brakContains
operatora (przekształcenie wynikuFind
lubCount
w wartość logiczną, którą mógłbym odjąć odn
kosztów ponownie 2 bajty).źródło
Edycja (odpowiedź na komentarze): Python 2, 76 bajtów
Chciałem wypróbować metodę nierekurencyjną. (Nowy w golfie, wszelkie wskazówki byłyby świetne!)
Dzięki zarówno BMO, jak i Vedant Kandoi!
źródło
print(f(13))
w kodzie. Równieżwhile 1:
,if c==1:return n
,c==1 can be c<2
`
są zbędne, a jedna po nichc<2:
, następnie możesz mieszać tabulatory i spacje do wcięcia (jak pokazano tutaj ): 69 bajtów Btw. nie ma potrzeby przechowywania starej wersji (jest w historii edycji dla zainteresowanych) i dlaczego nie połączyć się z TIO (lub podobnym) / użyć tam szablonu?Haskell, 60 bajtów
Wypróbuj online!
źródło
Python 2 ,
4743 bajtów-4 bajty dzięki Dennisowi (dodanie 1 do wywołania rekurencyjnego zamiast powrotu
n-1
)Wypróbuj online!
Explantion / Ungolfed
źródło
APL (Dyalog Extended) ,
3130 bajtówWypróbuj online!
0-indeksowane.
źródło
(⍕⍺)⍷⍕
→⍺⍷⍥⍕
Perl 5
-p
, 33 bajtówWypróbuj online!
źródło
Lua ,
13712379 bajtów-dziękuje @Jo King za 44 bajty
Wypróbuj online!
źródło
false/true
może być0>1
/0<1
, nawiasy klamrowe nie są konieczne dlaif
si iwhile
s, możesz usunąć większość białych spacji po liczbach (nawet znaki nowej linii).Tcl , 82 bajty
Wypróbuj online!
źródło
proc S n {while {[incr j [regexp [incr i] [expr $i**2]]]-$n} {};return $i}
Tidy , 24 bajty
Wypróbuj online!
Zwraca leniwą listę, która wywołana jak funkcja zwraca
n
element th z serii.Wyjaśnienie
źródło