Mari kita tentukan urutan bilangan bulat positif. Kami akan menentukan urutan pada angka genap menjadi dua kali lipat dari istilah sebelumnya. Indeks ganjil dari urutan akan bilangan bulat positif terkecil yang belum muncul dalam urutan.
Berikut adalah istilah pasangan pertama.
1,2,3,6,4,8,5,10,7,14,9,18,11,22,12,24,13,26,15,30
Anda juga dapat menganggap ini sebagai daftar pasangan berpasangan (n, 2n) di mana n adalah bilangan bulat positif yang paling tidak terpakai sejauh ini.
Tugas
Diberi angka n sebagai input, hitung suku ke- n dalam urutan ini.
Ini adalah kode-golf sehingga Anda harus berusaha meminimalkan ukuran kode sumber Anda yang diukur dalam byte.
(n,2n)
dan setiap nomor hanya muncul sekali. Setiap pasangan dipilih untuk menjadi sekecil mungkin sambil mematuhi batasan yang terakhir.Jawaban:
Haskell, 40 byte
Berbasis nol.
l
secara bertahap membangun urutan dari daftar malas dari bilangan bulat yang tersisa.sumber
JavaScript (ES6),
9282696765 byteBagaimana?
Kami melacak:
Secara internal, kami menggunakan indeks berbasis 0 i . Karena itu perilaku aneh dan genap terbalik:
Pada posisi ganjil, nilai selanjutnya adalah sederhana
2 * b
.Pada posisi genap, kami menggunakan fungsi rekursif g () dan tabel pencarian a untuk mengidentifikasi nilai pencocokan terkecil:
Untuk menyimpan beberapa byte, saya diinisialisasi
{}
daripada0
. Ini memaksa kami untuk menggunakan:i^n
untuk membandingkan i dengan n karena({}) ^ n === n
sedangkan({}) - n
mengevaluasi keNaN
.-~i
untuk menambah i , karena({}) + 1
akan menghasilkan string.Demo
Tampilkan cuplikan kode
sumber
Python 3 ,
807269 byte-7 byte terima kasih kepada Tn. Xcoder !
Cobalah online!
sumber
set(...)
dengan `{* ...} untuk 78 byte{*...}
bukanset(...)
.{...for...in...}
akan ada lebih banyak ucapan selamat tinggal.True
untuk 1)Jelly , 15 byte
Cobalah online!
sumber
Matematika ,
5653 byte-3 byte terima kasih JungHwan Min !
Cobalah online!
Berdasarkan ekspresi Mathematica yang diberikan dalam tautan OEIS.
sumber
Nest[k=0;If[#~FreeQ~++k,#~Join~{k,2k},#]&,{},#][[#]]&
PHP , 64 byte
Cobalah online!
PHP , 77 byte
Cobalah online!
PHP , 78 byte
Cobalah online!
sumber
PHP, 56 byte
PHP,
7572 byteCobalah online
sumber
05AB1E ,
161514 byte1-diindeks.
Menggunakan fakta bahwa representasi biner elemen pada indeks ganjil dalam urutan berakhir dengan angka genap genap: A003159 .
Cobalah online!
Penjelasan
sumber
Python 2 ,
595149 byteCobalah online!
Latar Belakang
Setiap bilangan bulat n positif dapat diekspresikan secara unik karena n = 2 o (n) c (n) , di mana c (n) ganjil.
Mari ⟨a n ⟩ n> 0 menjadi urutan dari tantangan spec.
Kami mengklaim bahwa, untuk semua bilangan bulat positif n , o (a 2n-1 ) adalah genap. Karena o (a 2n ) = o (2a 2n-1 ) = o (a 2n-1 ) + 1 , ini sama dengan mengklaim bahwa o (a 2n ) selalu ganjil.
Asumsikan klaim itu salah dan biarkan 2m-1 menjadi indeks ganjil pertama dari urutan sedemikian rupa sehingga o (a 2m-1 ) ganjil. Perhatikan bahwa ini menjadikan 2m menjadi indeks genap pertama dari urutan sedemikian rupa sehingga o (a 2m-1 ) adalah genap.
o (a 2m-1 ) aneh dan 0 bahkan, sehingga sebuah 2m-1 habis dibagi 2 . Menurut definisi, sebuah 2m-1 adalah terkecil bilangan bulat positif belum muncul di urutan , yang berarti bahwa sebuah 2m-1 /2 harus telah muncul sebelumnya. Biarkan k menjadi (pertama) indeks sebuah 2m-1 /2 di sebuah .
Karena o (a k ) = o (a 2m-1 /2) = o (a 2m-1 ) - 1 adalah genap, minimal n menyiratkan bahwa k adalah ganjil. Pada gilirannya, ini berarti bahwa sebuah k + 1 = 2a k = a 2m-1 , bertentangan dengan definisi sebuah 2m-1 .
Bagaimana itu bekerja
belum datang
sumber
R ,
706965 byteCobalah online!
Fungsi anonim yang mengambil satu argumen.
F
default keFALSE
atau0
sehingga algoritma menilai dengan benar bahwa belum ada bilangan bulat positif dalam urutan.Algoritma menghasilkan pasangan dalam
for
lingkaran dengan cara berikut (di manai
pergi dari2
ke2n
by2
):sumber
Haskell , 63 byte
Cobalah online!
Yang satu ini melecehkan evaluasi malas Haskell sepenuhnya.
sumber
Perl 6 , 50 byte
Cobalah online!
1, { ... } ... *
adalah urutan tak terbatas malas yang dihasilkan di mana setiap istilah setelah yang pertama disediakan oleh blok kode yang dibatasi oleh brace. Karena blok referensi@_
array, ia menerima seluruh urutan saat ini dalam array itu.@_ % 2
), kita menghasilkan elemen bahkan-diindeks, sehingga elemen berikutnya adalah ganda elemen terakhir kami sejauh ini:2 * @_[*-1]
.first * ∉ @_, 1..*
.$_
adalah argumen untuk fungsi luar. Itu indeks ke dalam urutan yang tak terbatas, memberikan nilai pengembalian fungsi.sumber
Mathematica, 82 byte
Cobalah online!
sumber
k , 27 byte
1-diindeks. Cobalah online!
Menggunakan
(!y)^x
alih-alih&^x?!y
bekerja juga.sumber
C # (Visual C # Interactive Compiler) , 82 byte
Cobalah online!
-6 byte terima kasih kepada @ASCIIOnly!
sumber
:
s diperlukan karena itu akan menjadi jumlah terbesar dalam daftar2.0
=>2f
Clojure, 102 byte
Iterasikan
n
waktu untuk membangun urutan dan mengembalikann
item ke-1, diindeks.sumber
Ruby, 60 byte
Diindeks 0. Kami mengulang
n/2+1
kali, menghasilkan dua nilai setiap kali dan menyimpannya dengan mengisi array di indeks mereka.v+v*n%2
memberikan output, baikv
atauv*2
tergantung pada paritasn
.sumber
Ruby , 49 byte
Mulailah dengan [0], tambahkan pasangan ke array sampai kita memiliki setidaknya n + 1 elemen, lalu ambil n + 1 (berbasis 1)
Cobalah online!
sumber
JavaScript (ES6), 60
65byteSolusi berulang.
Kurang golf
Uji
sumber
Jelly ,
131210 byteIni menggunakan pengamatan dari jawaban Python saya .
Cobalah online!
Bagaimana itu bekerja
sumber