Bulgarian Solitaire , Martin Gardner tarafından Scientific American'daki matematiksel sütununda popüler hale getirilen tek oyunculu bir oyundur .
NKazıklara bölünmüş özdeş kartlarınız var . Her desteden bir kart alıp, çıkarılan kartlarla yeni bir yığın oluşturuyorsunuz. Daha önce gördüğünüz bir duruma ulaşıncaya kadar bu işlemi tekrar edersiniz, böylece devam etmek döngüyü tekrarlar.
Örneğin, 8bir yığın 5ve bir yığın halinde bölünmüş kartlarınız olduğunu varsayalım 3. Biz azalan sırada kazık boyutları yazın: 5 3. İşte oyunun bir transkripti:
5 3
4 2 2
3 3 1 1
4 2 2
Önce iki yığının her birinden bir kart çıkarırsınız ve 4ve 2yeni oluşturulmuş bir yığın yığını 2bırakırsınız 4 2 2. Bir sonraki adımda, bunlar 3 1 1yeni bir yığın ile takip eder 3. Son olarak, son adım daha önce ortaya çıkan boyut 1ve üretim yığınlarını boşaltır 4 2 2, böylece dururuz.
Kazık boyutlarının toplamının aynı kaldığına dikkat edin.
Amacınız, belirli bir başlangıç yapılandırmasından oyunun böyle bir kopyasını yazdırmaktır. Bu kod golf, çok az bayt kazanır.
Giriş
İlk yığın boyutlarını temsil eden azalan sırada pozitif sayıların listesi. Girişi STDIN veya fonksiyon girişi ile alın. İstediğiniz listeye benzer bir yapı kullanabilirsiniz.
Toplam kart sayısını Ngiriş olarak alamazsınız .
Çıktı
Bulgar Solitaire oyununun geçtiği kazık boyutlarının sırasını yazdırın. Yazdırmanın gerekli olduğunu, iade edilmediğini unutmayın. Her adım kendi çizgisi olmalıdır.
Her satırda 0's' ile azalan sırada bir pozitif sayılar dizisi olmalıdır . Ayırıcılarınız ve başlangıç ve bitiş simgeleriniz olabilir (örneğin, [3, 3, 1, 1]). Sayıların birden fazla basamağı olabilir, bu nedenle bir şekilde ayrılmalıdır.
Tekrara ulaşana kadar gördüğünüz yığın boyutu bölünmelerini yazdırın. Bu nedenle, ilk satır giriş olmalı ve son satır önceki satırın tekrarı olmalıdır. Başka tekrar olmamalıdır.
Test senaryoları
>> [1]
1
1
>> [2]
2
1 1
2
>> [1, 1, 1, 1, 1, 1, 1]
1 1 1 1 1 1 1
7
6 1
5 2
4 2 1
3 3 1
3 2 2
3 2 1 1
4 2 1
>> [5, 3]
5 3
4 2 2
3 3 1 1
4 2 2
>> [3, 2, 1]
3 2 1
3 2 1
>> [4, 4, 3, 2, 1]
4 4 3 2 1
5 3 3 2 1
5 4 2 2 1
5 4 3 1 1
5 4 3 2
4 4 3 2 1
v$input()$ile değiştirebilirsinizQ. 2. Listeyi azalan sırada depolarsanız, hiç ihtiyacınız yokturN:W!}QYQ~Y]Q=Q_S+fTmtdQ]lQ;Q