RosettaCodeData/Task/Subleq/Sidef/subleq.sidef
2023-07-01 13:44:08 -04:00

16 lines
321 B
Text

var memory = ARGV.map{.to_i};
var ip = 0;
while (ip.ge(0) && ip.lt(memory.len)) {
var (a, b, c) = memory[ip, ip+1, ip+2];
ip += 3;
if (a < 0) {
memory[b] = STDIN.getc.ord;
}
elsif (b < 0) {
print memory[a].chr;
}
elsif ((memory[b] -= memory[a]) <= 0) {
ip = c
}
}