diff options
Diffstat (limited to '1-sliding-puzzle/entry.pretty.rb')
| -rw-r--r-- | 1-sliding-puzzle/entry.pretty.rb | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/1-sliding-puzzle/entry.pretty.rb b/1-sliding-puzzle/entry.pretty.rb new file mode 100644 index 0000000..80e493e --- /dev/null +++ b/1-sliding-puzzle/entry.pretty.rb @@ -0,0 +1,80 @@ +$b = 'bcdefghia'; +eval($s=' +t = { + h: [1, 0], + j: [0, -1], + k: [0, 1], + l: [-1, 0], + i: [0, 0] +}; +p = -> a, b { + i = $b.index(?a); + x = i % 3 + a; + y = i / 3 + b; + (x < 0 || 2 < x || y < 0 || 2 < y) || + ($b[j = y * 3 + x], $b[i] = $b[i], $b[j]) +}; +i = (o = :"#{$*[0]}") == :i; +while (o != :q); + if (q = t[o]); + p[*q]; + else; + (o = o.to_s.to_i) > 0 && ( + srand(o); + a = b = n = 45; + (p[*(a, b = (t.values - [[-a, -b], [0, 0]]).sample)] && n -= 1) while (n > 0); + ); + end; + print("$b=\47#$b\47;eval($s=\47"); + n = "1111141424414143341142414424344111143434".scan(/.{,5}/); + m = "000001100101111".scan(/.{,3}/); + s = 0; + b = -> _ = 1 {_.times{print($s[(s += 1) - 1])}}; + w = -> _ = 13 {print "\40" * _}; + b[22]; + puts; + 3.times {|y| + b[45]; + puts; + b[2]; + w[]; + b[]; + w[]; + b[]; + w[]; + b[2]; + puts; + 10.times {|l| + b[2]; + 3.times {|x| + w[2]; + $b[y * 3 + x] == ?a ? ( + (l == 3 && !print("\40\40\124\122\111\103\113\40\40")) || + (l == 5 && !print("\105\120\111\123\117\104\105\40\111")) || + w[9] + ) : + m[n[$b[y * 3 + x].ord - 98][l / 2].to_i].chars{(_1 == ?1 ? b : w)[3]}; + w[2]; + b[x / 2 + 1] + }; + puts + }; + b[2]; + w[]; + b[]; + w[]; + b[]; + w[]; + b[2]; + puts; + b[45]; + puts + }; + b[9]; + puts("\47.gsub(/[[:space:][:upper:]]/,%%%));"); + i || + break; + print("\12enter\40[hjkl]\40or\40[q]uit\40>\40"); + o = :"#{$stdin.gets.chomp}"; + puts; +end'.gsub(/[[:space:][:upper:]]/,%%%)); |
