Guest User

Untitled

a guest
Oct 16th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. class Amida
  4. def initialize(number)
  5. @number = number
  6. @depth = number * 2
  7. @goal = rand(number)
  8. @data = generate
  9. end
  10.  
  11. def render
  12. puts @number.times.to_a.map { |n| "%c" % (n + 65) }.join(" ")
  13.  
  14. @data.each do |line|
  15. puts [ nil, *line.map { |e| e == 1 ? "---" : " " }, nil ].join("|")
  16. end
  17.  
  18. puts " " * (@goal * 4) + "*"
  19. end
  20.  
  21. private
  22. def generate
  23. loop do
  24. prev = 0
  25.  
  26. amida = @depth.times.map { |i|
  27. (@number - 1).times.map { |j|
  28. if prev == 1
  29. prev = 0
  30. else
  31. prev = rand(100) < 22 ? 1 : 0
  32. end
  33. }
  34. }.to_a
  35.  
  36. return amida if amida.transpose.all? { |line| line.inject(&:+) > 0 }
  37. end
  38. end
  39. end
  40.  
  41. n = (ARGV[0] || 5).to_i
  42.  
  43. amida = Amida.new(n)
  44. amida.render
Add Comment
Please, Sign In to add comment