Skip to content

Instantly share code, notes, and snippets.

@obelisk68
obelisk68 / rubysdl_tetris.rb
Last active September 29, 2018 14:04
Ruby/SDL でテトリス
# Gem 'rubysdl' に付属しているサンプルを modify したものです
require 'sdl'
class Object
def deep_clone
Marshal::load(Marshal.dump(self))
end
end
class Pattern
@obelisk68
obelisk68 / μSchemeR_debug.rb
Created August 7, 2018 15:20
μSchemeR関連
parameters = [:factorial]
args = [[:lambda, [:n], [:if, [:<, :n, 1], 1, [:*, :n, [:factorial, [:-, :n, 1]]]]]]
body = [:factorial, 4]
ext_env = [{:factorial=>:dummy},
{:+ =>[:prim, #<Proc:0x000055a6a4665a80@μSchemeR1.rb:24 (lambda)>],
:- =>[:prim, #<Proc:0x000055a6a4665a30@μSchemeR1.rb:25 (lambda)>],
:* =>[:prim, #<Proc:0x000055a6a46659e0@μSchemeR1.rb:26 (lambda)>],
:/ =>[:prim, #<Proc:0x000055a6a4665990@μSchemeR1.rb:27 (lambda)>],
:> =>[:prim, #<Proc:0x000055a6a4665940@μSchemeR1.rb:28 (lambda)>],
@obelisk68
obelisk68 / gtk_sample2c.rb
Last active August 4, 2018 01:24
Ruby/GTK+ でちょっと考えた
require 'gtk2'
class GUI < Gtk::Window
Meth = [:wanwan, :nya]
def initialize(&bk)
super("GUI")
set_width_request(200)
box = Gtk::VBox.new
class CubeMaze
class Wall
def initialize(x, y, h, ob)
@wall = Array.new(h + 1) {Array.new(y) {Array.new(x, 1)}}
@x, @y = x, y
@cube = ob
end
attr_reader :wall
def break(num, n)
@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 / prime_table.rb
Last active April 30, 2018 01:42
省メモリで「エラトステネスの篩」同等の結果を得るコード
def prime_table(n)
return [] if n < 2
return [2] if n == 2
table = [2, 3]
i, step = 5, 2
while i <= n
guard = Math.sqrt(i).to_i
table.each do |prime|
break if (i % prime).zero?
if prime > guard
@obelisk68
obelisk68 / blackjack.rb
Last active March 17, 2019 12:46
カードゲーム「ブラックジャック」の実装
deck = nil #カードの山
shuffle = lambda do
print "カードをシャッフルします\n\n"
deck = 4.times.flat_map {|i| (1..13).map {|j| i * 100 + j} }.shuffle
end
# 一回の勝負
@obelisk68
obelisk68 / linuxmint_backup.rb
Last active April 20, 2018 11:13
home フォルダのバックアップ
require 'fileutils'
class String
def cut
/.+tomoki\/(.+)$/.match(self)[1]
end
end
def get_file_names(f)
dirs = Dir.glob("*")
@obelisk68
obelisk68 / lifegame_for_RubyPico.rb
Last active April 12, 2018 16:27
RubyPico 用ライフゲーム
class LifeGame
W, H = 124, 38
def initialize(n)
@field = new_field
scatter(n)
end
def set_cell(x, y)
@field[y + 1][x + 1] = 1
end
@obelisk68
obelisk68 / calender.rb
Last active April 12, 2018 04:49
Created by RubyPico at Thu Apr 12 12:29:20 2018
#for RubyPico (mruby)
#mrubyには String#center がないので適当に実装
class String
def center(n)
i = (n - length).div(2)
" " * i + self + " " * (n - i - length)
end
end