Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- class Amida
- def initialize(number)
- @number = number
- @depth = number * 2
- @goal = rand(number)
- @data = generate
- end
- def render
- puts @number.times.to_a.map { |n| "%c" % (n + 65) }.join(" ")
- @data.each do |line|
- puts [ nil, *line.map { |e| e == 1 ? "---" : " " }, nil ].join("|")
- end
- puts " " * (@goal * 4) + "*"
- end
- private
- def generate
- loop do
- prev = 0
- amida = @depth.times.map { |i|
- (@number - 1).times.map { |j|
- if prev == 1
- prev = 0
- else
- prev = rand(100) < 22 ? 1 : 0
- end
- }
- }.to_a
- return amida if amida.transpose.all? { |line| line.inject(&:+) > 0 }
- end
- end
- end
- n = (ARGV[0] || 5).to_i
- amida = Amida.new(n)
- amida.render
Add Comment
Please, Sign In to add comment