Czasami zasypiam, liczę tak wysoko, jak potrafię, pomijając liczby, które nie są kwadratowe . Czuję dreszczyk emocji, gdy mogę pominąć kilka liczb z rzędu - na przykład, 48,49,50
wszystkie NIE są kwadratowe (48 jest podzielne przez 2 ^ 2, 49 przez 7 ^ 2 i 50 przez 5 ^ 2).
Doprowadziło mnie to do zastanowienia się nad najwcześniejszym przykładem sąsiednich liczb podzielnych przez jakąkolwiek dowolną sekwencję dzielników.
Wkład
Dane wejściowe to uporządkowana lista a = [a_0, a_1, ...]
ściśle dodatnich liczb całkowitych zawierająca co najmniej 1 element.
Wydajność
Dane wyjściowe to najmniejsza dodatnia liczba całkowita n
z właściwością, która a_0
dzieli n
, a_1
dzieli n+1
i bardziej ogólnie a_k
dzieli n+k
. Jeśli takiego nie n
ma, zachowanie funkcji / programu nie jest zdefiniowane.
Przypadki testowe
[15] -> 15
[3,4,5] -> 3
[5,4,3] -> 55
[2,3,5,7] -> 158
[4,9,25,49] -> 29348
[11,7,5,3,2] -> 1518
Punktacja
To jest golf golfowy ; najkrótszy wynik (na język) wygrywa prawo do chwalenia się. Zwykłe luki są wykluczone.
Odpowiedzi:
Wolfram Language (Mathematica) , 51 bajtów
Wypróbuj online!
źródło
Łuska , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
MATL , 11 bajtów
Wypróbuj online!
Niezupełnie zoptymalizowany pod kątem prędkości ... największa testowa metoda zajmuje MATLAB i około 0,03 s na MATLAB. Istnieje niewielka możliwość, że MATL ma nieco więcej kosztów ogólnych.
źródło
n:q`QtG\a]1)
na 12 bajtów, alen:
jest oczywiście taki sam jakf
tutaj. Zawsze o tym zapominam, więc możesz dodać to jako alternatywne 11 bajtów.fq`QtG\a}@
zwraca obcą kopię danych wejściowych.JavaScript,
4240 bajtówZgłasza błąd rekurencji, jeśli nie ma rozwiązania (lub rozwiązanie jest zbyt duże).
Zapisano 2 bajty ze wskaźnikiem od Ricka Hitchcocka
Spróbuj
Wpisz listę liczb oddzieloną przecinkami.
źródło
[4,9,25,49]
.(a,y=n=0)=>a.some(x=>y++%x)?f(a,++n):n
f=
jednak.Python 3 , 62 bajty
Wypróbuj online!
źródło
05AB1E , 9 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Haskell ,
4544 bajtówWypróbuj online!
Edycja: -1 bajtów dzięki nim!
źródło
sum(zipWith mod[n..]a)<1
.Czysty , 61 bajtów
Wypróbuj online!
źródło
[1..]
zamiast list[0..]
wyjściowych nie należy wypisywać0
dodatniej liczby całkowitej.Pyth , 11 bajtów
Wypróbuj online!
źródło
2
na końcu? Jestem pewien, że jest tu więcej do uratowania, ale nie znam Pytha.2
rozwiązuje problemJ , 23 bajty
Wypróbuj online!
źródło
I.
zwróci tylko 1 wynik? Czy nie jest możliwe, że jest ich wiele?R , 51 bajtów
Wypróbuj online!
Zastosowanie
any
rzucak
ostrzeżenia o niejawnej konwersji nalogical
, gdziek
jest wartość zwracana.źródło
l=c(15)
, ponieważseq(l)==1:l
w takim przypadku.seq
jest tak denerwujące!seq_along
jest po prostu za długie.sum
zamiastany
pozbyć się tych ostrzeżeń, FYI.Perl 6 , 34 bajtów
Wypróbuj online!
źródło
APL (Dyalog Unicode) ,
24 2322 bajtówWypróbuj online!
Technicznie jest to funkcja ukryta. Musiałem to zrobić, ponieważ jedynym dozwolonym wejściem jest lista liczb całkowitych. Zastosowania
⎕IO←0
(indeksowanie 0)Warto zauważyć, że funkcja przekroczy limit czasu, jeśli
n
nie istnieje.Dzięki @ngn i @ H.PWiz za 1 bajt każdy.
W jaki sposób?
źródło
Perl 5 , 49 + 2 (
-pa
) = 51 bajtówWypróbuj online!
źródło
Japt, 10 bajtów
W końcu zostanie wygenerowany,
undefined
jeśli nie ma rozwiązania, jeśli nie spowoduje to awarii przeglądarki w pierwszej kolejności.Spróbuj
Wyjaśnienie
źródło
Rubinowy , 48 bajtów
Wypróbuj online!
źródło
Python 2 , 80 bajtów
Wypróbuj online!
źródło
Standardowy ML (MLton) , 96 bajtów
Wypróbuj online!
Nie golfowany:
Wypróbuj online! Począwszy od
n=1
, funkcjaf
zwiększa sięn
do momentuall
spełnienia warunku, w którymn
to przypadku jest zwracana.tabulate(m,g)
z jakąś liczbą całkowitąm
i funkcjąg
buduje listę[g 0, g 1, ..., g m]
. W naszym stanietabulate
jest wywoływany z długością listy danych wejściowychl
i funkcją, która sprawdza, czyi
element thl
dzielin+i
. Daje to listę wartości logicznych, więcall
funkcja tożsamościfn x=>x
sprawdza, czy wszystkie elementy są prawdziwe.Znalazłem fajną sztuczkę golfową, aby skrócić funkcję identyfikacji w tym przypadku o cztery bajty: Zamiast lambda
(fn x=>x)
, build-funkcjahd
jest używana, który zwraca pierwszy element listy, a powstałe bools wtabulate
owinięto w[
i]
do tworzyć listy singletonów.źródło
PowerShell ,
6562 bajtówWypróbuj online!
PowerShell nie ma odpowiednika
any
lubsome
lub tym podobne, więc musimy nieco innego podejścia.Pobiera dane wejściowe
$args[0]
jako tablicę, a następnie wchodzi w nieskończonąfor
pętlę. Każda iteracja ustawiamy$o
się1
(wyjaśnione później), i ustawić$i
się++$j
. Inkrementacja$j
śledzi, jaka jest pierwsza liczba proponowanego rozwiązania, podczas gdy$i
będzie się zwiększać w stosunku do reszty proponowanego rozwiązania.Następnie wysyłamy każdy element wejścia
$args[0]
doForEach-Object
pętli. Wewnątrz wewnętrznej pętli logicznie mnożymy się$o
do wyniku obliczeń. Sprawi to, że jeśli obliczenie nie powiedzie się dla wartości,$o
zwróci się do0
. Obliczenie to!($i++%$_)
lub logiczna operacja modulo. Ponieważ każda niezerowa wartość jest prawdziwa w PowerShellu, zmienia to resztę w wartość falsey, w ten sposób zamieniając się$o
w0
.Poza wewnętrzną pętlą
if
$o
jest niezerowa, znaleźliśmy rozwiązanie zwiększające, które działa, więc generujemy$j
iexit
.źródło
tinylisp , 108 bajtów
Ostatni wiersz to nienazwana funkcja lambda, która pobiera listę i zwraca liczbę całkowitą. Wypróbuj online!
Bez golfa
źródło
Julia 0.6 , 79 bajtów
Wypróbuj online!
Wejścia bez ważnego rozwiązania spowodują nieskończone zapętlenie ... :)
źródło
Python 2, 78 bajtów
EDYCJA: -26 dzięki @Chas Brown
źródło
Galaretka , 10 bajtów
Wypróbuj online!
źródło
APL NARS, 140 bajtów, 70 znaków
test
źródło
Java 8,
8275 bajtówWyjaśnienie:
Wypróbuj online.
źródło
Ruby ,
47 46 4342 bajtówWypróbuj online!
Uwaga:
(1..)
składnia jest obsługiwana tylko w Ruby 2.6, na razie TIO obsługuje tylko 2.5, więc link jest do starszej wersji (43 bajty).źródło