Biorąc pod uwagę sekwencję OEIS A033581 , która jest sekwencją nieskończoną, n -ty termin (indeksowanie 0) jest określony wzorem formuły zamkniętej 6 × n 2 .
Twoim zadaniem jest napisanie kodu, który wyświetli wszystkie podzbiory zbioru N pierwszych liczb w sekwencji, tak aby suma podzbioru była kwadratem idealnym.
Zasady
- Liczba całkowita
N
jest podawana jako dane wejściowe. - Nie można ponownie użyć liczby już użytej w sumie. (to znaczy każda liczba może pojawić się w każdym podzbiorze maksymalnie raz)
- Użyte liczby mogą być nie następujące po sobie.
- Wygrywa kod o najmniejszym rozmiarze.
Przykład
Podana sekwencja to {0,6,24,54,96, ..., 15000}
Jednym z wymaganych podzbiorów będzie {6 244,294}, ponieważ
6+24+294 = 324 = 18^2
Musisz znaleźć wszystkie takie zestawy wszystkich możliwych długości w danym zakresie.
code-golf
math
sequence
subsequence
prog_SAHIL
źródło
źródło
Odpowiedzi:
05AB1E , 10 bajtów
Wypróbuj online!
W jaki sposób?
źródło
Haskell ,
114 104 10386 bajtówPodziękowania dla Laikoni i Ørjan Johansen za większość gry w golfa! :)
Wypróbuj online!
Nieco bardziej czytelna wersja:
źródło
Pyth , 12 bajtów
-2 bajty dzięki Mr. Xcoder
Wypróbuj online!
2 kolejne bajty muszą być dodane do usuwania
[]
i[0]
, ale wydaje się ważnym wyjściem do mnie!Wyjaśnienie
źródło
fsI@sT2ym*6*
.Czysty ,
145... 97 bajtówWypróbuj online!
Używa funkcji pomocniczej
@
do generowania zestawu mocy don
warunków poprzez połączenie każdego terminu[[],[6*n^2],...]
z każdym terminem[[],[6*(n-1)*2],...]
rekurencyjnie i w odwrotnej kolejności.Funkcja cząstkowa
f
jest następnie komponowana (gdzie->
oznaczao
kompozycję) jako:apply @ -> take the elements where -> the sum -> is a square
Niestety nie można pominąć literału
f=
funkcji częściowej i podać literału funkcji częściowej , ponieważ reguły pierwszeństwa wymagają, aby w nawiasie zastosowano nawiasy kwadratowe.źródło
Galaretka , 12 bajtów
Wypróbuj online!
Dane wyjściowe to lista podzbiorów, w tym
0
s i pusty podzbiór.źródło
Wolfram Language (Mathematica) , 49 bajtów
Podejście brutalnej siły
Wypróbuj online!
źródło
JavaScript (ES7), 107 bajtów
Próbny
Pokaż fragment kodu
Skomentował
źródło
Japt , 15 bajtów
Spróbuj
Wyjaśnienie
Wygeneruj na tablicy liczb całkowitych od 0 do input (
ò
) i przepuść każdą przez funkcję (_ Ã
), podnosząc ją do kwadratu (²
) i mutując przez 6 (*6
). Pobierz wszystkie kombinacje tej tablicy (à
) i usuń te, które zwracają truey (k
) po przejściu przez funkcję (_
), która dodaje ich elementy (x
), pobiera pierwiastek kwadratowy wyniku (¬
) i modyfikuje to przez 1 (u1
)źródło