Girdi: k pozitif tamsayılardan oluşan bir dizi I. Tamsayılar 100 ve k ≤ 100'den büyük olmayacaktır .
Çıktı: Kodunuz , 0 ≤ O i ≤ I i kısıtlamasıyla k uzunluğu olan negatif olmayan tamsayıların tüm olası dizilerini O vermelidir . Bir diziden diğerine almak için diziye 1'e bir değer ekleyebilir veya çıkarabilirsiniz. Kodunuz aynı diziyi iki kez çıkarmamalıdır. Çıktı yapılacak farklı dizilerin sayısı çok büyükse, kodunuz öldürülünceye kadar sonsuza kadar çıktı almaya devam etmelidir.
Örnekler
Eğer ben bir dizidir k olanlar o zaman bu tam olarak baştan yineleme sorunudur Gri kodları genişliği bit k ilk ve son eleman tek adımda ulaşılabilir olması gerekmez dışında.
Eğer
I = [2,1]
çıkış Dizilerin sonra olası bir sıralamadır(0,0),(0,1),(1,1),(1,0),(2,0),(2,1)
- Eğer
I = [2,1,3]
öyleyse, çıkış dizilerinin olası bir sırası(0,0,0),(0,0,1),(0,0,2),(0,0,3),(0,1,3),(0,1,2),(0,1,1),(0,1,0),(1,1,0),(1,1,1),(1,1,2),(1,1,3),(2,1,3),(2,1,2),(2,1,1),(2,1,0),...
.
Bu bir kod-golf meydan okuma, en kısa uzunlukta kaynak kodu ile gönderme kazanır. Golf dillerindeki kısa yanıtların diğer dillerde yanıt göndermenizi engellemesine izin vermeyin. Herhangi bir dilde en kısa cevabı bulmaya çalışın.
Bu aynı zamanda sınırlı karmaşıklık sorunudur. Her yeni dizi , önceki çıkış dizisinden (veya ilk çıkış dizisi için programın başlangıcından ) geçen O (k) süresi ile birlikte çıkarılmalıdır . Bu, yeni çıkış dizisi başına çalışma sürelerinin (her biri k uzunluğundadır ) O (k) değerinden fazla olmaması gerektiği anlamına gelir . Yani k ile orantılı olması zaman alır , örneğin k 2 veya 2 k . Bunun, çıktı başına ortalama süre değil, çıktı verilen her dizi için en kötü durum zamanı olduğuna dikkat edin.
64 bit tamsayılardaki tüm aritmetik işlemlerin, okuma ve çıktıların yanı sıra dizilerdeki değerleri atama ve arama ve değiştirme gibi sabit zamanda da gerçekleştirilebileceğini varsayabilirsiniz.
Kısıtlı karmaşıklığın bir sonucu, yalnızca program çıkışında çıkan çözümlerin kabul edilemez olmasıdır.
n
ve k
sınırlıdır? bit genişliği ile sonsuzluğa gittiklerini
I_i+1
I_i