Skip to content

Instantly share code, notes, and snippets.

@luislavena
Created October 19, 2008 18:11
Show Gist options
  • Save luislavena/17895 to your computer and use it in GitHub Desktop.
Save luislavena/17895 to your computer and use it in GitHub Desktop.
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