Anda semua harus terbiasa dengan urutan Conway (alias 'look-and-say'-sequence) sekarang:
1
11
21
1211
111221
312211
etc
Anda juga dapat memulai dengan nomor acak sebagai titik awal. Membiarkan f(s)menjadi elemen berikutnya dari urutan. Sekarang untuk setiap yang skita dapat temukan f(s). Kebalikannya tidak sepele: tidak untuk setiap ykemungkinan menemukan pendahulunya sseperti itu f(s) = y. Misalnya untuk y = 1kita tidak dapat menemukan pendahulunya. Tetapi jika ymemiliki panjang genap, Anda dapat membaginya menjadi pasangan digit yang menggambarkan masing-masing bagian dari pendahulunya:
513211 divides in 51,32,11
so: 51 comes from 11111
32 comes from 222
11 comes from 1
put together: 111112221
Jadi dengan cara ini kita dapat mendefinisikan pendahulu unik untuk setiap ypanjang genap.
Catatan : 'Pendahulu' yang sdidefinisikan dengan cara ini umumnya TIDAK memuaskan f(s) = y.
Tujuan
Tuliskan potongan fungsi / program yang menerima serangkaian digit sebagai inputnya
- menghitung elemen berikutnya dari urutan Conway jika panjang string input ganjil
- menghitung pendahulu dari string input seperti yang didefinisikan di atas jika panjang string input adalah genap .
Kode terpendek dalam byte menang.
Pertanyaan terbaru berdasarkan urutan tampilan dan katakan:
11111111111111? Menurut spec Anda, itu akan menjadi 1111111. Anda harus memodifikasi spesifikasi Anda untuk menentukan jawaban yang masuk akal untuk ini.
11111111111111tidak memiliki pendahulu. Ini input ilegal.
513111membaginya menjadi51,32dan11?