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 s
bulabiliriz f(s)
. Ters önemsiz olarak değil: Her için değil y
olası selefi bulmak s
öyle f(s) = y
. Mesela y = 1
bir 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 : s
Bu ş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.
11111111111111
sadece selefi yok. Bu geçersiz bir girdi.
513111
içine ayırır51
,32
ve11
?