Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
16
Task/Amicable-pairs/Futhark/amicable-pairs.futhark
Normal file
16
Task/Amicable-pairs/Futhark/amicable-pairs.futhark
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
fun divisors(n: int): []int =
|
||||
filter (fn x => n%x == 0) (map (1+) (iota (n/2)))
|
||||
|
||||
fun amicable((n: int, nd: int), (m: int, md: int)): bool =
|
||||
n < m && nd == m && md == n
|
||||
|
||||
fun getPair (divs: [upper](int, int)) (flat_i: int): ((int,int), (int,int)) =
|
||||
let i = flat_i / upper
|
||||
let j = flat_i % upper
|
||||
in unsafe (divs[i], divs[j])
|
||||
|
||||
fun main(upper: int): [][2]int =
|
||||
let range = map (1+) (iota upper)
|
||||
let divs = zip range (map (fn n => reduce (+) 0 (divisors n)) range)
|
||||
let amicable = filter amicable (map (getPair divs) (iota (upper*upper)))
|
||||
in map (fn (np,mp) => [np.0, mp.0]) amicable
|
||||
Loading…
Add table
Add a link
Reference in a new issue