RosettaCodeData/Task/Yellowstone-sequence/Crystal/yellowstone-sequence.cr
2026-04-30 12:34:36 -04:00

32 lines
626 B
Crystal

def yellowstone
used = Set(Int32).new
penult, last = 2, 3
start = 4
iter = Iterator.of do
while start.in? used
used.delete start
start += 1
end
(start..).each do |n|
if !used.includes?(n) && n.gcd(last) == 1 && n.gcd(penult) > 1
used << n
penult, last = last, n
break n
end
end
end
(1..3).each.chain iter
end
p yellowstone.first(30).to_a
values = yellowstone.first(100).to_a
height = (values.max - 1) // 8
(0..height).reverse_each do |i|
values.each do |v|
d = v - i*8
print d <= 0 ? ' ' : d >= 8 ? '█' : '\u2580' + d
end
puts
end