Skip to content

Instantly share code, notes, and snippets.

@yhara
Created September 9, 2010 10:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yhara/571695 to your computer and use it in GitHub Desktop.
Save yhara/571695 to your computer and use it in GitHub Desktop.
# coding: utf-8
# inspired by http://twitter.com/koizuka/status/23977421116
# see also: http://rtk.web.infoseek.co.jp/cjk/rads/169.html
# http://www.dangermouse.net/esoteric/haifu.html
class Yami
def initialize(src)
parse(src)
end
module YamiParser
OPS = {
"門" => [" ", :nop],
"閂" => :one], # 玉が1個入った箱を積みます。
"閆" => :three], # 玉が3個入った箱を積みます。
"𨳍" => :seven], # 玉が7個入った箱を積みます。
"𨳊" => :nine], # 玉を9個入った箱を積みます。
"閇" => :down], # 一番上の箱を、その下に移動します。
"閤" => :join], # 一番上とその下の箱の中身を合わせます。
"𨳦" => :double], # 一番上の箱の中身を2倍します。
"䦤" => :quadruple], # 一番上の箱の中身を4倍します。
"䦓" => :test],
"閞" => :describe], # 一番上の箱の中身の
"閔" => :writing],
"闇" => :hear],
"闏" => :wind],
"䦨" => :east], # 東へ1マス移動します。
"閪" => :west], # 西へ1マス移動します。
"閍" => :direction], # 最後に移動した方向が東なら1、西なら-1をTODO
"䦳" => :home], # 原点に戻ります。
"闧" => :far], # 原点から離れる方向に1マス移動します。
"𨶛" => :tribute], # 玉を王様に献上します。
"䦍" => :request], # 玉を王様からもらいます。
"王" => :king], # 王様に最後に渡した玉の数をTODO
"䦜" => :self],
"閚" => :standup],
"䦟" => :sitdown],
}
def parse(src)
end
end
include YamiParser
module YamiInterpreter
def evaluate(code)
@stdout ||= $stdout
@stack = []
code.each do |op|
case op
when :nop then sleep 0.1
when :one then push 1
when :three then push 3
when :seven then push 7
when :nine then push 9
when :double then push(pop * 2)
when :quadruple then push(pop * 4)
when :sound then @stdout.print(pop.chr)
when :wind then @stack.clear
else
end
end
end
private
def push(o)
@stack.push o
end
def pop(o)
@stack.pop || 0
end
end
include YamiInterpreter
end
 門
ノ閁
一閂
人閃
丁閅
九𨳊
七𨳍
土䦌
乞䦍
三閆
下閇
干閈
オ閉
山閊
小𨳒
元䦎
介䦏
手䦐
夬䦑
开開
 閌
方閍
 閎
王閏
毛閐
木閑
月閒
日間
文閔
牙閕
水閖
斗閗
壬𨳝
双𨳦
石䦒
占䦓
旦䦔
甲閘
市閙
立閚
平閛
可閜
令閝
弁閞
必閟
玉閠
 䦕
吉䦖
血䦗
 䦘
寺䦙
舌䦚
争䦛
亥閡
 関
各閣
合閤
伐閥
 閦
共閧
圭閨
虫閩
西閪
先𨴐
吾䦜
赤䦝
 䦞
坐䦟
困閫
良閬
呂閭
廷閮
沙閯
臼閰
 閱
 閲
車閳
貝閴
身𨉖
兵𨴴
 䦠
官䦡
法䦢
 䦣
双䦤
林䦥
金䦦
 䦧
東䦨
 閵
昌閶
亞閸
 閹
 閺
 閻
於閼
昏閽
或閾
受閿
巷闀
門闁
巻闂
夏䦩
 䦪
英䦫
契䦬
香䦭
春䦮
致䦯
臭闃
要闄
 闅
品闆
音闇
韋闈
 闉
活闊
 闋
東闌
 闍
泉闎
風闏
屋𨵱
眞闐
臬闑
 闒
 闓
 闔
 闕
馬闖
 闗
 闘
能𨶙
貢𨶛
亀䦰
啓闙
規闚
堂闛
 關
敗闝
鳥䦱
敢闞
 闟
貴闠
 闡
 𨶹
 䦲
郷䦳
 䦴
 闢
 闣
 闤
達闥
豊闦
萬𨷈
 䦵
遠闧
 𨷯
 𨷻
-----------------------
ノ 一 人 丁 九 七 土 乞 三 下 干 オ 山 小 元 介 手
夬 开 方 王 毛 木 月 日 文 牙 水 斗 壬 双 石 占 旦
甲 市 立 平 可 令 弁 必 玉 吉 血 寺 舌 争 亥 各 合
伐 共 圭 虫 西 先 吾 赤 坐 困 良 呂 廷 沙 臼 車 貝
呂 身 兵 官 法 林 金 東 昌 亞 於 昏 或 受 巷 門
巻 夏 英 契 香 春 致 臭 要 品 音 韋 活 東 泉 風 屋
眞 臬 馬 能 貢 亀 啓 規 堂 敗 鳥 敢 貴 郷 達 豊 萬 遠  
数字:九 七 三 一
曜日:月 水 木 金 土 日 #火がない
五行:水 木 金 土 # 〃
季節:夏 春
方角:東 西
自然:月 水 木 金 土 日 山 林 泉 石 風 香 臭 音
動物:馬 亥 人 鳥 亀 貝 虫
形容詞:良 遠 必 可 先 豊 各 平 下 小 或 活
動詞:争 巻 敗 合 占 伐 弁 乞 双 令 受 坐 立
人間:兵 官 手 血 毛 身 車 呂 舌
場所:門 屋 郷 巷 廷 堂 寺 山 林 泉
門閁閂閃閅𨳊𨳍䦌䦍閆閇閈閉閊𨳒䦎䦏䦐䦑開閌閍閎閏閐閑閒間閔閕閖閗𨳝𨳦䦒䦓䦔閘閙閚閛閜閝閞閟閠䦕䦖䦗䦘䦙䦚䦛閡関閣閤閥閦閧閨閩閪𨴐䦜䦝䦞䦟閫閬閭閮閯閰閱閲閳閴閭𨉖𨴴䦠䦡䦢䦣䦤䦥䦦䦧䦨閵閶閸閹閺閻閼閽閾閿闀闁闂䦩䦪䦫䦬䦭䦮䦯闃闄闅闆闇闈闉闊闋闌闍闎闏𨵱闐闑闒闓闔闕闖闗闘𨶙𨶛䦰闙闚闛關闝䦱闞闟闠闡𨶹䦲䦳䦴闢闣闤闥闦𨷈䦵闧𨷯𨷻
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment