RosettaCodeData/Task/Fractran/Sidef/fractran.sidef

29 lines
654 B
Text
Raw Permalink Normal View History

2016-12-05 23:44:36 +01:00
var str ="17/91, 78/85, 19/51, 23/38, 29/33, 77/29, 95/23, 77/19, 1/17, 11/13, 13/11, 15/14, 15/2, 55/1"
2017-09-23 10:01:46 +02:00
const FractalProgram = str.split(',').map{.num} #=> array of rationals
2016-12-05 23:44:36 +01:00
func runner(n, callback) {
2017-09-23 10:01:46 +02:00
var num = 2
2016-12-05 23:44:36 +01:00
n.times {
2017-09-23 10:01:46 +02:00
callback(num *= FractalProgram.find { |f| f * num -> is_int })
2016-12-05 23:44:36 +01:00
}
}
func prime_generator(n, callback) {
var x = 0;
2017-09-23 10:01:46 +02:00
runner(Inf, { |num|
var l = num.log2
2016-12-05 23:44:36 +01:00
if (l.floor == l) {
2017-09-23 10:01:46 +02:00
callback(l.int)
++x == n && return nil
2016-12-05 23:44:36 +01:00
}
})
}
STDOUT.autoflush(true)
runner(20, {|n| print (n, ' ') })
print "\n"
prime_generator(20, {|n| print (n, ' ') })
print "\n"