ある時、ふと考えた。
「罫線の記号を繋ぎ合わせた模様を作るプログラムは作れないだろうか?」
で、作ってみると、これが案外面白い。
最初は、単純にランダムに罫線記号を当てはめて行けばいいだろうと思っていたが、
縦×横の大きさにキッチリ入っていて、
外に繋がる線の無いようにするには、
簡単でない事が分かった。
何度も試して組み合わせが破綻する場合には行を再生成、
それが一定回数を超えて成功しない場合は模様丸ごとを再生成するようにした。
それから、最初は太い罫線だけを考えていたのだけど、
細い線の罫線もある事に気が付き、ユニットにそれも含めるようにした。
そうして、敢えてユニットを減らすと面白い模様が出来る事にも気が付いた。
なかなか模様が生成されない場合には全角スペースをユニットに含めると、
生成される可能性がぐっと上がる事も分かった。
含まれるユニットを変えると全然印象の違った模様が出来る。
何度も生成しても違う模様が出て非常に面白い。
プログラムのロジックは汚い泥臭いものなので、ここではその模様をいくつか披露してみようと思う。
コメント
[(縦,横),ユニット種類]
模様
全角スペースを省くすべての罫線記号を含む場合
[(30,30),─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂]
┠─┐┠╂┤┌┘┝━┥┃┗╋┿┿┿┿┿┛┃┌┘│┝┫┝┿┻┫
┠┰┼┨┗┿┥┏┷┳┷╋┳┫├┤┝┷┿┓┣┿┯┷┿╋┷┥┏┛
┠╂┤┗━┥├╂┰╂┰┸┸┸┴┼┴┰┴┸╂┼┴┐├┨┌┴╂┐
┣┻┥┏━┿┷┻╋┻╋━┓┏┯┷┯╋┯┯┛└┐┝┥┣┥┏┛│
┃┌┘┣┳┷┳┯┛┌┸─╂┨│┌┴┸┴┘┌┰┘┝┿┛┝┛┌┤
┠┴┐┃┣━╋┿┳┿┯┳┻┫┝┷┳━┯━┥┣┯┷┥┌┘┌┤│
┠┬┤┃┣━┛┝┫└┘┃┏┫│┌┸┰┼┐│┣┷━┿┿┓┝┥│
┃│┝┻┫┌┬┴╂┐┌╂╂┨├┤┏┻┿┥│┗┳┓└┴╂┘└┤
┠┼┤┌┸┘├┰┨│└┨┗┛┝┿┻┳┷┿┿┯┻┻━━┛┏━┥
┗┷┥│┏┯┿╋┻┷━┫┏━┥├┬┸┬┴┘┝━━┓┌┬╂┐│
┌┬┼┘┣┿┷┻┳┯┓┗╋┓└┘┝━┷┯┳┷━┯╋┥└┨├┘
┝┿┷┳╋┥┌─┨├┨┏┛┣┓┌┤┌┐├┨┌┰┘┠┴─╂┼┐
└┼─┸┸┼┴┰┨└┸┨┏┫┣┷┥├┴┴╂┘┗┓┣┓┏┻┷┥
┏┥┌┬┰┤┏┻┛┌─┨┠┸┸─┴┴┬┐┣┓┌╂┨┠╂┬┐│
┃└┴┤┃┝┛┏━┷┓┗╋━━┯┳┳┿┿╋┫└╂╂┨┗┷┥│
┗━┳┿┫│┏┫┌┐┠┐┃┌┐├┨┗┷┿┛┣┯┻┫┗┓┏┿┥
┏┳┻┥┃┝┫┗┿┥┃┝┛│├┴┸──┤┏┛┝┳┫┏╋┛││
┣╋┯┿┻┷╋┯┷┥┠┤┌┴┘┌┬┰─┴┨┌┤┃┠╂┸┐├┤
┃┃└┼┬─┨└┐┝┛│┝┯━┥│┗┯┓┣┿┿┻┛┣┳┥└┘
┃┗━┿┥┏┫┏┿┥┌┼┤└┰┴┼┰┼┨┃├┤┏┯┛┃┝┯┓
┣┯┓┝┥┗╋┛│┝┥├┼┬┨┌┴┨├┸╂┤│┗┥┌┨││┃
┗┿┻┷┿┳┻┯┥├┘┝┥┝┫└─┨├┬╂┼┼┐└┘┠┘│┃
┌┤┏━┷┻┯┥└┼┐│└┤┠┰┐┗┥├╂┘┝┿┳┳┛┌┤┃
├┘┃┌─┬┘┝┳┥┝┿┯┿┛┠┘┏┿┷┫┌┼┤┗┫┌┴┤┃
│┏┫│┌┴┐│┗┿┷┥│┝━┻┓┠┴┐┃┝┥│┏╋┿┯┷┛
│┃┣┷┷┯┥┝┳┥┌┴┘└┬┐┗┛┌┤┃┝┥┝┛┠┴┼─┐
│┣╋━┓┝┥└┨├┘┏┯┳┿┷┯┳┿┷┛└┼┼─┸─┤┌┤
│┠┨┌┨├┼┰╂┼┐┠┘┃│┌┼┸┘┏┳━┷┥┌┬─┼┤│
└┸┸┴┸┘└┸┸┴┴┸─┸┴┴┴──┸┸──┘└┴─┘└┘
全角スペースを省くすべての罫線記号を含む場合(携帯でも見れる?)
[(10,10),─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂]
┠┘┠┸┘┏┿┯┻┫
┣┓┗┯┓┣┿┷━┛
┗╋┳┷╋╋┿━┯┓
┌┨┠┰┨┠┼┐└┨
└┸╂┸╂┸┘└┐┃
┏┓┠┬┨┏┯┓└┨
┗╋┻┿┫┃│┃┌┨
┌┨┌┤┠╂┤┣┷┫
└┸┴┘┗┻┷┻━┛
直線のユニットが無いパターン
[(20,20),┌┐┘└├┬┤┴┼┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂]
┗┻┷┷┿┫├┘├┨├┸┨┗╋┥┗┛┗┥
┌┐┏┓└╂┴┬┤┠┼┐┣┓┠┴┐┏┯┥
└┘┣┛┏╋┳┥├┨├┘┗┛┣┳┥┗┷┥
┌┬┨┌┸╂┨├┼┨┝┳┳┳╋╋┿┯┯┥
└┼┨┝┳╋┛┝┿┫└╂┸┨┣┛├┘└┤
┏┿╋┥┣┛┏┿┿╋┯┫┌┸┸┰┤┏┳┥
┣┷╋┿╋┳╋┷┿╋┥┗┷┳┓┗┿┛┠┤
┣┯┛└┨┣┛┌┤┠┼┬┰┸┸┐└┰┸┤
┗┥┏┳┫┗┳┿┥┗┿┿┫┌┐├┐┠┰┤
┌┴╂┸┸┰╂┴┤┏┷┥┠┤└┤├╂┸┤
└┐┗┳┳┛┗┯┷╋┳┷╋┿┯┿┿╋┳┥
┌┤┌┨┠┬┐├┬┨┠┬┸┤┝┥└╂╂┤
├┤└┸╂┼┤┝┥┠┸┼┰┴┴┤┏┫┗┥
├┼┰┰╂┘└┼┤┠┬┼╂┰┬┘┣╋┳┥
└┤┗╋┻┯┳┥┝┛├┴┸┸┘┌┨┣╋┥
┌┴┰┸┬┤┣┥└┰┼┬┰┐┏┿┻┛┣┥
└┐┣┯┥└┸┼┐┣┿┷┻┷┫└┐┏╋┥
┌┼┨┝┥┌┰┤├┨┝┳┓┏╋┳┥┣╋┥
└┘┗┷┷┷┛└┘┗┷┛┗┛┗┛└┸┸┘
三叉路ユニットが無いパターン。すいません、○は全角スペースの代わりです。表示がズレたもので。。。
[(20,20),○─│┌┐┘└┼━┃┏┓┛┗╋┠┯┨┷┿┝┰┥┸╂]
┠┰┰──┘┝╋╋╋╋┛┗┛┠╂┸─┐┃
┠╂╂┐┌┐└╂┨┃┠─┐┏┛┃┏━┿┛
┃┠┨┝┷┥┏╋┛┠┨○└┨┏┛┠─┼┐
┗┛┗┥┏┿╋┛┏╋┛┏┯┛┃○┃┌┼┘
┌┐○└┸┼┸┐┗╋━┛│┌┸┰┸┼┘○
││┏┯━┥┌┼┰┸─┐│└┰╂┐┝━┓
┝┥┗┷┓└┘└┸─┰┼┘┌┸╂┘└┐┃
└┘○┌┸──┐┏┓┃└┰┼┰┨┏┯┥┃
┏┯┓└─┰┰┼╂┸┨┏┛│┗┛┠┘└┨
┗┥┗━┯┛┃┝╋━┛┗┯┷┓┏┛○┏┛
┌┼┰─┘┏╋┥┠┰┐┌┘┏╋┛┌┐┠┐
└┘┗┯┯╋┛┝┛┃└┘○┃┃○└┘┃│
○┌┐┝┥┃┏┷┓┃○┏┓┗╋┓┏┓┗┥
○└┘││┗╋┯╋╋┓┃┗┓┗┛┗╋┓│
┌┐○│└┰┨┝╋┛┃┗┯┛┏━┓┠┸┘
│└─┼─┸┨┝┛┏┛┏┥○┃┌╂┸┐○
└┰┐└─┰┸┼┰╂┐┗┷┯┛│┃┏┥○
○┠┘┏┓┠┰┼╂┨└─┰┼┐│┗┛└┐
○┗━┛┗┛┗┷┛┗━━┛└┘└───┘
細い罫線の曲がるユニットが無いパターン。
[(20,20),─│┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂]
┃┏┥│┠┨┠┼─┨││┣╋━┛│┃┃┃
┠╂┼┼┸╂┸┼─┨││┗┫┏━┥┠┨┃
┗╋┷┥┏┫┏┥┏╋┷┿┯┫┠┰┼┨┃┃
┏┻┓┝┛┃┠┼┨┣┓┝┿╋┻┫│┃┗┫
┠┰┨┝┯┻╋┥┠╂┸┼┼┨┏╋┿┫┏┛
┗┛┣┥│┏┻┷┛┃┏┿┷┻┻┛┝┛┗┓
┏┳┫││┃┏┓┏╋┫│┏┳━━┥┏┳┛
┣┛┗┷┷┫┗┻┛┃┃│┗┛┏━┥┃┗┓
┣━┳┳━┛┏┳┳┛┗┥┏┳┛┏┷╋━┫
┗━┛┠┰─╂┨┣┳━┿┫┣┳┫┏╋━┛
┏┓┏┛┃┏┫┗┫┣━┷┛┗┻┫┣┻┯┓
┠┨┠─┸┸┸┰┨┣┳━┳┳┓┠╂─┼┨
┃┣┻━┯━┓┠┨┠┨┏╋╋╋┻┛┏┿┛
┠┨┏┓┝┳╋╋╋┻╋┻┛┣┫┏━┫┝┓
┣┻┻╋┷┻┛┣┛┏╋┯┯╋╋╋┓┗┿┛
┣━┯┫┏┯┯┻━╋┛┝┥┗╋┻╋━┿┓
┗┳┷┻┻┥│┏┳┫┏┿┷━┛┏┻┓┝┛
┏┻┳━┯┷┿╋┛┗┻┿━┓┏┻┯┫┝┓
┗━┻━┷━┷┻━━━┷━┛┗━┷┻┷┛
さらに、太線の三叉路ユニットを減らしたパターン。
[(20,20),─│┼━┃┏┓┛┗╋┠┯┨┷┿┝┰┥┸╂]
┃┗╋╋╋┷┯┯┥┏┓┝┥┗╋┛┠┼┼┨
┠─┸┨┗┓┝┿┷┛┗┿┿┯┛┏╋┷┿┛
┗━┓┃┏╋┷┿┓┏┓││┝┓┠┨┏┿┓
┏┯┛┠╂┸─┼╂┨┃┝┿┥┗╋╋┛┝┛
┠┼─┸╂──┼┨┃┗┷┥│┏╋┛┏┿┓
┃┝┯━╋┯┯┥┠╂──┼┼┸╂─┨┝┛
┗┿┷┓┃┝┿┿┛┃┏┯┷┥┏┛┏╋┷┓
┏┿━┛┃┝┿┥┏╋┛│┏┥┃┏╋┛┏┛
┃┝┯━╋┷┷┥┠╂┰┼┨┝╋╋╋━╋┓
┗┿┿┓┗━┯┷┛┗╋┥┃┝╋┛┠┰┨┃
┏┿┿┛┏┯┿━┓┏┛┝╋┿┛┏┛┠┨┃
┠┼┼┰┸┼┼─╂┸─┼╂┼─┸┰┸┸┨
┠┼┼╂─┼┼┰┨┏━┿┛│┏┯┛┏┯┛
┃┝┥┠─┼┼╂┨┃┏┥┏┷┛┝┯╋┿┓
┃┝┿┛┏┥┝┛┠┸╂┼┸─┰┼┼╂┼┨
┗┷┿━┛┝┷┓┃┏╋┥┏┓┗┿┷┛│┃
┏┯┥┏━┥┏┛┠┸╂┼┨┃┏┿┯━┷┛
┠┼┼┸─┼╂┰┨┏┛│┃┃┗┿┷━━┓
┗┷┷━━┷┛┗┛┗━┷┛┗━┷━━━┛
さらに、太線が細線にぶつかって止まる事の無いパターン
[(20,20),─│┼━┃┏┓┛┗╋┠┯┨┷┿╂]
┠┨┃│┏━┯┷┿━┯┛┃││┏╋┛│┃
┃┠╂┼┨┏┷┯┿┓│┏┛││┠╂─┼┨
┗╋╋┷┛┗┯┷┿┛│┠─┼┼╂┨┏┿┛
┏╋┛┏┯┯┿┓│┏┿┛┏┿┿┛┗╋┿┓
┃┠─┨│││┠┼┨│┏┛││┏┓┗┷┛
┃┃┏┛│││┗┷┛│┗┯┷┿┛┃┏┯┓
┠┨┃┏┷┿┷━┯┓│┏┷┯┿┓┠╂┼┨
┃┠┨┃┏┿┯┯┷╋┷┛┏┿┿┛┗┛│┃
┗╋╋╋╋┷┷┷━┛┏┯╋┷┷┯━┓│┃
┏╋╋┛┠─────╂┼┨┏┓│┏╋┿┛
┠╂┨┏╋┯┯┯━━┛│┗┛┠┼┨┗┿┓
┗┛┠┨┗┷┿┿┓┏━┿┯┓┃│┠─┼┨
┏┯┛┗┓┏┷┷┛┠─┼┼┨┃│┗┓│┃
┃│┏┓┗┛┏┯┯╋━┿┷┛┃│┏┛│┃
┃│┃┠──╂┼┼┨┏┷┯┓┃│┗┓│┃
┠┼┨┗┓┏╋┷┷╋╋━┷┛┠┼─┨│┃
┗┷┛┏╋╋╋┓┏┛┗━┓┏╋┿┓┃│┃
┏┯┯┛┗┛┗┛┗━━┓┃┠╂┼╂┨│┃
┗┷┷━━━━━━━━┛┗┛┗┷┛┗┷┛
さらに、太線の十字ユニットを減らしたパターン。
[(20,20),─│┼━┃┏┓┛┗┠┯┨┷┿╂]
┠┼┼──┼╂╂╂╂╂┨┃┠╂┨┏┛┗┛
┃││┏━┷┛┃┠┨┃┠╂┨┗┛┃┏━┓
┗┷┿┛┏━┓┃┠╂┨┠╂┨┏┓┠╂─┨
┏┓│┏┛┏┛┠┨┗┛┗┛┗┛┗┛┃┏┛
┗┛│┃┏┛┏┛┃┏┯━┯━┓┏━┛┗┓
┏━┿┛┠─╂─┨┠┼─┼─╂┨┏┓┏┛
┠─┼─┨┏┛┏┛┃│┏┷┓┃┗┛┃┗┓
┃┏┷┯┛┗┯┛┏┛│┗┓┃┃┏━┛┏┛
┗┛┏┿━━┿┓┠─┼─┨┃┃┃┏┓┗┓
┏┯┛│┏┯┷┛┠─┼─┨┗┛┠╂┨┏┛
┠┼─┼┨│┏┓┃┏┿┯┛┏┯┛┠┨┗┓
┃│┏┷┛│┃┗┛┗┷┷━┛│┏┛┗┯┛
┃│┗┯━┷┛┏━┯┓┏━┯┷┛┏┯┷┓
┠┼─┼───┨┏┿┛┃┏┿┯┓┗┷┓┃
┠┼─┼───┨┃│┏┛┗┿┿┛┏┓┃┃
┠┼─┼───┨┠┼╂──┼┼─╂╂┨┃
┠┼─┼───╂╂┼╂──┼┼─┨┠┨┃
┠┼─┼───┨┃│┗┓┏┿┿━┛┠┨┃
┗┷━┷━━━┛┗┷━┛┗┷┷━━┛┗┛
さらに太線と細線の交差を無くしたパターン。
[(20,20),─│┼━┃┏┓┛┗┠┯┨┷]
┠┨┠─┨┃┏┓┃┗┛┃│┃┃┗┛││┃
┃┃┠─┨┗┛┗┛┏┯┛│┗┛┏━┷┷┛
┃┠┨┏┛┏┯┯┓┃│┏┷┯┓┃┏┓┏┓
┠┨┃┠─┨││┠┨│┃┏┷┛┃┃┃┠┨
┃┠┨┗━┛││┗┛│┠┨┏┓┠┨┃┃┃
┠┨┠───┼┼──┼┨┗┛┃┗┛┗┛┃
┗┛┗┓┏━┷┷┯━┷┛┏┯┛┏┯━┯┛
┏━┯┛┠───┼───┨│┏┛│┏┷┓
┗┯┷┯┛┏┓┏┷┓┏┯┛│┗━┷┛┏┛
┏┷┯┷┯┛┠┨┏┛┃│┏┷┓┏┯┓┗┓
┗┯┷━┷┯┛┃┃┏┛│┗━┛┗┷┛┏┛
┏┷━┯━┷━┛┗┛┏┷┯┓┏━━┓┗┓
┗┓┏┷━┓┏━━┯┛┏┷┛┃┏┯┛┏┛
┏┛┠──┨┃┏━┷┯┛┏━┛┗┷┓┗┓
┃┏┛┏┓┠┨┃┏┯┷━┛┏┓┏┓┃┏┛
┃┃┏┛┠┨┠┨┗┷┯━━┛┠┨┠┨┗┓
┃┗┛┏┛┗┛┃┏━┷━━┓┃┠┨┗┯┛
┠──┨┏┓┏┛┃┏┓┏━┛┃┠┨┏┷┓
┗━━┛┗┛┗━┛┗┛┗━━┛┗┛┗━┛
説明が難しいパターン。
[(20,20),┌┐┘└━┃┏┓┛┗┠┯┨┷]
┗┯┛┗┷┷┛┠┘┠┘└┨└┘└┨┗┷┛
┌┘┏┓┌┐┏┛┏┛┌┐┗┓┏┯┛┏┯┓
└┐┗┛└┘┃┏┛┌┘└┐┠┨└┐┗┷┛
┌┘┌┐┏┯┛┠┐└┐┏┷┛┠┐└┐┏┓
└┐└┘┠┘┏┛└┐└┨┌┐┗┷━┷┛┃
┌┘┏━┛┏┛┏┯┷┓┃└┘┌┐┏━┓┃
└┐┃┌┐┃┌┨└┐┠┨┌┐└┘┠┐┗┛
┏┷┛└┘┗┷┛┌┘┠┨└┘┌┐┗┷━┓
┠┐┏┓┌┐┏┯┷┓┠┨┏━┷┷┓┌┐┃
┃└┨┗┷┷┛└┐┗┛┗┛┌┐┌┨└┘┃
┠┐┠┐┏┯┓┏┷┓┏┯┯┷┷┷┛┌┐┃
┠┘┠┘┠┘┗┛┏┛┠┘└┐┏━━┷┷┛
┠┐┠┐┠┐┌┐┠┐┗━━┷┛┏┯┯┯┓
┃└┨└┨└┘└┨└┐┌┐┏┓┃└┘└┨
┗┯┛┌┨┏━┯┛┏┷┷┷┛┠┨┌┐┏┛
┏┷┯┷┛┠┐└┐┃┌┐┏┓┠┨└┘┠┐
┃┏┷┓┌┨└┐└┨└┘┗┛┗┛┌┐┠┘
┃┗┯┛└┨┏┷━┛┏┓┌┐┏┓└┘┗┓
┗━┷━━┛┗━━━┛┗┷┷┛┗━━━┛
なんかこんなパターン。縦横が大きいと生成が困難なので、小さくした。
[(16,16),─│┌┐┘└┼━┃┏┓┛┗╋┿╂]
└┼┘└┼┼╂┐┃└┘└┐│┃┃
┏┿┓┏┿┿┛└╂┐┌┐││┗┛
┗┿╋┛└┼┐┌╂┘└┼┼┘┏┓
┌┘┃┏┓└┼┼╂┐┏┿┿┓┗┛
└┐┗┛┃┏┿┿┛└╂┼┼╂─┐
┏┿━━╋┛│└┐┏┛└┘┃┌┘
┗┿┓┏┛┏┿━┿╋━━━┛└┐
┏┿┛┃┏┛└┐└╂┐┏┓┏┓│
┗┿┓┗┛┌┐│┌╂┘┃┗┛┃│
┏┿┛┏┓│└┼┘┗┓┃┏━┛│
┗┿┓┗┛│┏┿┓┌╂╂╂──┘
┌┘┗┓┏┿┛│┃└╂╂╂──┐
│┌┐┗╋┿━┿┛┏╋╋╋┓┌┘
│└┼┐┗┿┓└─╂╂╂╂╂┼┐
└─┘└─┘┗━━┛┗┛┗┛└┘
細線は横、太線は縦のユニットを持ってるパターン。
[(16,16),─┌┐┘└┃┏┓┛┗╂]
└┘└──┘┗┛└┘└──┘┗┛
┌───┐┏┓┏┓┌─────┐
└──┐└╂╂╂╂┘┏┓┏┓┌┘
┏┓┌┘┏┛┗┛┃┏┛┃┃┃└┐
┗┛└┐┃┏┓┏┛┗┓┃┃┃┌┘
┌┐┌┘┃┗┛┃┌┐┗┛┗┛└┐
└┘└┐┗┓┏┛└┘┏┓┌┐┌┘
┏┓┌┘┏┛┃┌┐┏┛┃└┘└┐
┗┛└┐┗┓┃└┘┃┏┛┏┓┌┘
┏┓┌┘┌╂╂┐┏┛┗┓┃┃└┐
┗┛└─┘┗┛└╂──╂╂╂─┘
┌┐┏┓┏┓┌┐┗┓┏┛┃┃┌┐
└┘┗┛┗┛└┘┏┛┗┓┗┛└┘
┌┐┌──┐┏┓┃┏┓┃┌┐┏┓
└┘└──┘┗┛┗┛┗┛└┘┗┛
楽しいよ!さぁみんなも作ってみよう!
そして、それを夏休みの自由研究にしよう!
すごい面白いですね、私もこのプログラム触ってみたいです(・∀・)!!>ロボ平
って、また自作自演なんですが。
CGI化を考えてみますね、実際触るとメチャ面白いですから。
罫線記号を組み合わせるCGIプログラム
「罫線記号を組み合わせるCGIプログラム」を作りましたよ。
見てみて楽しんで!