Aquests problemes es troben inspirats en alguns dels problemes de Project Euler que podeu trobar a https://projecteuler.net.
La suma dels quadrats dels primers 10 naturals és . El quadrat de la suma dels primers 10 naturals és . Per tant, la diferència entre la suma dels quadrats dels primers 10 naturals i el quadrat de la suma dels primers 10 naturals és .
Feu una funció diffSqrs :: Integer -> Integer que,
donat un natural
,
retorni la suma dels quadrats dels primers
naturals i el quadrat de la suma dels primers
naturals.
Una tripleta pitagòrica són tres naturals
tals que
.
Feu una funció
pythagoreanTriplets :: Int -> [(Int, Int, Int)] que,
donat un natural
,
retorni la llista de totes les tripletes pitagòriques que sumin
.
Cada tripleta ha d’estar ordenada de forma que
i la llista ha de estar ordenada respecte la
.
Feu una funció tartaglia :: [[Integer]] que retorni
una llista infinita amb les files de del triangle de Tartaglia (també
anomenat triangle de Pascal).
Feu una funció sumDigits :: Integer -> Integer
que retorni la suma dels dígits d’un natural. Utilitzeu funcions d’ordre
superior enlloc de recursivitat.
Feu una funció digitalRoot :: Integer -> Integer
que retorni l’arrel digital d’un natural. Utilitzeu funcions d’ordre
superior enlloc de recursivitat.
Cada funció puntua 20 punts.
Input
diffSqrs 10 map pythagoreanTriplets [3,12,84] take 5 tartaglia sumDigits 32768 digitalRoot 65536
Output
2640 [[],[(3,4,5)],[(12,35,37),(21,28,35)]] [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 26 7