Pendahuluan (dapat diabaikan)
Menempatkan semua angka positif dalam urutan regulernya (1, 2, 3, ...) agak membosankan, bukan? Jadi di sini adalah serangkaian tantangan seputar permutasi (perombakan) dari semua bilangan positif. Ini adalah tantangan keempat dalam seri ini (tautan ke tantangan pertama , kedua dan ketiga ).
Dalam tantangan ini, kita akan menjelajahi tidak hanya permutasi dari bilangan asli, tetapi seluruh dunia permutasi!
Pada tahun 2000, Clark Kimberling mengajukan masalah dalam edisi ke 26 Crux Mathematicorum , jurnal ilmiah matematika yang diterbitkan oleh Canadian Mathematical Society. Masalahnya adalah:
Apakah setiap bilangan bulat positif terjadi tepat sekali dalam urutan ini?
Pada 2004, Mateusz Kwasnicki memberikan bukti positif dalam jurnal yang sama dan pada 2008, ia menerbitkan bukti yang lebih formal dan (dibandingkan dengan pertanyaan awal). Dia merumuskan urutan dengan parameter dan :
Ia membuktikan bahwa untuk setiap sehingga adalah tidak rasional, urutan adalah permutasi dari alam nomor. Karena ada jumlah tak terbatas nilai dan yang benar, ini benar-benar seluruh dunia permutasi bilangan alami. Kami akan tetap dengan yang asli , dan untuk parameter ini, urutannya dapat ditemukan sebagai A050000di OEIS. 20 elemen pertamanya adalah:
1, 3, 9, 4, 2, 6, 18, 54, 27, 13, 39, 19, 57, 28, 14, 7, 21, 10, 5, 15
Karena ini adalah tantangan "urutan murni", tugasnya adalah mengeluarkan untuk input diberikan , di mana adalah A050000 .
Tugas
Diberikan input integer , output dalam format integer, di mana:
Catatan: pengindeksan berbasis 1 diasumsikan di sini; Anda dapat menggunakan pengindeksan berbasis 0, jadi , dll. Sebutkan ini dalam jawaban Anda jika Anda memilih untuk menggunakan ini.
Uji kasus
Input | Output
---------------
1 | 1
5 | 2
20 | 15
50 | 165
78 | 207
123 | 94
1234 | 3537
3000 | 2245
9999 | 4065
29890 | 149853
Aturan
- Input dan output adalah bilangan bulat (program Anda setidaknya harus mendukung input dan output dalam kisaran 1 hingga 32767)
- Input yang tidak valid (0, float, string, nilai negatif, dll.) Dapat menyebabkan output yang tidak terduga, kesalahan atau (tidak) perilaku yang ditentukan.
- Standar I / O aturan berlaku.
- Celah default dilarang.
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang
Jawaban:
Japt ,
1514 byte1-diindeks.
Cobalah
sumber
JavaScript (ES6),
55 5150 byteDisimpan 1 byte berkat @EmbodimentofIgnorance
Disimpan 1 byte berkat @tsh
Cobalah online!
sumber
n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
Jelly , 15 byte
Program lengkap yang menerima bilangan bulat,
n
(berbasis 1), dari STDIN yang mencetak hasilnya.Cobalah online!
Bagaimana?
sumber
05AB1E ,
1615 byteDisimpan 1 byte berkat Kevin Cruijssen .
Diindeks 0.
Cobalah online!
Penjelasan
Menggunakan
n=1
sebagai contohsumber
Perl 6 , 49 byte
-2 byte terima kasih kepada nwellnof
Cobalah online!
Mengembalikan elemen 0-diindeks dalam urutan. Anda dapat mengubah ini menjadi 1-diindeks dengan mengubah elemen awal menjadi
0,1
bukan1,3
Penjelasan:
sumber
J ,
4740 byteCobalah online!
ungolfed
Terjemahan langsung dari definisi ke J. Ini membangun dari bawah ke atas dengan menggunakan
^:
untuk beralih dari nilai awal berapa kali yang diperlukan.sumber
Java 10,
12099 byteCobalah online.
Penjelasan:
sumber
Haskell ,
6765 byteCobalah online!
Menggunakan pengindeksan berbasis 0.
EDIT: menyimpan 2 byte dengan menggunakan dan
elem
bukannyanotElem
mengganti kondisisumber
Jelly , 21 byte
Cobalah online!
Tautan monadik yang mengambil indeks-noln sebagai argumen dan kembali a ( n ) .
sumber
Ruby ,
545248 byteCobalah online!
sumber
C ++ (gcc) ,
189180 byte-9 byte untuk bermain golf kecil
Cobalah online!
Hitung urutan hingga
n
, lalu kembalikan elemen yang diinginkan. Lambat untuk indeks yang lebih besar.sumber
Python 2 , 66 byte
Cobalah online!
Menggunakan pengindeksan berbasis nol. Lambda tidak lebih dari secara rekursif membangun urutan dan kembali segera setelah indeks yang diperlukan tercapai.
sumber
Stax , 14 byte
Jalankan dan debug itu
Diindeks nol.
sumber
Bahasa Wolfram (Mathematica) , 63 byte
Cobalah online!
Ini diindeks 0
(Dalam TIO saya menambahkan -1 dalam setiap kasus uji)
sumber
Python 2 , 62 byte
Cobalah online!
Pengembalian
True
untuka(0)
. Diindeks 0.sumber
Python 3 ,
1051031009583 byte-2 byte terima kasih kepada agtoever
-12 byte terima kasih kepada ArBo
Cobalah online!
sumber
while len(s)<=n
dan mengganti i's dengan-1
. Ini harus mengurangi salah satu dari dua karakter.if
dariwhile
loop untuk memungkinkan satu-lapisan loop ituGaia ,
2220 byteCobalah online!
Indeks berbasis 0.
Kredit untuk Shaggy untuk pendekatan
;D
sumber
Haskell , 55 byte
Cobalah online!
Golf, metode daftar-generasi pengguna User1472751 yang apik .
Sama panjang:
Cobalah online!
sumber
Lua , 78 byte
Cobalah online!
sumber
z
variabel dan mengubah pernyataan if ke ternary