1729, znany jako liczba Hardy'ego-Ramanujana , jest najmniejszą liczbą całkowitą dodatnią, którą można wyrazić jako sumę dwóch kostek liczb całkowitych dodatnich na dwa sposoby ( 12^3+1^3=10^3+9^3=1729
). Biorąc pod uwagę liczbę całkowitą n
(jako dane wejściowe w dowolnej formie naturalnej dla wybranego przez ciebie języka) znajdź najmniejszą liczbę całkowitą dodatnią, którą można wyrazić jako sumę dwóch liczb całkowitych dodatnich podniesionych do n
potęgi na dwa unikalne sposoby. Bez użycia źródeł zewnętrznych. Wygrywa niewiele postaci.
Należy pamiętać, że jest to rzeczywiście nierozwiązanym problemem dla n>4
. W przypadku tych liczb pozwól, aby Twój program działał wiecznie w poszukiwaniu lub zgiń próbując! Zrób tak, aby przy nieskończonym czasie i zasobach program rozwiązał problem.
źródło
n
potęgi”. W przeciwnym razie91
(nie1729
) jest rozwiązaniemn=3
, ponieważ6^3+(−5)^3=4^3+3^3=91
. Nauczyłem się tego z twojego linku do Wikipedii, więc może twoje referencje HM sprawiają, że jest to zbędne. Twoje zdrowie!1
jest to pierwsze rozwiązanie:1 = cbrt(0.5)^3 + cbrt(0.5)^3 = ...
Odpowiedzi:
APL
4541Krótsza, ale wolniejsza wersja 41 znaków:
Możesz wypróbować online , po prostu wklej funkcję i wywołaj ją z numerem:
(Algorytm jest jednak dość głupi, nie oczekuj, że interpreter online wyliczy n = 4)
Odpowiedź dla n = 2 to 50 = 5² + 5² = 7² + 1², ponieważ jest to liczba, która „może być wyrażona jako suma dwóch kwadratów liczb całkowitych dodatnich - nie mówi inaczej - na dwa sposoby”.
Jeśli chcesz dodać odrębną klauzulę, po prostu zmień
(v∘.≤v)
na tę(v∘.<v)
samą liczbę znaków, a n = 2 staje się 65:Pokonałem GolfScript? Nie może być !!
źródło
Ruby, 132
Przekaż
n
jako argument wiersza poleceń. Pierwsza liniastdout
to rozwiązanie.Zoptymalizowany pod kątem gry w golfa kodu, a nie wydajności. (Działa poprawnie. Ale wolno. Pracuje więcej niż jest to potrzebne.)
Oto dłuższy, nieco szybszy program C. Ten sam poprawny, ale okropny algorytm. (Naprawdę muszę przestudiować więcej teorii!)
Testowany na
n
= 2,n
= 3.C 234
Wersja C zaczyna
n
działaćstdin
. Jak wyżej, pierwszą linią dostdout
jest rozwiązanie.źródło
GolfScript 53
Dane wejściowe to liczba początkowa na stosie. Liczba na górze stosu na końcu jest odpowiedzią. Wyjaśnię to bardziej szczegółowo, kiedy będę miał szansę.
Na przykład
To jest teraz dość wolne. Liczy się również
0
(tak, że 25 jest odpowiedziąn=2
, ponieważ25=5^2+0^2=3^2+4^2
. Aby nie liczyć 0, dodaj 2 znaki(;
po pierwszym,
Aby to znaleźć
2 f=65
, odkąd65=8^2+1^2=5^2+6^2
źródło
GolfScript (30 znaków)
Uwaga: jest to dość powolne, ponieważ wykonuje wyszukiwanie z użyciem siły, a nie coś eleganckiego, jak kolejka priorytetowa. Najbardziej elegancką rzeczą jest ponowne użycie
N
jako dolnej granicy wyszukiwania: jest to ważne, ponieważ1^N + 2^N > N
dla wszystkichN
.Bierze
N
na stos i pozostawia odpowiedni stos taksówek na stosie. Aby wziąćN
ze standardowego, przygotuj~
.Powyższa wersja pozwala
x^N + x^N
(a więcN=2
daje50
). Wymagać dodając różne numery (podając65
zamiast), zmienić3
się4
. Aby pozwolić0^N + x^N
(dawanie25
), usuń)
bezpośrednio przedN?
.źródło
Mathematica, 58 znaków
Bardzo, bardzo wolne rozwiązanie wykorzystujące funkcję generowania:
źródło