Skip to content

Instantly share code, notes, and snippets.

@plonk
plonk / yotechu.md
Last active June 29, 2019 00:43
うどん食うよてちゅー

うどん食うよてちゅー

くいしんぼうのよてちゅーは迷路の中で迷っていたらお腹が空いてしましまし た。このままでは飢え死にしてしまいます! ところが幸運なことにどこから かうどんの匂いが漂ってきています。よてちゅーに移動する方向を指示して、 うどんのある場所に連れて行ってあげてください。

ただし、よてちゅーは猪突猛進タイプの性格なので、ある方向に移動するとき は壁にぶつかるまで止まることはできません。

@plonk
plonk / asuka-name.cc
Last active June 27, 2019 13:28
アスカ見参の名前画面のための入力コマンド列を出力するプログラム(https://gist.github.com/plonk/465b632fc36799d198244f1ce9f9f30b のC++版)
#include <map>
#include <vector>
#include <string>
#include <iostream>
#include <cstdlib>
#include <cassert>
#include <algorithm>
#include <queue>
#include <tuple>
@plonk
plonk / asuka-name.rb
Last active June 27, 2019 13:13
アスカ見参の名前画面のための入力コマンド列を出力するプログラム(PeerCast Plays Urahakuの一部)
#!/usr/bin/env ruby
class Node
attr_reader :label, :edges
def initialize(label)
@label = label
@edges = {}
end
def inspect
@plonk
plonk / gen.rb
Created April 27, 2019 21:47
10万行の参考データ
i = 1
r = 'A'
until i == 100_000
puts "#{r} #{i}"
i += 1
r = r.succ
end
@plonk
plonk / get_excel_code.rb
Last active April 27, 2019 19:22
A, B, ... , Z, AA, AB, ... みたいなやつ
# 26進法で位分け。大きな位が右。
def places(n)
res = []
until n == 0
m = n % 26
n = n / 26
res.push(m)
end
return res
end
@plonk
plonk / class-import.lisp
Created January 15, 2019 22:52
A JavaScript class importing facility for JSCL
(defun growable (orig)
(let ((arr (make-array (length orig)
:element-type 'character
:adjustable t
:fill-pointer (length orig))))
(loop for i below (length orig) do
(setf (aref arr i) (aref orig i)))
arr
)
)
@plonk
plonk / clock.lisp
Created December 28, 2018 13:21
JSCL Web REPL 用ペカズンウォッチ
(defparameter LOGO "Pecazen")
(defparameter DIGIT_DISTANCE 0.3)
(defparameter SEC_HAND_LENGTH 0.30)
(defparameter SEC_HAND_WIDTH 0.005)
(defparameter MIN_HAND_LENGTH 0.30)
(defparameter MIN_HAND_WIDTH 0.02)
(defparameter HOUR_HAND_LENGTH 0.2)
(defparameter HOUR_HAND_WIDTH 0.03)
(defparameter STRAIGHT_UP_RADIAN (* (/ -1 4.0) 2 PI))
(defparameter OPPOSITE_LENGTH 0.025)
@plonk
plonk / calc.lua
Created December 10, 2018 16:03
再帰下降パーサーによるシンプルな電卓プログラム
-- 再帰下降パーサーによるシンプルな電卓プログラム
--
-- 使用例:
-- $ lua calc.lua
-- > 1+1
-- 2
--
-- 文法:
-- program := expression NEWLINE
-- expression := term [ ['+'|'-'] term ]*
@plonk
plonk / data_check.rb
Created October 29, 2018 17:11
データフォーマットチェックDSL
def match?(val, pattern)
if pattern.is_a?(Array) && pattern.size > 0
keyword, *rest = pattern
case keyword
when :list
val.is_a?(Array) &&
val.size == rest.size &&
val.zip(rest).all? { |subval, subpat| match?(subval, subpat) }
when :map
rest[0].is_a?(Hash) && val.is_a?(Hash) && rest[0].each_pair.all? { |key, subpat|
@plonk
plonk / repl2.rb
Created September 13, 2018 10:43
遅延評価のリスプ。(load 'test.lisp) でtest.lispを実行だ!
=begin
遅延評価のリスプ。
式の種類:
* 整数。1 や -2 など。
* リスト。nil あるいは (式 ...)
* シンボル。foo ほげ など。
* 真偽値。true false。