RosettaCodeData/Task/Ascending-primes/ArkScript/ascending-primes.ark

25 lines
516 B
Plaintext

(import std.Math :sqrt :prime?)
(import std.List :iota)
(import std.String :join)
(import std.Range)
(let ascending (fun (n f) {
(mut nums (iota 1 9))
(mut i 0)
(mut matched [])
(while (and (< (len matched) n) (< i (len nums))) {
(let val (@ nums i))
(if (f val)
(append! matched val))
(mut r (range:range (+ 1 (mod val 10)) 10))
(set r (range:map r (fun (k) (+ k (* 10 val)))))
(concat! nums r)
(set i (+ 1 i)) })
matched }))
(print (join (ascending 100 prime?) ", "))