Wprowadzenie
Liczba pięciokątny ( A000326 ) jest generowana przez wzorze P n = 0,5 x (3n 2 N) . Lub możesz po prostu policzyć ilość użytych kropek:
Możesz użyć powyższego wzoru lub gif powyżej, aby znaleźć kilka pierwszych liczb pięciokątnych:
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, 176, 210, 247, 287, 330, 376, 425, 477, etc...
Następnie musimy obliczyć sumę x kolejnych liczb.
Na przykład, jeśli x = 4 , musimy spojrzeć na P n + P n + 1 + P n + 2 + P n + 3 (który składa się z 4 terminów). Jeśli suma liczb pięciokątnych również jest liczbą pięciokątną, nazwiemy to pięciokątną liczbą pięciokątną .
Dla x = 4 , najmniejsza ilość pięciokątny pięciokąt 330
, który jest wykonany z 4 kolejnych liczb pięcio-: 51, 70, 92, 117
. Więc kiedy wejście jest 4
, twój program funkcji powinien wypisać 330
.
Zadanie
- Gdy podano liczbę całkowitą większą niż 1, wyprowadza najmniejszą pięciokątną liczbę pięciokątną.
- Możesz podać funkcję lub program.
- Uwaga: Nie ma rozwiązań dla np. X = 3 . Oznacza to, że jeśli nie można utworzyć liczby z pierwszych 10000 liczb pięciokątnych, musisz przerwać obliczanie i wyprowadzić wszystko, co najbardziej ci odpowiada.
- To jest golf golfowy , więc wygrywanie z najmniejszą ilością bajtów wygrywa!
Przypadki testowe:
Input: 2
Output: 1926 (which comes from 925, 1001)
Input: 3
Output: ?
Input: 4
Output: 330 (which comes from 51, 70, 92, 117)
Input: 5
Output: 44290 (which comes from 8400, 8626, 8855, 9087, 9322)
Input: 6
Output: 651 (which comes from 51, 70, 92, 117, 145, 176)
Input: 7
Output: 287 (which comes from 5, 12, 22, 35, 51, 70, 92)
Input: 8
Output: ?
Input: 9
Output: 12105 (which comes from 1001, 1080, 1162, 1247, 1335, 1426, 1520, 1617, 1717)
Input: 10
Output: ?
Można również podać większe liczby:
Input: 37
Output: 32782
Input: 55
Output: 71349465
Input: 71
Output: 24565290
10001-x
x = 3
, co nie ma rozwiązania?9919
->496458299155
Odpowiedzi:
CJam, 29 bajtów
Wypróbuj online.
Uruchomienie zajmuje kilka sekund.
Wyjaśnienie
Najpierw musimy sprawdzić, ile liczb pięciokątnych musimy wziąć pod uwagę jako potencjalne sumy. Suma pierwszych 10 000 liczb pięciokątnych wynosi
500050000000
. Pierwsza liczba pięciokątna większa niż 577,380.Użyłem nieco zmodyfikowanego programu, aby znaleźć największe dane wejściowe, które dają niepuste rozwiązanie. Są to wszystkie rozwiązania dla nakładów większych niż 9 000:
źródło
Lua, 142 bajtów
Nie golfił
Tak dla odwracania tabel!
Aktualizacja 142 bajtów: Zapisano 10 bajtów, usuwając zbędne wywołanie funkcji „tonumber”.
źródło
Haskell, 109 bajtów
Zwroty
0
jeśli nie ma pięciokątnej liczby pięciokątnej.Przykład użycia (zakończenie zajmuje trochę czasu):
map (#take(10^4)p) [1..10]
->[1,1926,0,330,44290,651,287,0,12105,0]
.Jest to mniej więcej bezpośrednia implementacja definicji: jeśli suma pierwszych
x
elementów znajduje się na liście, wypisz ją, w przeciwnym razie spróbuj ponownie z ogonem listy. Zacznij od pierwszych 10 000 liczb pięciokątnych, zatrzymaj się i wróć,0
jeśli lista zawiera mniej niżx
elementy.źródło
PARI / GP, 71 bajtów
Podoba mi się ta
ispolygonal
funkcja w PARI / GP.źródło
Python 3, 144 bajty
To odwraca definicję liczby pięciokątnej; jeśli P (n) = (3n ^ 2-n) / 2, to dane P będzie liczbą pięciokątną iff (1 + sqrt (24 * P + 1)) / 6 jest liczbą całkowitą. (Technicznie powinien on również wyglądać na (1-sqrt (24 * P + 1)) / 6, ale to zawsze powinno być ujemne.) Również wykorzystuje spacje i tabulatory jako dwa różne poziomy wcięcia, jak sugerowano tutaj . Nie wyświetla niczego, jeśli nie może znaleźć pięciokątnej liczby pięciokątnej; Ufam, że to w porządku?
Mocno wierzę, że ktoś sprytniejszy ode mnie może znaleźć sposób, by jeszcze bardziej to skrócić, prawdopodobnie w pobliżu pętli for.
źródło
LabVIEW, 39 Prymitywy LabVIEW
Tym razem nie ma gif.
Węzeł matematyczny w pętli tworzy tablicę wszystkich liczb. Weź pod-tablicę, dodaj elementy, wyszukaj tę liczbę, jeśli znaleziono, weź indeks i zatrzymaj pętlę.
Niepoprawne wejście powoduje wyświetlenie najwyższej liczby pięciokątnej.
źródło
R,
114100 bajtównieprzygotowany (trochę)
źródło
Galaretka , 30 bajtów
Ten kod działa z tą wersją Jelly i jest równoważny z następującym kodem binarnym:
Jest to zdecydowanie zwolnić pamięć i głodny dla tłumacza on-line, ponieważ sprawdza pierwszy 150000000 dla pentagonality (149995000 dzieje się 10.000 th liczba pięciokątny).
Skracając zasięg do czegoś bardziej sensownego, możesz wypróbować online! dla wystarczająco małych nakładów.
Pomysł
Znanym rezultatem liczb pięciokątnych jest to, że x jest pięciokątny wtedy i tylko wtedy, gdy sqrt (24x + 1) - 1 jest podzielny przez 6 .
Zamiast obliczać pierwsze 10 000 liczb pięciokątnych, definiujemy łącze pomocnicze, które usuwa liczby niepentagonalne z danej tablicy. Dlaczego? Ponieważ najnowsza wersja Jelly, która poprzedza to wyzwanie, nie ma rozsądnego sposobu na przecięcie list ...
Kod
Galaretka, 21 bajtów (niekonkurencyjna)
Najnowsza wersja Jelly ma dwie nowe funkcje (nakładające się plasterki i filtrowanie / przecinanie list) oraz poprawkę błędu, która pozwala na znacznie niższą liczbę bajtów.
Ten kod działa dobrze na moim komputerze stacjonarnym, ale odrobinę spowalnia limit czasu TIO. Aby Spróbuj online!(w przypadku wystarczająco małych danych wejściowych) musimy ponownie zmniejszyć początkowy zakres.
Jak to działa
źródło
Matematyka 85 bajtów
szybkie wyszukiwanie do P 10 4 .
źródło
Aksjomat, 157 bajtów
niepoddane golfowi i wyniki
esplenacja: Możemy znaleźć n używając wyniku „a”, patrz poniżej
[użyj 1 + sqrt (...), ponieważ n> 0]
Powyższe oznacza, że jeśli istnieje jeden n0 taki, że
niż
Po tym, że musimy udowodnić, że p (n0) = a dla pewności (ponieważ nie zawsze tak jest)
Ale główną sztuczką byłoby zrobienie sumy
dopiero na początku i znajdź kolejne x elementów sumy, używając po prostu
i tak dalej dla innych sum (używając powyższej instrukcji a: = a + p (j + x) -p (j)). Oznacza to, że nie jest konieczne sumowanie jednej liczby x elementu wewnątrz pętli ...
źródło
Python 2 ,
128124 bajtówWypróbuj online!
źródło
JavaScript 93 bajty
źródło