diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-21 11:09:20 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-21 11:09:20 +0100 |
| commit | fe7b8336097b2935ae340ce43034a93d6b096b13 (patch) | |
| tree | e1c80dc9afbc6374ff36c37acbc2c5a26b294891 /visualizer.rb | |
| parent | 6be6c78c8856b14c19a1958dfa3993cc0ced1b3f (diff) | |
| download | push_swap-fe7b8336097b2935ae340ce43034a93d6b096b13.tar.gz push_swap-fe7b8336097b2935ae340ce43034a93d6b096b13.tar.bz2 push_swap-fe7b8336097b2935ae340ce43034a93d6b096b13.zip | |
WIP: better algo with 'sorting frame'
Diffstat (limited to 'visualizer.rb')
| -rwxr-xr-x | visualizer.rb | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/visualizer.rb b/visualizer.rb index 343b46b..3a3a35d 100755 --- a/visualizer.rb +++ b/visualizer.rb @@ -51,40 +51,45 @@ def red(s) "\033[31m#{s}\033[0m" end -def print_stacks(a, b) +def print_stacks(a, b, max_elem) puts " A B\n" - puts "------------------------------" + puts "-" * (2 * max_elem + 10) - a_str = ARGV.length.times.map { |i| ARGV.length - i }.map do |i| + a_str = (1 + ARGV.length).times.map { |i| ARGV.length - i }.map do |i| unless a.elements[i].nil? - "| " + a.elements[i].to_s.ljust(2) + " " + green(("+" * a.elements[i]).ljust(10)) + "| " + "| " + a.elements[i].to_s.ljust(2) + " " + green(("+" * a.elements[i]).ljust(max_elem)) + "| " else - "| #{green(' ' * 10)}| " + "| #{green(' ' * max_elem)}| " end end - b_str = ARGV.length.times.map { |i| ARGV.length - i }.map do |i| + b_str = (1 + ARGV.length).times.map { |i| ARGV.length - i }.map do |i| unless b.elements[i].nil? - b.elements[i].to_s.ljust(2) + " " + red(("+" * b.elements[i]).ljust(10)) + "|" + b.elements[i].to_s.ljust(2) + " " + red(("+" * b.elements[i]).ljust(max_elem)) + "|" else - " #{red(' ' * 10)}|" + " #{red(' ' * max_elem)}|" end end puts a_str.zip(b_str).map { |ab| ab[0] + ab[1] }.join("\n") - puts "------------------------------" + puts "-" * (2 * max_elem + 10) puts end -a = Stack.new(ARGV.map(&:to_i)) +a = Stack.new(ARGV.map(&:to_i).reverse) b = Stack.new([]) +max_elem = a.elements.max + +puts a.elements.length + # lines = $stdin.read.split("\n") + +print_stacks(a, b, max_elem) + $stdin.each_line do |op| - print_stacks(a, b) op.strip! - puts "> #{op}" case op when "sa" then a.swap when "sb" then b.swap @@ -108,9 +113,8 @@ $stdin.each_line do |op| a.rotate_rev b.rotate_rev else - puts "Error: wrong op" - exit + puts "Debug:" end + puts "> #{op}" + print_stacks(a, b, max_elem) end - -print_stacks(a, b) |
