Buat n-Juggler


8

Saya sangat tertarik dengan urutan yang mengikuti properti

a(n+1)=a(na(n))

baru-baru ini, jadi inilah pertanyaan lain tentang urutan ini. Secara khusus kami prihatin dengan urutan dari bilangan bulat ke bilangan asli.

Urutan berkala dengan properti di atas adalah n -Juggler jika dan hanya jika mengandung persis n nilai yang berbeda. Misalnya urutan berikut adalah 2 juggler

... 2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1 ...

karena hanya berisi angka 1dan 2.

Contoh dari tiga juggler akan menjadi

... 3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5 ...

karena juggles 1, 3dan 5.

Tugas

Diberikan n> 1 sebagai input, output n -Juggler.

Anda dapat menampilkan urutan dalam beberapa cara, Anda bisa

  • output fungsi yang mengindeksnya.

  • mengambil input tambahan dari indeks dan mengeluarkan nilai pada indeks itu.

  • menghasilkan subbagian berkelanjutan dari urutan yang, dengan properti yang diberikan secara unik menentukan urutan.

Ini adalah sehingga jawaban diberi skor dalam byte dengan lebih sedikit byte lebih baik.


1
Apakah kami boleh mencetak urutan tanpa batas?
Tn. Xcoder

3
@ Mr.Xcoder Biasanya saya akan mengatakan ya, tetapi karena urutan ini tidak terbatas di kedua arah, saya harus ragu-ragu mengatakan tidak. (Jika Anda menawarkan argumen yang meyakinkan saya dapat dengan mudah mengubah pikiran saya tentang ini) Jika Anda dapat menemukan cara untuk mencetak di kedua arah itu akan baik-baik saja.
Ad Hoc Garf Hunter

3
Tampaknya sequnces mengikuti a(n+1) = a(n-a(n)), dan bukan +
TFeld

4
Ya itu: ulangi 2,2sekali → 2,2,2,2, ulangi lagi → 2,2,2,2,2,2, dll. Sama sekali tidak ada cara untuk mendapatkan 1dari pengulangan 2,2. Urutan yang Anda dapatkan selalu unik.
Aditsu berhenti karena SE adalah JAHAT

2
Sepertinya properti tidak ada lagi.
Erik the Outgolfer

Jawaban:


4

Pyth , 5 byte

t+*%E

Coba Juggler 2 , 3 , 4 .

Menerima dua angka, N dan I , dipisahkan oleh baris baru dan dalam urutan ini. Saya adalah indeks ke dalam urutan.

Ini menggunakan rumus yang cukup sederhana: N - 1 + N * (I% N) . Validitasnya dikonfirmasi oleh OP .


3

CJam, 9

Bagaimana dengan ini?

q~1$,=)*(

Cobalah online

Input adalah n itempat ninput utama dan iindeks yang Anda inginkan untuk mendapatkan nilainya.

Penjelasan:

q~    read and evaluate the input (n and i)
1$    copy n
,=    basically this is a modulo (i%n) that avoids a negative result for negative i
)*    increment, then multiply by n
(     decrement




Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.