🙃
偽コードジェネレーターをちょっと作ってみた
はじめに
いつかtwitterのTLを見ているときにこんな画像が流れてきた。
ぱっと見、jsか何かのコードに見えるがよく文を読んでみるとローマ字でUrbanhacksについての説明とURLが書いてある。
初めてこれを見たときは「ふーん、こういう方法もあるのか」くらいにしか思わなかったが、最近これを自動で生成できるようになったら面白くね?...と考え、少し作ってみた。
どんな感じ
とりあえずコード
出力する言語の形式もGoにしてます
読み取り、書き出し先のファイルパスの設定
var (
orignFile string
fakeCodeFile string
)
if len(os.Args) < 3 {
fmt.Printf("orign file path\n>")
var text string
fmt.Scan(&text)
orignFile = text
fmt.Printf("fake code file path\n>")
fmt.Scan(&text)
fakeCodeFile = text
} else {
orignFile = os.Args[1]
fakeCodeFile = os.Args[2]
}
改行とスペースで分割し、配列に格納
raw, _ := os.ReadFile(orignFile)
lines := strings.Split(string(raw), "\r\n")
rawcode := make([][]string, 0)
for _, l := range lines {
if l != "" {
line := strings.Split(l, " ")
rawcode = append(rawcode, line)
}
}
配列をいい感じに割り当てて構造体に入れる
code := srcGen(rawcode)
構造体を文字列に変換
source := code.Build()
保存したり出力したり
fmt.Println("--------------------------------------------------------------------------------\n" + source + "--------------------------------------------------------------------------------")
f, _ := os.Create(fakeCodeFile)
f.Write([]byte(source))
f.Close()
Generator
基本的に一行の単語数をみて、それに合う形に割り当てるだけ
Builder
いい書き方が思いつかず、ほぼごり押し
rn, tab, spaceなどのよく使う文字の変数が意外と使いやすかった(かも?...)
おしまい
正直改善点ありすぎてやばいのでいつか修正します()
いつかは形態素解析も入れていい感じに処理できるようにしたいね
汚い部分や、これおかしいだろと思うところがあったらこっそりgithubにコミットしといてください。
Discussion