Utas polisi
Di utas ini, tugas Anda adalah membuat program / fungsi berbasis rekursi untuk menghasilkan seri integer apa pun. Perampok akan mencoba dan menemukan solusi non-rekursif yang lebih pendek di utas Perampok .
Tantang sinopsis
Dalam banyak bahasa, fungsi rekursif secara signifikan dapat menyederhanakan tugas pemrograman. Namun, sintaks overhead untuk rekursi yang tepat dapat membatasi kegunaannya dalam kode-golf.
The polisi akan membuat program atau fungsi mengambil satu bilangan bulat n
, yang akan menghasilkan pertama n
entri dari seri integer, hanya menggunakan rekursi 1 . Mereka juga harus memastikan ada cara non rekursif yang lebih pendek untuk menghasilkan urutan agar menandai entri mereka aman.
The perampok akan mencoba untuk menemukan lebih pendek program atau fungsi dalam bahasa yang sama, menghasilkan seri integer yang sama, tidak menggunakan rekursi 2 .
Jika pengajuan polisi tidak retak dalam sepuluh hari (240 jam), polisi akan membuktikan bahwa sebenarnya mungkin untuk memiliki pendekatan non-rekursif yang lebih pendek dengan mengungkapkan solusi mereka sendiri. Mereka kemudian dapat menandai pengiriman mereka sebagai aman .
Pemenang tantangan polisi adalah pengajuan berbasis rekursi terpendek (menurut kode-golf ) yang ditandai aman.
Pemenang tantangan perampok adalah perampok yang memecahkan sebagian besar solusi.
1: Itu hanya perlu rekursif dalam sintaksis; Anda tidak perlu khawatir tentang misalnya optimasi panggilan ekor.
2: Sekali lagi, non-rekursif dalam sintaksis; jadi Anda tidak dapat memposting solusi rekursif dan mengklaimnya dikompilasi ke loop berkat optimasi panggilan ekor.
Persyaratan pengiriman
Setiap pengajuan akan mengambil bilangan bulat tunggal n
(berbasis nol atau satu). Pengajuan kemudian akan menampilkan atau mengembalikan n
entri pertama dari serangkaian pilihan integer. (perhatikan bahwa seri bilangan bulat ini tidak boleh bergantung pada n
). Metode input dan output mungkin berbeda antara pendekatan rekursif dan non-rekursif. Seri integer dapat berupa seri deterministik dengan panjang setidaknya 5. Seri harus dijelaskan dengan benar.
Kiriman Anda tidak harus bekerja untuk yang sewenang-wenang n
, tetapi setidaknya harus bekerja n=5
. Pendekatan non-rekursif harus dapat bekerja hingga setidaknya sama n
dengan pendekatan rekursif, atau hingga n=2^15-1
, mana yang lebih kecil.
Pengulangan
Demi tantangan ini, rekursi didefinisikan sebagai menciptakan urutan yang diinginkan menggunakan fungsi (atau fungsi seperti konstruksi) yang memanggil dirinya sendiri (atau memanggil urutan fungsi yang akhirnya memanggil dirinya sendiri; ini termasuk konstruksi seperti kombinator Y). Kedalaman rekursi harus menuju ke infinity seperti n
menuju infinity. Pendekatan non-rekursif adalah segala sesuatu yang tidak rekursif.
n
jika secara teoritis benar, tetapi tidak dapat dijalankan karena kendala waktu atau memori?
n=5
harus dihitung
xfor
tersedia melalui semacam impor?) Jadi mungkin bahasa ini tidak dapat bersaing.
for
dilakukan dengan rekursif di belakang, apakahfor
rekursif atau loop?