Diberi nomor alami n
, kembalikan nomor Leylandn
-th .
Nomor Leyland
Angka Leyland adalah bilangan bulat positif k
dari formulir
k = x^y + y^x
Di mana x,y
bilangan bulat benar-benar lebih besar dari 1.
Mereka disebutkan dalam urutan menaik.
EDIT: @DigitalTrauma menyarankan saya menyertakan "definisi" berikut:
Bayangkan kita melempar
x^y+y^x
tas untuk semua nilai yang mungkinx
dany
, dan menghindari melempar duplikat. Lalu kami menyortir tas itu. Tas yang diurutkan adalah urutan kami.
Detail
Anda dapat menggunakan pengindeksan berbasis 0 atau 1, apa pun yang paling sesuai untuk Anda.
Program Anda harus dapat mengeluarkan setidaknya semua angka Leyland kurang dari maksimum bilangan bulat 32-bit yang ditandatangani. (Angka Leyland terakhir di bawah batas ini adalah 1996813914
, pada indeks 82
.)
Uji kasus
Beberapa istilah pertama adalah sebagai berikut:
8, 17, 32, 54, 57, 100, 145, 177, 320, 368, 512, 593, 945, 1124
A076980 di OEIS, kecuali untuk entri pertama. Perhatikan bahwa karena entri pertama tambahan itu, indeks pada OEIS digeser oleh satu.
Lebih banyak dapat ditemukan di file-O OIS
They are enumerated in ascending order
Saya tidak begitu yakin apa artinya ini. Bisakah Anda memberikan daftar x dan y?8
sebelumnya17
, bukan sebaliknya.x^y+y^x
tas untuk semua kemungkinan nilaix
dany
, dan menghindari memasukkan duplikat. Lalu kami menyortir tas itu. Tas yang diurutkan adalah urutan kami.Jawaban:
MATL ,
161513 byteOutput berbasis 1.
Cobalah online!
Penjelasan
sumber
unique
macam elemen. Bukankah di MATL juga?'stable'
flagunique
secara default karena ini adalah penggunaan yang lebih umum.t!^
(di mana^
dapat diganti dengan+
,-
atau sejumlah operator) motif banyak. Bagaimana jika kita membuat&
1 input berarti untuk beberapa di mana untuk vektor itu memiliki perilaku itu?Haskell, 52 byte
Sangat tidak efisien. Menguji setiap bilangan alami untuk menjadi bilangan Leyland, membuat daftar tak terbatas dari mereka. Diberikan input, ambil elemen indeks dari daftar. Menggunakan hanya
x,y
31 yang perlu diperiksa untuk bilangan bulat 32 bit.Panjang yang sama dengan
filter
:sumber
Java 8,
225221219216206204193192 byteDiindeks 0
-2 byte (221 → 219) disimpan dengan mengganti
1996813915
dengan(1L<<31)
terima kasih kepada @LeakyNun .-3 byte (219 → 216) berkat @LeakyNun dan @Frozn dengan sesuatu yang aku lupa diri ..
-10 byte (216 → 206) dengan mengubah Java 7 sampai 8.
-2 byte (206 → 204) dengan mengganti
ArrayList
denganVector
berkat @Tanyakan .-11 byte (204 → 193) dengan menghapus
s<(1L<<31)&
, karena pertanyaan menyatakan " setidaknya semua angka Leyland kurang dari maksimum bilangan bulat 32-bit yang ditandatangani ".-1 byte (193 → 192) dengan mengubah
Vector
keStack
.Penjelasan:
Coba di sini
sumber
2^31-1
(yaitu, int yang ditandatangani), tidak bisakah Anda menukar sekelompoklong
pemain?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;)
danfor (j = 1; ++j < 30;)
Pyth, 17 byte
Diindeks 0.
Cobalah online! (Tolong, simpan di 100.)
Bagaimana itu bekerja
Versi lebih lambat
1-diindeks.
Cobalah online! (Tolong, simpan di 3.)
sumber
MATLAB, 58 byte
1-diindeks
unique
di MATLAB meratakan dan mengurutkan matriks.Terima kasih atas bantuan untuk @FryAmTheEggman dan @flawr .
sumber
05AB1E,
2019 byteDiindeks 0
Dijelaskan
Cobalah online
Disimpan 1 byte berkat @Adnan
sumber
ÝÌ
kependekan dari>L>
.ê
diurutkan_unitkuifikasi, jika itu ada ketika ini diminta.Mathematica,
604840 byteMenggunakan pengindeksan berbasis satu.
Union
digunakan dengan menerapkannya di antara setiap baris dari matriks 2D yang dibuat olehArray
. Di sana,Union
akan meratakan matriks 2D ke dalam daftar sementara juga menghapus duplikat dan menempatkan nilai-nilai dalam urutan diurutkan.Disimpan 8 byte berkat @ LLlAMnYP .
Pemakaian
sumber
{#+1,#+1}
tidak perlu, bisa dibiarkan begitu saja{#,#}
dan{2,2}
bisa diganti dengan sederhana2
.Array
akan memperluas argumen ketiga.Jelly, 14 byte
2 byte berkat Dennis.
Cobalah online! (Membawa ~ 1s untuk 82 untuk saya) (O (n ^ 2) waktu)
Jawaban 16 byte asli
Cobalah online! (Membawa <1s untuk saya) (Waktu konstan)
sumber
R‘*€¹$+Z$FṢQị@
lebih cepat, lebih pendek dan tidak memiliki batas atas buatan.Utilitas Bash + GNU, 63
Pengindeksan berbasis 1. Sepertinya ini pendekatan yang hampir sama dengan jawaban @ TimmyD . Alih-alih bersarang loop, ekspansi bash brace digunakan untuk menghasilkan ekspresi aritmatika yang disalurkan
bc
untuk evaluasi.Ideone.
sumber
Perl 6 ,
60 5856 byteUji:
Penjelasan:
sumber
sort [
dan] 2..31
?sort([...
ke akses array suatu istilahsort[...
. Hal serupa terjadi dengan ruang lainnya.F #,
117, 104Yah, setidaknya lebih pendek dari jawaban C # saya.
Disimpan 13 byte berkat Reed Copsey di chatroom F #.
sumber
PowerShell v2 +,
847368 byteDisimpan 11 byte berkat @Neil ... disimpan tambahan 5 byte dengan mengatur ulang bagaimana
iex
ekspresi dievaluasi.Metode naif, kita cukup menggandakan untuk loop dari
x=2..30
dany=2..x
. Setiap loop kami letakkanx^y + y^x
di pipeline. Itu30
dipilih secara eksperimental untuk memastikan bahwa kami membahas semua kasus kurang dari2^31-1
;-). Kami mengirim mereka keSort-Object
untuk memesan mereka naik. Output diindeks nol berdasarkan input$args[0]
.Ya ada banyak entri asing yang dihasilkan di sini - algoritme ini benar-benar menghasilkan 435 angka Leyland - tetapi hal-hal di atas indeks
81
tidak dijamin akurat dan teratur (mungkin ada beberapa yang dilewati).Contohnya
sumber
R,
5854 byte1-diindeks. Dieliminasi 4 byte dengan menggunakan
pryr::r
bukanfunction
.Penjelasan
Untuk semua angka dari 2 hingga 99, dan 2 hingga 9,
terapkan fungsinya
x^y+y^x
. Ini menghasilkan matriks 98x8.Sortir matriks ini (memaksa ke vektor):
Hapus semua nilai non-unik:
Baca
n
dari stdin, dan ambiln
nomor th dari daftar:sumber
JavaScript (Firefox 42-57), 94 byte
Membutuhkan Firefox 42 karena menggunakan baik pemahaman array dan eksponensial (
[for(..of..)]
dan**
).sumber
[for...of]
berhasil ES7.for(..of..)
, bukan itu[for(..of..)]
.Haskell,
9998969594 byteItu mungkin mudah dikalahkan, tapi itu yang terbaik yang bisa saya lakukan.
sumber
toInteger
dalam solusi saya, kita akan menggunakan overflowint
, karena kita beralih jauh lebih tinggi (untukn+3
bukann
) ketika bekerja dengan daftar. Kalau tidak, kita perlu melakukan hardcode pada empat istilah pertama atau lebih. Apa yang sebenarnyatoEnum
dilakukan dalam solusi Anda?f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!)
.toEnum
mengkonversi Int ke Enum, dan Integer adalah turunan dari kelas Enum sehingga toEnum di sini mengonversi n + 3 menjadi Integer.Python 3,
7669 byteDiindeks 0.
https://repl.it/C2SA
sumber
r=range(2,32)
lambda n:sorted(…)[n]
C #,
141, 127 byte.Oh c #, kamu bahasa yang sangat panjang.
Ini adalah lambda yang perlu ditugaskan untuk
delegate double del(int n);
dijalankan, seperti:sumber
Enumerable.Range(
ke variabel / fungsi / iterator / apa pun dengan nama pendek untuk reuisng?SQL (PostgreSQL 9.4), 171 byte
Dilakukan sebagai pernyataan yang disiapkan. Hasilkan sepasang seri 2 - 99, silang bergabung dengan mereka dan lakukan persamaan. Beri peringkat hasil secara padat untuk mengindeksnya dan pilih hasil pertama yang memiliki peringkat input bilangan bulat.
Dieksekusi sebagai berikut
Ini akhirnya berjalan jauh lebih cepat dari yang saya harapkan
sumber
J, 29 byte
Menggunakan pengindeksan berbasis satu. Konversi dari solusi Mathematica saya .
Rahasia sebenarnya di sini adalah yang saya miliki
:(^+^~)
di pihak saya.Pemakaian
Penjelasan
Lebih serius,
sumber
Swift 3, 138 byte
Kode tidak dikunci
Coba di sini
sumber
Aksioma 148 byte
beberapa contoh
Jenis: Daftar Integer
sumber
Perl 5 , 70 + 1 (-p) = 71 byte
Cobalah online!
sumber
Ruby ,
6258 byteCobalah online!
sumber
J,
3831 byteDiindeks 0.
Pemakaian
sumber
Java,
200197 byteDiindeks 0
Sepertinya aliran java benar-benar dapat menyimpan byte! Siapa yang akan berpikir ?!
Tidak Disatukan:
Suntingan:
long[]
dan menghapus tanda kurung sekitarn
.sumber
Python 3, 129-> 116 byte
Saya tahu ada jawaban python 3 yang lebih pendek, tetapi saya masih ingin berkontribusi solusi saya.
Ini adalah cara terbaik yang saya bisa pikirkan untuk menangani semua nilai untuk x dan semua nilai untuk y. Kalau ada yang bisa golf pendekatan saya itu akan dihargai
sumber
t
sebuahset
bukannya daftar, dan mengganti yang terakhirfor
pernyataan dengan polost.add(q)
.APL (Dyalog) , 27 byte
Cobalah online!
sumber
Japt
-g
, 15 byteCobalah
sumber