Skip to content

Instantly share code, notes, and snippets.

@obelisk68
obelisk68 / union_find1.rb
Last active April 18, 2023 06:35
Union Find
#簡素版
class UnionFind
def initialize(size)
@rank = Array.new(size, 0)
@parent = Array.new(size, &:itself)
end
def unite(x, y)
x = root(x)
@obelisk68
obelisk68 / kaki-lifegame.rb
Last active May 8, 2022 10:26
エディタ付きライフゲーム(Ruby)
require 'gtk2'
module LifeGame
class Field
MG = 4
Small, Large = [70, 50], [85, 60]
def initialize
@width, @height = Small
@size = :small
@obelisk68
obelisk68 / tetris_for_Ruby2D.rb
Last active March 29, 2022 18:35
Ruby2D を使ったテトリス
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"]]
@obelisk68
obelisk68 / another_sudoku_solver.rb
Last active March 25, 2022 04:21
数独ソルバー
module Sudoku
Size = 81
Length = 9
INDEXS = [0, 3, 6, 27, 30, 33, 54, 57, 60]
.map { |i| [i, i+1, i+2, i+9, i+10, i+ 11, i+18, i+19, i+20] }
class CertainMap
def initialize(ary)
@field = ary
@obelisk68
obelisk68 / sokoban_solver.rb
Last active January 24, 2021 14:29
倉庫番ソルバー(Brute Force)
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]
@obelisk68
obelisk68 / startrek.rb
Last active October 23, 2020 02:04
StarTrek Game (Ruby)
require "curses"
class StarTrek
class DisplayIO
Width = Curses.cols
UpperH = 10
def initialize
Curses.init_screen
Curses.noraw
@obelisk68
obelisk68 / max_heap.rb
Last active May 17, 2020 00:42
二分ヒープの Ruby 実装
Node = Struct.new(:key, :value)
class MaxHeap
def initialize
@heap = [nil]
@size = 0
end
attr_reader :heap, :size
def insert(key, value)
@obelisk68
obelisk68 / oekaki_sample19a.rb
Last active May 4, 2020 23:25
GTK+ で落書き 15
require 'oekaki'
Oekaki.app width: 500, height: 500 do
draw { clear(color(0x1694, 0x3447, 0x8d60)) }
t = Oekaki::Turtle.new
t.color(0xfe5f, 0xaa9a, 0x212a)
ln = 10
e = Enumerator.new do |y|
@obelisk68
obelisk68 / liar_another.rb
Last active May 4, 2020 05:13
嘘つき問題
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
@obelisk68
obelisk68 / aoj_0192.rb
Last active April 27, 2020 23:40
AOJ 0192: Multistory Parking Lot
class Car
num = 1
define_method(:initialize) do |wait_time:|
@num = num
num += 1
@wait_time = wait_time
end
attr_reader :num, :wait_time