J'ai des difficultés à parcourir une liste. J'ai fait ce code qui me donne une liste de nombres qui sont également divisés par la somme de leurs chiffres. Par exemple, considérons le nombre 123: 123/6 = 20,5, de sorte qu'il ne sera pas dans la liste. D'une autre part 280 sera sur la liste, parce que 280/10 = 28.Trouver des "lacunes" dans une liste de nombres
let inaHelper x = (floor(x)`mod`10)+ (floor(x/10)`mod`10)+(floor(x/100)`mod`10)
let ina = [x | x <- [1..999] , x `mod` (inaHelper x) == 0 ]
[1,2,3,4,5,6,7,8,9,10,12,18,20,21,24,27,30,36,40,42,45,48,50,54,60,63,70,72,80,81,84,90,100,102,108,110,111,112,114,117,120,126,132,133,135,140,144,150,152,153,156,162,171,180,190,192,195,198,200,201,204,207,209,210,216,220,222,224,225,228,230,234,240,243,247,252,261,264,266,270,280,285,288,300,306,308,312,315,320,322,324,330,333,336,342,351,360,364,370,372,375,378,392,396,399,400,402,405,407,408,410,414,420,423,432,440,441,444,448,450,460,465,468,476,480,481,486,500,504,506,510,511,512,513,516,518,522,531,540,550,552,555,558,576,588,592,594,600,603,605,612,621,624,629,630,640,644,645,648,660,666,684,690,700,702,704,711,715,720,730,732,735,736,738,756,770,774,777,780,782,792,800,801,803,804,810,820,825,828,832,840,846,864,870,874,880,882,888,900,902,910,912,915,918,935,936,954,960,966,972,990,999]
Mais mon problème est maintenant: dans la liste ci-dessus, je ne veux que les chiffres qui ne sera pas un "voisin" dans un écart de 5 unités. Par exemple, le nombre 300 sera dans la nouvelle liste parce que ses voisins (288 et 306) ne sont pas dans l'écart de 5 unités.
Je suis arrivé ce code:
let rare = [ x | x <- [ina] , ((x-5) >= [ina-1]) && ((x+5) <= [ina+1]) ]
Je suis un débutant, quelqu'un peut-il aider?
Ne pas utiliser le sol, utiliser div. – augustss