Created
October 19, 2008 18:11
-
-
Save luislavena/17895 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
s(:block, | |
s(:gasgn, :$count, s(:lit, 0)), | |
s(:defn, | |
:valid?, | |
s(:scope, | |
s(:block, | |
s(:args, :state, :x, :y), | |
s(:iter, | |
s(:call, s(:lit, 0), :upto, s(:array, s(:lit, 8))), | |
s(:dasgn_curr, :i), | |
s(:block, | |
s(:if, | |
s(:and, | |
s(:not, s(:call, s(:dvar, :i), :==, s(:array, s(:lvar, :y)))), | |
s(:call, | |
s(:call, | |
s(:call, s(:lvar, :state), :[], s(:array, s(:lvar, :x))), | |
:[], | |
s(:array, s(:dvar, :i))), | |
:==, | |
s(:array, | |
s(:call, | |
s(:call, s(:lvar, :state), :[], s(:array, s(:lvar, :x))), | |
:[], | |
s(:array, s(:lvar, :y)))))), | |
s(:return, s(:false)), | |
nil), | |
s(:if, | |
s(:and, | |
s(:not, s(:call, s(:dvar, :i), :==, s(:array, s(:lvar, :x)))), | |
s(:call, | |
s(:call, | |
s(:call, s(:lvar, :state), :[], s(:array, s(:dvar, :i))), | |
:[], | |
s(:array, s(:lvar, :y))), | |
:==, | |
s(:array, | |
s(:call, | |
s(:call, s(:lvar, :state), :[], s(:array, s(:lvar, :x))), | |
:[], | |
s(:array, s(:lvar, :y)))))), | |
s(:return, s(:false)), | |
nil))), | |
s(:lasgn, | |
:x_from, | |
s(:call, | |
s(:call, s(:lvar, :x), :/, s(:array, s(:lit, 3))), | |
:*, | |
s(:array, s(:lit, 3)))), | |
s(:lasgn, | |
:y_from, | |
s(:call, | |
s(:call, s(:lvar, :y), :/, s(:array, s(:lit, 3))), | |
:*, | |
s(:array, s(:lit, 3)))), | |
s(:iter, | |
s(:call, | |
s(:lvar, :x_from), | |
:upto, | |
s(:array, s(:call, s(:lvar, :x_from), :+, s(:array, s(:lit, 2))))), | |
s(:dasgn_curr, :xx), | |
s(:iter, | |
s(:call, | |
s(:lvar, :y_from), | |
:upto, | |
s(:array, s(:call, s(:lvar, :y_from), :+, s(:array, s(:lit, 2))))), | |
s(:dasgn_curr, :yy), | |
s(:if, | |
s(:and, | |
s(:or, | |
s(:not, s(:call, s(:dvar, :xx), :==, s(:array, s(:lvar, :x)))), | |
s(:not, s(:call, s(:dvar, :yy), :==, s(:array, s(:lvar, :y))))), | |
s(:call, | |
s(:call, | |
s(:call, s(:lvar, :state), :[], s(:array, s(:dvar, :xx))), | |
:[], | |
s(:array, s(:dvar, :yy))), | |
:==, | |
s(:array, | |
s(:call, | |
s(:call, s(:lvar, :state), :[], s(:array, s(:lvar, :x))), | |
:[], | |
s(:array, s(:lvar, :y)))))), | |
s(:return, s(:false)), | |
nil))), | |
s(:true)))), | |
s(:defn, | |
:next_state, | |
s(:scope, | |
s(:block, | |
s(:args, :state, :x, :y), | |
s(:gasgn, :$count, s(:call, s(:gvar, :$count), :+, s(:array, s(:lit, 1)))), | |
s(:if, | |
s(:call, s(:lvar, :y), :==, s(:array, s(:lit, 9))), | |
s(:and, | |
s(:lasgn, :y, s(:lit, 0)), | |
s(:lasgn, :x, s(:call, s(:lvar, :x), :+, s(:array, s(:lit, 1))))), | |
nil), | |
s(:if, | |
s(:call, s(:lvar, :x), :==, s(:array, s(:lit, 9))), | |
s(:return, s(:true)), | |
nil), | |
s(:if, | |
s(:call, | |
s(:call, | |
s(:call, s(:lvar, :state), :[], s(:array, s(:lvar, :x))), | |
:[], | |
s(:array, s(:lvar, :y))), | |
:zero?), | |
s(:iter, | |
s(:call, s(:lit, 1), :upto, s(:array, s(:lit, 9))), | |
s(:dasgn_curr, :i), | |
s(:block, | |
s(:attrasgn, | |
s(:call, s(:lvar, :state), :[], s(:array, s(:lvar, :x))), | |
:[]=, | |
s(:array, s(:lvar, :y), s(:dvar, :i))), | |
s(:if, | |
s(:and, | |
s(:fcall, | |
:valid?, | |
s(:array, s(:lvar, :state), s(:lvar, :x), s(:lvar, :y))), | |
s(:fcall, | |
:next_state, | |
s(:array, | |
s(:lvar, :state), | |
s(:lvar, :x), | |
s(:call, s(:lvar, :y), :+, s(:array, s(:lit, 1)))))), | |
s(:return, s(:true)), | |
nil))), | |
s(:block, | |
s(:if, | |
s(:fcall, | |
:valid?, | |
s(:array, s(:lvar, :state), s(:lvar, :x), s(:lvar, :y))), | |
nil, | |
s(:return, s(:false))), | |
s(:return, | |
s(:fcall, | |
:next_state, | |
s(:array, | |
s(:lvar, :state), | |
s(:lvar, :x), | |
s(:call, s(:lvar, :y), :+, s(:array, s(:lit, 1)))))))), | |
s(:attrasgn, | |
s(:call, s(:lvar, :state), :[], s(:array, s(:lvar, :x))), | |
:[]=, | |
s(:array, s(:lvar, :y), s(:lit, 0))), | |
s(:false)))), | |
s(:lasgn, | |
:start, | |
s(:array, | |
s(:array, | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 4), | |
s(:lit, 0), | |
s(:lit, 5), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 1)), | |
s(:array, | |
s(:lit, 0), | |
s(:lit, 7), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 3), | |
s(:lit, 0)), | |
s(:array, | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 4), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 9), | |
s(:lit, 0), | |
s(:lit, 0)), | |
s(:array, | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 3), | |
s(:lit, 5), | |
s(:lit, 0), | |
s(:lit, 4), | |
s(:lit, 1), | |
s(:lit, 0), | |
s(:lit, 0)), | |
s(:array, | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 7), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 4), | |
s(:lit, 0), | |
s(:lit, 0)), | |
s(:array, | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 8), | |
s(:lit, 9), | |
s(:lit, 0), | |
s(:lit, 1), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0)), | |
s(:array, | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 9), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 6), | |
s(:lit, 0), | |
s(:lit, 0)), | |
s(:array, | |
s(:lit, 0), | |
s(:lit, 8), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 2), | |
s(:lit, 0)), | |
s(:array, | |
s(:lit, 4), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 2), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0), | |
s(:lit, 0)))), | |
s(:lasgn, :start_time, s(:call, s(:const, :Time), :new)), | |
s(:if, | |
s(:fcall, :next_state, s(:array, s(:lvar, :start), s(:lit, 0), s(:lit, 0))), | |
s(:block, | |
s(:fcall, | |
:puts, | |
s(:array, | |
s(:dstr, | |
"time elapsed: ", | |
s(:evstr, | |
s(:call, | |
s(:call, s(:const, :Time), :new), | |
:-, | |
s(:array, s(:lvar, :start_time)))), | |
s(:str, " sec.")))), | |
s(:fcall, | |
:puts, | |
s(:array, s(:dstr, "count: ", s(:evstr, s(:gvar, :$count))))), | |
s(:iter, | |
s(:call, s(:lvar, :start), :each), | |
s(:dasgn_curr, :val), | |
s(:fcall, | |
:puts, | |
s(:array, s(:call, s(:dvar, :val), :join, s(:array, s(:str, " "))))))), | |
s(:fcall, :puts, s(:array, s(:str, "Not solveable!"))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment