モールス信号(とぬるぽ)で動くプログラミング言語を作ってみた

ぬるぽ がっ

この記事を三行にまとめると

Go言語を使います
半角スペースを点、タブを線に置き換える
ぬるぽ がっ
この記事は以下の動画の中に出てきたサンプルコードを載せたものです。コピペなどが必要なときに使ってください。





Go言語でHello Worldを出力する

今回はGo言語を使用するので、まずは前哨戦としてGo言語をインストールしてHello Worldを出力してみます。

Go言語をインストールするには公式のウェブサイトから本体をダウンロードするかbrewコマンドでインストールします。

https://go.dev/dl/

// brewコマンドの場合
$ brew install go

// hello.goを実行する
$ go run hello.go

hello.goの中身は以下の通り。
package main

import "fmt"

func main() {
  fmt.Println("Hello World")
}



モールス言語を動かすプログラム

以下のコードはmattnさんという方の書いたコードを使わせていただきました。

ゴリラ言語の読み方 #Go

上記の記事にあるコードの115行目あたりに半角スペースをウ、タブをホに対応させる処理が書いてあるんですが、ここを点と線に置き換えればモールス信号で動くようになります。

// 変更前
for i, r := range src {
  switch r {
  case 'ウ':
    src[i] = ' '
  case 'ホ':
    src[i] = '\t'
  }
}

// 変更後
for i, r := range src {
  switch r {
  case '・':
    src[i] = ' '
  case 'ー':
    src[i] = '\t'
  }
}

このコードをmorse.goなどの名前で保存すればOKです。



モールス言語でHello World

モールス信号でプログラムを動かすにはテキストファイルなどにモールス信号を書いてそれを読み込ませます。

$ go run morse.go hello.txt

hello.txtの中身はこんな感じ。
・・・ー・・ー・・・
ー
・・・・・ーー・・ー・ー
ー
・・・・・ーー・ーー・・
ー
・・・・・ーー・ーー・・
ー
・・・・・ーー・ーーーー
ー
・・・・・ー・・・・・
ー
・・・・・ー・ー・ーーー
ー
・・・・・ーー・ーーーー
ー
・・・・・ーーー・・ー・
ー
・・・・・ーー・ーー・・
ー
・・・・・ーー・・ー・・
ー
・・・・・・・・ー・ー・
ー
・・





morseコマンドで動くようにする

実行ファイルを作成してそのファイルのパスを通せばmorseコマンドでプログラムを実行できるようになります。

// 実行ファイルを作成
$ go build morse.go

// パスを通す
$ vi ~/.zshrc
export GOBIN="$HOME/Documents/プログラミング"
export PATH=$PATH:$GOBIN

// 変更を反映
$ source ~/.zshrc

// morseコマンドを実行
$ morse hello.txt

$HOME/Documents/プログラミングのところは自分の環境に合わせて任意に書き換えてください。morseの実行ファイルが置いてあるフォルダまでのパスを書けばOKです。



ぬるぽ言語

半角スペースをぬ、タブをる、改行をぽに置き換えればぬるぽ言語になります。
switch r {
case 'ぬ':
  src[i] = ' '
case 'る':
  src[i] = '\t'
case 'ぽ':
  src[i] = '\n'
}

ぬるぽでHello Worldを出力するコードはこうなります。
ぬぬぬるぬぬるぬぬぬぽるぽぬぬぬぬぬるるぬぬるぬるぽるぽぬぬぬぬぬるるぬるるぬぬぽるぽぬぬぬぬぬるるぬるるぬぬぽるぽぬぬぬぬぬるるぬるるるるぽるぽぬぬぬぬぬるぬぬぬぬぬぽるぽぬぬぬぬぬるぬるぬるるるぽるぽぬぬぬぬぬるるぬるるるるぽるぽぬぬぬぬぬるるるぬぬるぬぽるぽぬぬぬぬぬるるぬるるぬぬぽるぽぬぬぬぬぬるるぬぬるぬぬぽるぽぬぬぬぬぬぬぬぬるぬるぬぽるぽぬぬぽぽぽ

「ぬるぽ」の文字列が完成したのは一箇所だけでしたw

がっ
 もしかしたら何か関連しているかも? 
 質問や感想などお気軽にコメントしてください