Kakuro Kombinasyonları
Zihinsel aritmetik yapamadığım için, genellikle , kurbanın 1 ila 9 (dahil) aralığındaki hangi farklı sayıların 1 ila 45 aralığındaki başka bir sayıya karşılık geldiğini tekrar tekrar çalışmasını gerektiren Kakuro Puzzle ile mücadele ediyorum. birçok sayı var. Örneğin, 3 sayıdan 23'ü nasıl alacağınızı bilmek isteyebilirsiniz, tek cevap 6 + 8 + 9'dur. (Bu, eğer aşina iseniz Killer Sudoku ile aynı fikirdir).
Bazen 1 numarasının bulunamaması gibi başka bilgilere sahip olursunuz , bu nedenle sadece 2 sayıda 8 elde etmek için sadece 2 + 6 ve 3 + 5 kullanabilirsiniz (4 + 4 kullanamazsınız, çünkü bunlar farklı değil). Alternatif olarak, çözümde zaten bir 3 bulmuş olabilirsiniz ve bu nedenle 3 sayıdan 19 gibi bir şey 3 + 7 + 9 olmalıdır.
Göreviniz, belirli bir soruna olası tüm çözümleri katı bir sırayla, katı bir düzende listeleyen bir program yazmaktır.
Giriş
Çözümünüz, girişleri stdin, bir komut satırı argümanı, bir işlev argümanı, yığın üzerinde kalan bir değer veya en sevdiğiniz ezoterik dilinizin çılgınlığı ne olursa olsun tek bir ASCII dizesi olarak alabilir . Dize biçimindedir
number_to_achieve number_of_numbers_required list_of_rejected_numbers list_of_required_numbers
İlk 2 argüman, sırasıyla 1 ila 45 ve 1 ila 9 aralığındaki tipik baz-10 negatif olmayan sıfır olmayan tamsayılardır (ondalık nokta kullanmak geçersiz giriş olur), iki liste yalnızca tekrarlama olmadan belirli bir sipariş yok veya boş listeler ise '0'. Listeler arasında paylaşılan rakamlar olamaz (0 hariç). Sınırlayıcılar tek boşluklardır.
Çıktı
Çıktınız, olası çözümlerin sayısını içeren bir satırla başlamalıdır. Programınız, her bir basamak 1'den 9'a kadar sayıları listelediğinizde olacağı konuma yerleştirildiği, her geçen basamak için ayrılmış satır sonu sınırlandırılmış çözümleri yazdırmalıdır. Aşağıdaki örnekler umarım bunu daha açık hale getirecektir.
Geçersiz bir giriş sağlanırsa, önyükleme sektörümü sıfırlamamış olsam da programınızın ne yaptığı umurumda değil.
Örnekler
Bu örnek girdi için
19 3 0 0
Beklenen çıktı
5
2 89
3 7 9
4 6 9
4 78
56 8
Her "eksik" sayının yerine boşluklar not edilmelidir, bunlar gereklidir; Onlardan sonra bir sayı olmayan boşluklar hakkında rahatsız değilim (yukarıdaki eksik 9'lar gibi). Yazdırdığınız her şeyin mono boşluk yazı tipi kullanacağını varsayabilirsiniz. Ayrıca, en küçük en küçük rakama sahip çözümlerin ve daha sonra en küçük bir sonraki en küçük rakama sahip olanların, vb.
Yukarıdakilere dayanan başka bir örnek
19 3 57 9
Beklenen çıktı
2
2 89
4 6 9
Her sonucun 9 ve hiçbir sonucun 5 veya 7 içermediğini unutmayın.
Çözüm yoksa, örneğin
20 2 0 0
O zaman üzerinde 0 olan tek bir satır çıkarmalısınız.
0
Bu sorunun eğlencesinin giriş kısmının ayrıştırılmasını kasten yaptım. Bu kod golf, en kısa çözüm kazanabilir.