View RPLExamples_1-1.rb
module Sudoku | |
class Puzzle | |
ASCII = ".123456789" | |
BIN = "\000\001\002\003\004\005\006\007\010\011" | |
def initialize(lines) | |
if (lines.respond_to? :join) | |
s = lines.join | |
else | |
s = lines.dup |
View sokoban_solver.rb
module Sokoban | |
Pos = Struct.new(:x, :y) do | |
def dirs | |
[Pos.new(x + 1, y), Pos.new(x, y - 1), | |
Pos.new(x - 1, y), Pos.new(x, y + 1)] | |
end | |
def inspect = "<#{x},#{y}>" | |
def over_there(e) = Pos.new(2 * e.x - x, 2 * e.y - y) | |
def <=>(a) = [x, y] <=> [a.x, a.y] |
View startrek.rb
require "curses" | |
class StarTrek | |
class DisplayIO | |
Width = Curses.cols | |
UpperH = 10 | |
def initialize | |
Curses.init_screen | |
Curses.noraw |
View liar_another.rb
imp = ->(p, q) {!p || q} | |
eqv = ->(p, q) {!(!p ^ !q)} | |
def output(say, cond) | |
trans = ->(ary) {"[#{ary.map {|f| f ? "T" : "F"}.join(" ")}]"} | |
puts [trans.(say), trans.(cond)].join(" ") | |
end | |
cond = Array.new(5) | |
result = (1 << 5) - 1 |
View aoj_0192.rb
class Car | |
num = 1 | |
define_method(:initialize) do |wait_time:| | |
@num = num | |
num += 1 | |
@wait_time = wait_time | |
end | |
attr_reader :num, :wait_time | |
View file_search
#!/usr/bin/env ruby | |
require "gtk2" | |
class GUI < Gtk::Window | |
def initialize | |
super("File Search") | |
set_width_request(400) | |
set_resizable(false) | |
@file_name = Dir.pwd | |
View gray_scott_gtk.rb
require 'numo/narray' | |
require 'gtk3' | |
include Numo | |
SPACE_GRID_SIZE = 256 | |
VISUALIZATION_STEP = 8 | |
Dx = 0.01 | |
Du = 2e-5 | |
Dv = 1e-5 |
View tetris_for_Ruby2D.rb
require "ruby2d" | |
include Ruby2D::DSL | |
Wait = 18 | |
class Tetromino | |
def initialize | |
@pat = Array.new(4) | |
pats = [["1111"], ["11", "11"], ["011", "110"], ["110", "011"], | |
["100", "111"], ["001", "111"], ["010", "111"]] |
View simulated_annealing.rb
def dist(a, b) | |
case | |
when a[1, 2] == b[0, 2] then 1 | |
when a[-1] == b[0] then 2 | |
else 3 | |
end | |
end | |
L = 64 | |
start_t = 171 |
View operations_parser.rb
def parse(text) | |
splited = text.scan(/[0-9\.]+|\+|\-|\*|\/|\(|\)|=/) | |
output = [] | |
stack = [] | |
a = nil | |
until (token = splited.shift) == "=" | |
case token | |
when "(" then stack << token | |
when ")" |
NewerOlder