Tugas
Urutan, tambahkan-urutan didefinisikan secara rekursif, seperti ini
- a (1) = 1
- a (n) = a (n-1) .n, jika n adalah genap
- a (n) = na (n-1), jika n ganjil
Dimana . mewakili gabungan bilangan bulat.
Jadi beberapa istilah pertama adalah: 1,12,312,3124,53124,531246,7531246,...
Ini adalah A053064 .
Tugas Anda adalah, diberi bilangan bulat a> 0 untuk mengembalikan n , sedemikian sehingga elemen ke- n dalam prependensi, tambahkan-Urutan sama dengan a dan jika tidak ada n seperti itu mengembalikan 0, angka negatif atau kesalahan keluar dll.
Aturan
- Input dapat diambil sebagai integer, string, daftar karakter / digit dll.
- Output dapat dicetak ke STDOUT atau dikembalikan (integer, string, dll.)
- Pada input yang tidak valid & dalam hal tidak ada n seperti itu, program Anda dapat melakukan apa pun kecuali mengembalikan bilangan bulat positif (mis. Loop selamanya, mengembalikan 0 dll.)
- Anda dapat memilih untuk menggunakan pengindeksan 0, tetapi kemudian output jika tidak ada n tidak dapat 0
Uji kasus
1 -> 1
12 -> 2
21 -> 0
123 -> 0
312 -> 3
213 -> 0
211917151311975312468101214161820 -> 21
2119171513119753102468101214161820 -> 0
333129272523211917151311975312468101214161820222426283031 -> 0
999795939189878583817977757371696765636159575553514947454341393735333129272523211917151311975312468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100 -> 100
a(n-1)*(int(log(n))+1)+n
dann*(int(log(n))+1)+a(n-1)
?Jawaban:
JavaScript (ES6), 40 byte
Mengambil input sebagai string. Melempar kesalahan rekursi jika tidak ada indeks yang ditemukan.
Demo
Tampilkan cuplikan kode
sumber
f=(n,s=k='1')=>n-s?f(n,++k&1?k+s:s+k):k
C # (.NET Core) ,
83, 80, 6059 byteCobalah online!
Mengambil input sebagai string ke fungsi lambda. 1-diindeks. Mengembalikan indeks nilai untuk truey, atau loop tak terhingga untuk "falsey"
sumber
Python 2 , 63 byte
-1 byte terima kasih @EriktheOutgolfer .
Cobalah online!
Python 2 , 64 byte
-18 byte terima kasih kepada @officialaimm , karena saya tidak melihat kesalahan diizinkan!
Cobalah online!
Python 2 , 82 byte (tidak berulang selamanya)
Yang ini mengembalikan
0
input yang tidak valid.Cobalah online!
sumber
f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j
sys.setrecursionlimit()
. Bisakah Anda memberikan tio?x=1
? Ataux=12
? Saya pikir itu hanya melemparkan kesalahan seperti itu untuk setidaknyax=151311975312468101214
atau sesuatu.Jelly , 12 byte
Cobalah online!
Penjelasan:
sumber
05AB1E , 14 byte
Cobalah online! atau sebagai Test suite
Penjelasan
Diindeks 0 .
Mengembalikan -1 jika input tidak dalam urutan.
sumber
g
dihapus dan append / prepend dipersingkat. Saya akan menghapus jawaban sayaR , 73 byte
Membaca dari stdin dan mengembalikan nilai indeks (dicetak secara implisit). Infinite loop ketika nilainya tidak dalam urutan.
F
secara defaultFALSE
yang dilemparkan ke0
saat digunakan dalam aritmatika.Cobalah online!
sumber
Mathematica, 135 byte
sumber
Jelly ,
19 1815 byteTautan monadik mengambil dan mengembalikan bilangan bulat.
Cobalah online!(sangat lambat - membutuhkan ~ 50s pada TIO hanya untuk mengkonfirmasi bahwa
3124
ada pada indeks4
)Untuk versi yang jauh lebih cepat gunakan 18 byter sebelumnya (hanya memeriksa hingga panjang input, yang cukup).
Bagaimana?
sumber
211917151311975312468101214161820
?Cepat 4 , 92 byte
Loop ini jauh untuk kasus yang tidak valid, jadi saya tidak memasukkannya ke dalam tautan pengujian.
Test Suite.
Yang mengherankan, lebih lama dengan penutupan:
Test Suite.
sumber
Haskell ,
11585 byteCobalah online!
sumber
Perl 5 , 54 + 1 (-n) = 55 byte
Cobalah online!
Tidak menghasilkan apa-apa jika tidak ditemukan.
sumber
Haskell,
757157 byteDibutuhkan
n
sebagai string.Cobalah online!
sumber