プログラミング言語? NyarukoでLet's\(・ω・)/にゃーしてみた-1-
Brainf**kを調べてたらnyarukoという言語を見つけたのでプログラミングしてみた。
https://github.com/masarakki/nyaruko_lang
命令は簡単。たった8つしかない。
(」・ω・)」うー(/・ω・)/にゃー - ポインタを右へ移動 (」・ω・)」うー!(/・ω・)/にゃー! - ポインタの指す値を1増やす (」・ω・)」うー!!(/・ω・)/にゃー!! - ポインタを左へ移動 (」・ω・)」うー!!!(/・ω・)/にゃー!!! - ポインタの指す値を1減らす CHAOS☆CHAOS! ポインタの指す値が0なら 対応する 'I WANNA CHAOS!' までジャンプする I WANNA CHAOS! ポインタの指す値が0で無いなら 対応する 'CHAOS☆CHAOS!' までジャンプする Let's\(・ω・)/にゃー ポインタの指す値を出力する cosmic! 入力から1バイト読み込こむ
元のBrainf**kの命令(>+<-[].,)を置き換えているだけのネタ言語なのだが
これでもチューリング完全みたいです。
実行には同じ作者さんが公開している「r-fxxk」が必要なので予めダウンロードしてRUBYPATHを設定。
付属しているサンプルを以下で実行できる。
./nyaruko haiyoru_konton.nyaruko
「Hello World!」が表示されればOK!
さっそく足し算プログラムを作成してみました。
一桁の数値を2つ入力し加算して表示するプログラムです。
ただし表示も一桁しかないので10以上は表示できません。
r-fxxkは1バイト読み込み命令が実装されてないので以下を追加。
r-fxxk/lib/r-fxxk.rb
69 when :get 70 cell[ptr] = STDIN.getc.bytes.to_a[0] #これを追加@Ruby1.9.2 cell[ptr] = STDIN.getc #Ruby1.8系だとこっち
adder.nyaruko
(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!CHAOS☆CHAOS!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!!(/・ω・)/にゃー!!!I WANNA CHAOS!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!!!(/・ω・)/にゃー!!!(」・ω・)」うー(/・ω・)/にゃーcosmic!(」・ω・)」うー(/・ω・)/にゃーcosmic!(」・ω・)」うー!!(/・ω・)/にゃー!! Let's\(・ω・)/にゃー(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!Let's\(・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃーLet's\(・ω・)/にゃー(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!Let's\(・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃー CHAOS☆CHAOS!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!!!(/・ω・)/にゃー!!!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!!!(/・ω・)/にゃー!!!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!!(/・ω・)/にゃー!!!I WANNA CHAOS!(」・ω・)」うー(/・ω・)/にゃー CHAOS☆CHAOS!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!!!(/・ω・)/にゃー!!!I WANNA CHAOS!(」・ω・)」うー!!(/・ω・)/にゃー!! (」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー!!(/・ω・)/にゃー!! (」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー(/・ω・)/にゃーCHAOS☆CHAOS!(」・ω・)」うー!!(/・ω・)/にゃー!!(」・ω・)」うー!(/・ω・)/にゃー!(」・ω・)」うー(/・ω・)/にゃー(」・ω・)」うー!!!(/・ω・)/にゃー!!!I WANNA CHAOS! (」・ω・)」うー!!(/・ω・)/にゃー!!Let's\(・ω・)/にゃー
実行
./nyaruko adder.nyaruko
12 <-数字2つ入力してEnter
1+2=3