この辺はlispやschemeで思索しながらやると楽なんだよ