Hepiniz aşina olmalıdır Conway dizisi (aka 'görünüm ve say'-dizisi) artık:
1
11
21
1211
111221
312211
etc
Ayrıca başlangıç noktası olarak herhangi bir rasgele sayı ile başlayabilirsiniz. Izin vermek f(s)dizinin bir sonraki elemanı olmak. Şimdi her verilen için sbulabiliriz f(s). Ters önemsiz olarak değil: Her için değil yolası selefi bulmak söyle f(s) = y. Mesela y = 1bir selefi bulamıyoruz. Ancak y, eşit bir uzunluğa sahipse , bunu bir öncünün her bir parçasını tanımlayan basamak çiftlerine bölebilirsiniz:
513211 divides in 51,32,11
so: 51 comes from 11111
32 comes from 222
11 comes from 1
put together: 111112221
Böylece bu şekilde her bir uzunluk için benzersiz bir öncülü tanımlayabiliriz y.
Not : sBu şekilde tanımlanan 'selefi' genellikle tatmin edici DEĞİLDİR f(s) = y.
Hedef
Bir basamak dizesini giriş olarak kabul eden bir işlev / program snippet'i yazın.
- giriş dizisinin uzunluğu ise Conway sekansının bir sonraki elemanı hesaplar tek
- giriş dizi uzunluğu ise, yukarıda tarif edildiği gibi, giriş dizesi selefi hesaplar bile .
Bayt cinsinden en kısa kod kazanır.
Bak ve söyle dizilerine dayanan Son Sorular:
11111111111111? Özelliklerine göre, olurdu 1111111. Bunun için makul bir cevap tanımlamak üzere şartnamenizi değiştirmelisiniz.
11111111111111sadece selefi yok. Bu geçersiz bir girdi.
513111içine ayırır51,32ve11?