Podając liczbę naturalną n
, zwróć n
-ty numer Leyland .
Numer Leylandu
Liczby Leylanda są dodatnimi liczbami całkowitymi k
postaci
k = x^y + y^x
Gdzie x,y
liczby całkowite są ściśle większe niż 1.
Są one wyliczone w porządku rosnącym.
EDYCJA: @DigitalTrauma zasugerował dołączenie następującej „definicji”:
Wyobraźmy sobie, że rzucać
x^y+y^x
w torbie dla wszystkich możliwych wartościx
ay
i unikać rzucania w dwóch powtórzeniach. Następnie sortujemy tę torbę. Posortowana torba to nasza sekwencja.
Detale
Możesz użyć indeksowania opartego na 0 lub 1, cokolwiek najbardziej ci odpowiada.
Twój program musi mieć możliwość wypisania co najmniej wszystkich liczb Leyland mniejszych niż maksymalna liczba 32-bitowa ze znakiem. (Ostatni numer Leyland poniżej tego limitu to 1996813914
indeks 82
).
Przypadki testowe
Pierwsze kilka warunków jest następujące:
8, 17, 32, 54, 57, 100, 145, 177, 320, 368, 512, 593, 945, 1124
A076980 w OEIS, z wyjątkiem pierwszego wpisu. Zauważ, że z powodu tego dodatkowego pierwszego wpisu wskaźniki OEIS są przesunięte o jeden.
Więcej można znaleźć w pliku b OEIS
They are enumerated in ascending order
Nie jestem pewien, co to znaczy. Czy możesz podać listę xiy?8
jest wcześniej17
, a nie na odwrót.x^y+y^x
do torby wszystkie możliwe wartościx
iy
, i unikamy twworzenia w duplikatach. Następnie sortujemy tę torbę. Posortowana torba to nasza sekwencja.Odpowiedzi:
MATL ,
161513 bajtówWyjście jest oparte na 1.
Wypróbuj online!
Wyjaśnienie
źródło
unique
sortuje elementy. Czy to też nie jest w MATL?'stable'
flagi,unique
ponieważ jest to bardziej typowe użycie.t!^
(gdzie^
mogą być zastąpione+
,-
lub dowolną liczbę operatorów) motywem dużo. Co jeśli zrobimy&
średnią 1 dla niektórych z tych, dla których wektor ma takie zachowanie?Haskell, 52 bajty
Naprawdę nieefektywny. Sprawdza każdą liczbę naturalną pod kątem liczby Leylanda, tworząc nieskończoną listę tych, które są. Biorąc pod uwagę dane wejściowe, pobiera ten element indeksu z listy. Używa, że tylko
x,y
32 liczby muszą być sprawdzone dla 32-bitowych liczb całkowitych.Ta sama długość z
filter
:źródło
Java 8,
225221219216206204193192 bajty0-indeksowane
-2 bajtów (221 → 219) zastępując zapisane
1996813915
ze(1L<<31)
dzięki @LeakyNun .-3 bajtów (219 → 216) dzięki @LeakyNun i @Frozn z czegoś, co zapomniał się ..
-10 bajtów (216 → 206) poprzez zmianę Java 7 do 8.
-2 bajtów (206 → 204), zastępując
ArrayList
przyVector
dzięki @TAsk .-11 bajtów (204 → 193) przez usunięcie
s<(1L<<31)&
, ponieważ pytanie zawiera „ co najmniej wszystkie liczby Leyland mniejsze niż maksymalna liczba 32-bitowa ze znakiem ”.-1 bajt (193 → 192), zmieniając
Vector
naStack
.Wyjaśnienie:
Wypróbuj tutaj
źródło
2^31-1
( do podpisu int), czy nie możesz zamienić kilkulong
obsad?import java.util.*;long c(int n){List<Long>t=new ArrayList();for(int i=2,j;i<25;i++)for(j=2;j<25;j++){long s=(long)(Math.pow(i,j)+Math.pow(j,i));if(s<(1L<<31)&!t.contains(s))t.add(s);}Collections.sort(t);return t.get(n);}
for (int i = 1, j; ++i < 30;)
ifor (j = 1; ++j < 30;)
Pyth, 17 bajtów
0-indeksowane.
Wypróbuj online! (Proszę, trzymaj to na 100.)
Jak to działa
Wolniejsza wersja
1-indeksowany.
Wypróbuj online! (Proszę zachować 3).
źródło
MATLAB, 58 bajtów
1-indeksowany
unique
w MATLAB spłaszcza i sortuje macierz.Dzięki za pomoc dla @FryAmTheEggman i @flawr .
źródło
05AB1E,
2019 bajtów0-indeksowane
Wyjaśnił
Wypróbuj online
Zapisano 1 bajt dzięki @Adnan
źródło
ÝÌ
jest krótka>L>
.ê
jest posortowane_jednoznaczne, jeśli istniało, gdy zostało o to poproszone.Mathematica,
604840 bajtówUżywa indeksowania opartego na jednym.
Union
jest stosowany przez zastosowanie go między każdym rzędem matrycy 2D utworzonej przezArray
. TamUnion
spłaszczy macierz 2D do listy, usuwając jednocześnie duplikaty i ustawiając wartości w posortowanej kolejności.Zaoszczędzono 8 bajtów dzięki @ LLlAMnYP .
Stosowanie
źródło
{#+1,#+1}
nie jest konieczne, można je pozostawić{#,#}
i{2,2}
można je po prostu zastąpić2
.Array
że rozwinie trzeci argument.Galaretka, 14 bajtów
2 bajty dzięki Dennisowi.
Wypróbuj online! (Zajmuje mi około 1 s za 82) (czas O (n ^ 2))
Oryginalna 16-bajtowa odpowiedź
Wypróbuj online! (Trwa dla mnie <1s) (Stały czas)
źródło
R‘*€¹$+Z$FṢQị@
jest szybszy, krótszy i nie ma sztucznej górnej granicy.Narzędzia Bash + GNU, 63
Indeksowanie 1. Wygląda na to, że jest to prawie to samo podejście, co odpowiedź @ TimmyD . Zamiast zagnieżdżonych pętli, rozwinięcie nawiasu klamrowego jest używane do generowania wyrażeń arytmetycznych, które są przesyłane potokowo do
bc
oceny.Ideone.
źródło
Perl 6 ,
60 5856 bajtówTest:
Wyjaśnienie:
źródło
sort [
i] 2..31
?sort([...
w dostęp do tablicy dla terminusort[...
. Podobnie dzieje się z drugą przestrzenią.F #,
117, 104Welp, jest on krótszy niż przynajmniej moja odpowiedź w języku C #.
Zaoszczędź 13 bajtów dzięki Reedowi Copseyowi na czacie F #.
źródło
PowerShell v2 +,
847368 bajtówZapisano 11 bajtów dzięki @Neil ... zaoszczędzono dodatkowe 5 bajtów, reorganizując sposób oceny
iex
wyrażenia.Naiwna metoda, po prostu podwajamy pętlę od
x=2..30
iy=2..x
. Każda pętla, którą umieszczamyx^y + y^x
w rurociągu.30
Został wybrany eksperymentalnie w celu zapewnienia, że omówiliśmy wszystkie przypadki mniej niż2^31-1
;-). Rurujemy je,Sort-Object
aby zamówić je rosnąco. Dane wyjściowe są zerowane na podstawie danych wejściowych$args[0]
.Tak, generowanych jest tutaj wiele obcych wpisów - ten algorytm faktycznie generuje 435 liczb Leylandu - ale rzeczy powyżej indeksu
81
nie są gwarantowane, aby były dokładne i uporządkowane (niektóre mogą zostać pominięte).Przykłady
źródło
R
58 58bajtów1-indeksowany. Wyeliminowano 4 bajty za pomocą
pryr::r
zamiastfunction
.Wyjaśnienie
Dla wszystkich liczb od 2 do 99 i od 2 do 9
zastosować funkcję
x^y+y^x
. Generuje to macierz 98x8.Posortuj tę macierz (zmuszając ją do wektora):
Usuń wszystkie nieunikalne wartości:
Odczytaj
n
ze standardowego wejścia i pobierzn
numer th z listy:źródło
JavaScript (Firefox 42-57), 94 bajty
Potrzebuje przeglądarki Firefox 42, ponieważ wykorzystuje zarówno wyrażenia tablicowe, jak i potęgowanie (
[for(..of..)]
i**
).źródło
[for...of]
trafił do ES7.for(..of..)
nie tak[for(..of..)]
.Haskell,
9998969594 bajtówPrawdopodobnie łatwo go obezwładnić, ale to było najlepsze, co mogłem wymyślić.
źródło
toInteger
w moim rozwiązaniu, będziemy mieli przepełnienieint
, ponieważ iterujemy znacznie wyżej (don+3
zamiastn
) podczas pracy z listą. W przeciwnym razie musielibyśmy zakodować pierwsze cztery warunki. Co dokładnie robitoEnum
w twoim rozwiązaniu?f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!)
.toEnum
konwertuje Int na Enum, a Integer jest instancją klasy Enum, więc tutaj toEnum konwertuje n + 3 na Integer.Python 3,
7669 bajtów0-indeksowane.
https://repl.it/C2SA
źródło
r=range(2,32)
lambda n:sorted(…)[n]
C #,
141, 127 bajtów.Oh c #, jesteś takim długim językiem.
Jest to lambda, którą należy przypisać do
delegate double del(int n);
uruchomienia, jako taką:źródło
Enumerable.Range(
do zmiennej / funkcji / iteratora / czegokolwiek o krótszej nazwie dla odwołania?SQL (PostgreSQL 9.4), 171 bajtów
Sporządzono jako przygotowane oświadczenie. Wygeneruj kilka serii 2 - 99, połącz krzyżowo i wykonaj równanie. Gęsto uszereguj wyniki, aby je zindeksować i wybierz pierwszy wynik o randze liczby całkowitej.
Wykonano w następujący sposób
Skończyło się to dużo szybciej niż się spodziewałem
źródło
J, 29 bajtów
Używa indeksowania opartego na jednym. Konwersja z mojego rozwiązania Mathematica .
Tajemnicą jest to, że mam
:(^+^~)
po swojej stronie.Stosowanie
Wyjaśnienie
Poważniej,
źródło
Swift 3, 138 bajtów
Nieskluczony kod
Wypróbuj tutaj
źródło
Axiom 148 bajtów
jakiś przykład
Wpisz: List Integer
źródło
Perl 5 , 70 + 1 (-p) = 71 bajtów
Wypróbuj online!
źródło
Rubin ,
6258 bajtówWypróbuj online!
źródło
J,
3831 bajtów0-indeksowane.
Stosowanie
źródło
Java,
200197 bajtów0-indeksowane
Wygląda na to, że strumienie Java mogą faktycznie oszczędzać bajty! Kto by pomyślał?!
Nie golfowany:
Edycje:
long[]
i usunięto nawias wokółn
.źródło
Python 3, 129-> 116 bajtów
Wiem, że istnieje krótsza odpowiedź na pytanie 3, ale nadal chciałem wnieść swoje rozwiązanie.
To był najlepszy sposób, w jaki mogłem myśleć o przejściu przez wszystkie wartości x i wszystkie wartości y. Byłoby to mile widziane, gdyby ktoś mógł zagrać w golfa w moim podejściu
źródło
t
set
for
t.add(q)
APL (Dyalog) , 27 bajtów
Wypróbuj online!
źródło
Japt
-g
, 15 bajtówSpróbuj
źródło