この記事を三行にまとめると
Go言語を使います半角スペースを点、タブを線に置き換える
ぬるぽ がっ
この記事は以下の動画の中に出てきたサンプルコードを載せたものです。コピペなどが必要なときに使ってください。
Go言語をインストールするには公式のウェブサイトから本体をダウンロードするかbrewコマンドでインストールします。
https://go.dev/dl/
hello.goの中身は以下の通り。
ゴリラ言語の読み方 #Go
上記の記事にあるコードの115行目あたりに半角スペースをウ、タブをホに対応させる処理が書いてあるんですが、ここを点と線に置き換えればモールス信号で動くようになります。
このコードをmorse.goなどの名前で保存すればOKです。
hello.txtの中身はこんな感じ。
$HOME/Documents/プログラミングのところは自分の環境に合わせて任意に書き換えてください。morseの実行ファイルが置いてあるフォルダまでのパスを書けばOKです。
ぬるぽでHello Worldを出力するコードはこうなります。
「ぬるぽ」の文字列が完成したのは一箇所だけでしたw
がっ
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
がっ