Intro
Urutan Switching didefinisikan seperti ini:
Mulailah dengan n
orang - orang yang berdiri dalam lingkaran ( 6
untuk contoh ini).
1 2
6 3
5 4
Mulai dari orang 1
, orang yang ada di sebelah kiri orang yang "dipilih" dihapus.
1
6 3
5 4
Orang yang dihapus dapat "mengalihkan" metode penghapusan ke atas:
- Jika orang yang dilepas itu genap (dalam kasus ini), orang yang dipindahkan berikutnya akan berada di sebelah kanan orang "terpilih" berikutnya.
- Jika orang yang dipindahkan itu aneh, orang yang dihapus berikutnya akan berada di sebelah kiri orang "terpilih" berikutnya.
Orang yang dipilih berikutnya juga tergantung pada orang yang sebelumnya dihapus.
- Jika orang yang dilepas itu genap, orang yang dipilih berikutnya akan berada di sebelah kanan orang yang dipilih sebelumnya.
- Jika orang yang dipindahkan itu aneh, lihat di atas, tetapi ganti "kanan" dengan "kiri".
Jadi orang yang dipilih selanjutnya adalah 6
.
Sekarang kami menghapus orang di sebelah kanan 6
, yaitu 5
:
1
6 3
4
Karena 5
aneh, orang yang dipindahkan sekarang ke kiri. Orang yang baru terpilih adalah 1
.
Kami sekarang menghapus 3
:
1
6
4
Kami melanjutkan proses ini, hingga tersisa 1 angka - dalam contoh ini, angka terakhirnya adalah 1
. Oleh karena itu S(6) = 1
.
Beberapa angka pertama adalah:
n | S(n)
---------
1 | 1
2 | 1
3 | 3
4 | 1
5 | 5
6 | 1
7 | 3
8 | 6
9 | 5
10 | 6
11 | 9
Tugas
Tugas Anda adalah membuat program (atau fungsi) yang mengembalikan S(n)
( n
nomor th dalam urutan Switching) saat diberikan n
, menggunakan jumlah byte terkecil.
Contoh input dan output:
1 -> 1
10 -> 6
13 -> 13
Anda dijamin mendapatkan bilangan bulat positif.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Catatan: Tidak ada urutan OEIS (apa?), Untuk menyelamatkan Anda dari kesulitan mencari.
2
tidak pernah ada, tetapi tidak7
?Jawaban:
Python 2,
18394 byte-4 byte terima kasih kepada Artyer (gunakan
input()
danprint
bukannyadef
danreturn
)-1 byte berkat FlipTack (gunakan
print-~p[0]
bukanprint p[0]+1
)repl.it
Ini hanya mengikuti instruksi yang diberikan, saya perhatikan beberapa pola, mungkin bisa dieksploitasi?
Satu-satunya perubahan adalah:
0
pengindeksan berbasis (bahkan orang-orang aneh dan sebaliknya) - ini menghemat 5 byte dalam logika golf dan diperbaiki pada akhirnya dengan+1
1
sebagai kiri dan-1
kanan (untuk menggunakan rentang - sama seperti semua orang menghadap ke luar sebagai gantinya)pop
dari membuat indeks "penunjuk" sudah langkah satu ke kanan dalam daftar (atau ke kiri dalam terminologi asli).Tidak Disatukan:
sumber
print-~p[0]
?