Meydan okuma
İki karenin farkı veya iki küpün farkı, hatta belki daha yüksek güçler olarak ifade edilebilecek birçok sayı vardır. Kareler hakkında konuşurken, 2 karenin farkı olarak bir sayı yazmanın çeşitli yolları vardır, 75. Yazabilirsin:
75 = (10)^2 - (5)^2
= (14)^2 - (11)^2
= (38)^2 - (37)^2
Öyleyse meydan okuma hakkında konuşalım. İlk önce, kullanıcı bir sayı girer, ardından n için bir değer girer. Bu sayının aⁿ - bⁿ şeklinde yazılabileceği tüm yolları göstermeniz gerekir.
Giriş ve çıkış
Giriş, n'nin değeri ve değeri olacaktır. Çıktınız, yukarıda belirtilen koşulun yerine getirilmesi için tüm 'a' ve 'b' çiftlerine sahip olacaktır. Çiftteki ilk sayı, ikinci olandan büyük olmalıdır. Lütfen a, b, n ve giriş numaralarının tümünün pozitif tam sayı ve n> 1 olduğunu unutmayın .
Örnekler
50, 2 -> (none)
32, 2 -> (9,7), (6, 2)
7, 3 -> (2,1)
665, 6 -> (3, 2)
81, 4 -> (none)
puanlama
Bu kod golf , yani en kısa kod kazanır!
==
UniHaskell'deki eşit işaret matematiğin uyumluluğunu ifade ettiği için biraz kafa karıştırıcıdır.