The urut juggler digambarkan sebagai berikut. Dimulai dengan input a 1 , istilah berikutnya didefinisikan oleh relasi perulangan
Urutan berakhir ketika mencapai 1, karena semua istilah selanjutnya akan menjadi 1.
Tugas
Diberikan input n
lebih besar dari atau sama dengan 2, tulis program / fungsi / generator / dll. yang menampilkan / mengembalikan urutan juggler masing-masing. Outputnya bisa dalam bentuk apa pun yang masuk akal. Anda tidak boleh menggunakan built-in yang menghitung urutan juggler, atau built-in yang secara langsung menghasilkan hasilnya. Anda dapat mengasumsikan bahwa urutan berakhir pada 1
.
Uji Kasus
Input: output
2: 2, 1
3: 3, 5, 11, 36, 6, 2, 1
4: 4, 2, 1
5: 5, 11, 36, 6, 2, 1
Ini adalah kode golf. Kode terpendek dalam byte menang.
~5.6*10^7
(mereka semua berhenti sejauh ini).Jawaban:
Jelly ,
121110 byteTerima kasih kepada @ Sp3000 untuk bermain golf 1 byte!
Cobalah online!
Bagaimana itu bekerja
sumber
<code> </code>
sebaliknya backticks tampaknya menampilkan karakter SP yang sebenarnya. Terima kasih telah menunjukkannya.Julia,
645048423230 byteIni adalah fungsi rekursif yang menerima integer dan mengembalikan array float.
Kami membangun array dengan menggabungkan input dengan istilah urutan berikutnya, dihitung sebagai x dengan kekuatan paritasnya ditambah 1/2. Ini memberi kita x 1/2 atau x 1 + 1/2 = x 3/2 . Divisi integer dengan 1 mendapatkan lantai. Ketika kondisi x <3 benar, elemen terakhir akan menjadi Boolean daripada nilai numerik, tetapi karena array bukan tipe
Any
, ini dilemparkan untuk memiliki tipe yang sama dengan sisa array.Disimpan 14 byte berkat Dennis!
sumber
JavaScript (ES7),
4533 bytePenjelasan
Pendekatan rekursif. Mengembalikan serangkaian angka yang dipisahkan tanda koma.
Uji
**
tidak digunakan dalam uji kompatibilitas browser.Tampilkan cuplikan kode
sumber
**
didukung di semua browser.**
didukung dalam C #.Mathematica,
4039 byteTerima kasih kepada Martin Büttner karena menghemat 1 byte.
Kasus cobaan
sumber
Pyth,
1412 byteDemonstrasi
Kita mulai dengan pengurangan kumulatif
.u
,, yang dalam hal ini dimulai pada input dan menerapkan fungsi sampai hasilnya berulang, pada titik mana output semua hasil antara.Fungsi ini mengambil nilai sebelumnya sebagai
N
. Dimulai dengan mengambil akar kuadratnya@N2
. Selanjutnya, itu membagi dua nilai itu pada perkalian denganN
dengan*B ... N
. Ini membuat daftar[N ** .5, (N ** .5) * N]
, hasil yang tidak dicintai untuk kasus genap dan ganjil. Selanjutnya, hasil yang tidak dicintai yang sesuai dipilih dengan mengindeks ke dalam daftar@ ... N
. Karena Pyth memiliki pengindeksan modular, tidak ada kesalahan di luar batas yang dilemparkan. Akhirnya, hasilnya didasarkan padas
.sumber
MATL,
1312 byteCobalah online!
Penjelasan
Terima kasih Luis telah menghemat satu byte!
sumber
floor
fungsi telah berubah menjadik
, sehingga Anda dapat menggunakan bahwa alih-alihZo
untuk menyimpan 1 byte. (Maaf atas perubahan ini; Anda dapat melihat ringkasan rilis di sini )Minkolang 0,15 , 25 byte
Coba di sini!
Penjelasan
sumber
TSQL, 89 byte
Masukan masuk
@N
:Kode:
sumber
APL,
282416 byteIni adalah program yang menerima integer dan mencetak output berurutan pada baris yang terpisah.
Penjelasan:
Cobalah online
Disimpan 8 byte berkat Dennis!
sumber
Java 7,
8371 byteSaya awalnya menggunakan
for
loop khas , tetapi saya harus melompat melalui lingkaran untuk membuatnya bekerja dengan benar. Setelahmencuri,meminjam ide user81655 untuk muncul kembali , saya mendapatkannya turun dua belas byte.sumber
Haskell, 70 byte
Haskell tidak memiliki integer
sqrt
built-in, tapi saya pikir mungkin ada sesuatu yang lebih pendek dari itufloor.sqrt.fromInteger
.sumber
Oracle SQL 11.2, 128 byte
Tidak bermain golf
Menambahkan MOD (i, 2) ke .5 lebih pendek tetapi ada bug dengan POWER (2, .5):
memberi
sumber
R,
5451 byteDisimpan 3 byte berkat plannapus.
sumber
floor(n^(.5+n%%2))
ken^(.5+n%%2)%/%1
saya pikir. +1 Meskipun demikian.CJam, 18 byte
Uji di sini
Mirip dengan jawaban MATL David .
sumber
Python 3,
57,45,43, 41 byteSolusi yang lebih baik dengan saran dari @mathmandan
Metode ini akan mencetak setiap nomor pada baris baru
Solusi Sebelumnya: Kurangi hingga 43 byte setelah rekomendasi xnor
Anda dapat memanggil yang di atas dengan melakukan
a(10)
pengembalian apa[10, 3.0, 5.0, 11.0, 36.0, 6.0, 2.0, 1.0]
Di atas akan menampilkan nilai sebagai mengapung. Jika Anda menginginkannya sebagai bilangan bulat, maka kita bisa menambahkan 2 byte tambahan untuk 43 byte:
sumber
[n][:n<2]or
, atau1/n*[n]or
untuk kasus integer.def j(n):print n;n-1and j(n**(.5+n%2)//1)
. (Atau dalam Python 3,def j(n):print(n);n-1and j(n**(.5+n%2)//1)
adalah 42 byte.) Ini akan mencetak istilah urutan dengan istilah alih-alih mengumpulkan istilah dalam daftar.n<2or
daripadan-1and
TI-Basic, 30 Bytes
sumber
Repeat Ans=1
denganWhile log(Ans
, dan gunakan√(Ans)Ans^remainder(Ans,2
.JavaScript ES6,
109102 byteSaya tahu ini bisa golf. Mengembalikan serangkaian angka yang dipisahkan koma.
sumber
C ++, 122 byte
sumber
C #, 62 byte
Terinspirasi oleh @ user81655 dan @Alex A., saya menggunakan rekursi.
sumber
Retina, 144 byte
Input dan output berada di unary.
Baris ke-2 ke terakhir berisi spasi, dan dua garis tengah dan baris terakhir kosong.
Cobalah online
Penjelasan
Root kuadrat integer di Retina , oleh Digital Trauma
sumber
C,
646361 bytesumber
n%2?1.5:0.5
dengann%2+0.5
atau.5+n%2
(jika C mengizinkannya). Jikan%2
benar,n%2
adalah 1, atau 0.TI BASIC, 43 byte
Saya menarik Thomas Kwa dan menjawab yang ini di ponsel saya.
Ganti
sqrt
dengan simbol aktual di kalkulator Anda. Menampilkan daftar angka yang dipisahkan dengan linefeed, yang merupakan format yang masuk akal.sumber
JavaScript ES6, 76 byte
Apakah generator bernama
j
. Untuk menggunakan, atura = j(<your value>);
. Untuk melihat nilai berikutnya dalam urutan, masukkana.next().value
.Tidak Disatukan:
sumber
F # 77 byte
Tidak berhenti pada 1, tetapi terus berjalan.
Pemakaian:
Versi yang benar-benar berakhir pada 1, 100 byte
Tidak disatukan
sumber
Perl 5, 34 byte
33, ditambah 1 untuk
-pE
bukan-e
Penjelasan
Pertama,
-p
setel variabel$_
sama dengan input dari stdin. Lalu kita mulai blok kode:Akhirnya,
-p
cetak$_
.Dengan panjang yang sama
Juga menggunakan
-p
.Ini: mencetak
$_
; menugaskan seperti di atas; menguji apakah nilai pengembaliansay
(yaitu 1), minus nilai baru$_
, adalah 0, dan mengulangi blok jika demikian; lalu cetak$_
di bagian akhir.sumber
dc,
2221 byteDijelaskan:
Ada bug: Ketika inputnya
1
, output terdiri dari dua1
s.sumber