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.

Ad Hoc Garf Hunter
sumber
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 .

Tuan Xcoder
sumber
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
aditsu berhenti karena SE adalah JAHAT
sumber
1

Haskell , 17 byte

n!i=i`mod`n*n+n-1

Cobalah online!

Jawaban lain menggunakan ide Pak Xcoder. Saya tidak akan bisa menjawab pertanyaan kalau tidak jujur. : P

benar-benar manusiawi
sumber
1

Python 2 , 20 byte

lambda n,i:i%n*n+n-1

Cobalah online!

Prinsip yang sama dengan jawaban Tuan Xcoder

TFeld
sumber
1
Haruskah kepala sekolah tidak suka membaca prinsip ?
Jonathan Frech
@JonathanFrech ... yeah ..
TFeld
0

Jelly , 5 byte

Ɠ%×+’

Cobalah online!

Pendekatan Port of Mr. Xcoder. Indeks I di STDIN, N adalah argumen.

Erik the Outgolfer
sumber