giriş
Uzun bir masanın sonunda bir tahta odada oturuyorsunuz. Etrafınıza bakın ve Apple Yönetim Kurulu Tim Cook, Steve Jobs hayaleti ve Jack Donaghy'yi görün. Apple bu toplantıyı aradı çünkü Android kilit ekranının ne kadar serin olduğunu fark ettiler ve 1-UP yapmak istiyorlar. Odadaki herkes sana bakar ve Ghost Steve ağlar, "Yardım et, CodeGolf Man! Sen benim tek umudumsun!"
Sorun
Android kilit ekranı, parmağınızı bir noktadan diğerine kaydırarak bağlanabilen 3 x 3 nokta ızgarasıdır. Bir parola, herhangi bir sayıda nokta içeren ve herhangi bir sayıda noktayı içermeyen olası bir yol olarak kabul edilir. (Gerçek bir telefonda, yol en az 4 nokta uzunluğunda olmalıdır. Bu zorluk için bu kısıtlamayı göz ardı edin.) Apple, 3 x 3 ızgarasını (M * N) / 9 olan bir M x N ızgarasıyla değiştirmeyi planlıyor. Kez daha iyi!
Kurallar:
Örneğin, 1 - 9 arasında numaralandırılmış noktalı 3x3 ızgarada:
1 2 3
4 5 6
7 8 9
Bazı geçerli yollar:
1
3
7,2,3
1,5,9,2
1,8,6,5,4
4,2,3,5,6,7,8,9
5,9,6,4
Ve bazı geçersiz yollar:
1,3
1,9,5
7,5,4,7
4,6
Girişiniz üç rakam olacaktır:
(M,N,d)
Kılavuzun M x N olduğu ve d yolun uzunluğu
1 <= M <= 16
1 <= N <= 16
1 <= d <= M * N
Programınıza veya işlevinize girişe virgülle ayrılmış bir dize olarak verilecek ve bu uzunluktaki olası şifrelerin sayısını döndürmelidir. Örneğin:
Input: 2,2,1
Output: 4
Input: 2,2,2
Output: 12
Input: 7,4,1
Output: 28
Standart kod golf kuralları geçerlidir, en kısa kod kazanır!
//If I've made a mistake or the rules are unclear, please correct me!
256!
olarak, 16 x 16 ızgaradaki noktaların tüm permütasyonlarından hangisinin geçerli bir kilit açma düzenini temsil ettiğini doğrulayan bir program yazmak kolaydır . Uygulamada, böyle bir program asla sonlandırılmaz.