ジョボヌーレーボー(自作言語で)
5 @ ary
"ボ" 0 @s ary
"ジョ" 1 @s ary
"レ" 2 @s ary
"ヌ" 3 @s ary
"ボ" 4 @s ary
4 $ i {
{ 5 '' $ r r @g ary _ 0 = ( ` } )
0 r @s ary i ! ( [ ) i 1 - $ i
} ]
.s .s .s "ー" .s .s "ー" .s .s "ー" .s
最後怒涛の.s
がなんかかわいいですね。
一応解説
一番重要なのは他言語で言うshuffle
だと思います。shuffle
は配列の中身をごちゃまぜにする関数なのですが、そんなものがnouzen
にあるわけがないので、そこらへんの実装に時間を使いました。
4 $ i { # 4が0になるまで(つまり5回ループ)
{ # 内部ループ上端
5 '' $ r # 5未満の乱数を生成し変数rに代入
r @g ary # 変数rを配列aryの添え字としてアクセス
_ 0 = # その文字列アドレスが空(すでに取得済み)だったら
( ` } ) # 内部ループ上端へジャンプ
0 r @s ary # aryのrを空にする
i ! ( [ ) i 1 - $ i # ループカウンタを進める
} ]
上を見てもピンと来るかどうか自信が無いので簡潔に申し上げますと、乱数で文字列から取得しスタックへpush
、一度取得したものは0
で埋めてアクセスしたことを示すマーカーとして扱う、もし乱数で取得したものが0
、つまり取得済みだった時にはもう一度乱数を生成して取得をし直す、それを5回ループすることでスタック上にばらけた文字アドレスが格納される、という感じです。
元ネタ
@mattn 様のヌジョレーボーボー です。
コメントまで楽しい記事なので是非ご一読ください。
nouzenってなんだよ
という方は私の過去の記事 スタック指向なgoto言語 nouzen を作ってみた をどうぞ
Author And Source
この問題について(ジョボヌーレーボー(自作言語で)), 我々は、より多くの情報をここで見つけました https://qiita.com/asana_yui/items/b039db74e4c7182081d4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .