The nomor Shotgun adalah urutan dengan definisi agak sederhana tapi beberapa struktur menarik. Mulai dengan bilangan asli:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
Sekarang ambil semua angka pada indeks yang dapat dibagi 2 , kelompokkan menjadi pasangan, dan tukar angka dalam setiap pasangan:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...
^ ^ ^ ^ ^ ^ ^
<---> <---> <-----> <----
1, 4, 3, 2, 5, 8, 7, 6, 9, 12, 11, 10, 13, 16, ...
Sekarang lakukan hal yang sama dengan indeks yang dapat dibagi 3 :
1, 4, 3, 2, 5, 8, 7, 6, 9, 12, 11, 10, 13, 16, ...
^ ^ ^ ^
<------> <--------->
1, 4, 8, 2, 5, 3, 7, 6, 10, 12, 11, 9, 13, 16, ...
Dan kemudian untuk 4 , 5 , 6 , dan seterusnya:
1, 4, 8, 2, 5, 3, 7, 6, 10, 12, 11, 9, 13, 16, ...
1, 4, 8, 6, 5, 3, 7, 2, 10, 12, 11, 14, 13, 16, ...
1, 4, 8, 6, 12, 3, 7, 2, 10, 5, 11, 14, 13, 16, ...
1, 4, 8, 6, 12, 14, 7, 2, 10, 5, 11, 3, 13, 16, ...
...
Setelah k langkah tersebut, angka k +1 pertama akan diperbaiki. Jadi kita dapat mendefinisikan urutan tak terhingga dari angka-angka Shotgun sebagai batas membiarkan k pergi hingga tak terbatas. 66 angka pertama adalah:
1, 4, 8, 6, 12, 14, 16, 9, 18, 20, 24, 26, 28, 22, 39, 15, 36, 35, 40, 38, 57, 34, 48, 49, 51, 44,
46, 33, 60, 77, 64, 32, 75, 56, 81, 68, 76, 58, 100, 55, 84, 111, 88, 62, 125, 70, 96, 91, 98, 95,
134, 72, 108, 82, 141, 80, 140, 92, 120, 156, 124, 94, 121, 52, 152, 145, ...
Fakta menyenangkan: Meskipun diperoleh dengan hanya mengubah bilangan asli, urutan ini tidak mengandung bilangan prima.
Tantangan
Diberikan bilangan bulat n > 0
, cari n
nomor Shotgun. Anda dapat menulis sebuah program atau fungsi, mengambil input melalui STDIN (atau alternatif terdekat), argumen baris perintah atau argumen fungsi dan mengembalikan output atau mencetaknya ke STDOUT (atau alternatif terdekat).
Ini adalah kode golf, jadi pengiriman terpendek (dalam byte) menang.
Papan peringkat
Ini mendapatkan lebih banyak jawaban daripada yang saya kira, juga beberapa orang bersaing dalam bahasa yang sama. Jadi di sini adalah Cuplikan Stack untuk menghasilkan leaderboard reguler dan tinjauan pemenang berdasarkan bahasa.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
10
, 21
, 25
dan 30
tidak muncul baik, misalnya.
k
iterasi th, k
elemen th dalam array akan dipindahkan ke 2k
posisi th, dan tidak akan disentuh lagi sampai 2k
iterasi th, di mana saat itu akan dipindahkan ke 4k
posisi th, ad infinitum. Perdana tidak dialihkan sampai gilirannya tiba, sehingga untuk berbicara, sehingga semua bilangan prima bisa dikocok ke depan. Tetapi kita dapat dengan mudah membuat daftar korban yang tidak bersalah hanya dengan mencetak elemen pertama yang akan ditransfer pada iterasi 2 dan setiap iterasi aneh. Daftarnya berbunyi: 2, 3, 5, 7, 10, 11, 13, 21, 17, 19, 30, 23, 27, 25, 29, 31, 45, 42, 37, 54, 54, 41, 43, 65, ...