文章ジェネレータ

mzp2008-02-18

30分プログラム、その247。新しくプログラミング言語を覚えたいときに行うべき10の練習問題 | IDEA*IDEAより、Tclで文章ジェネレータ。

8. 「(名前)が、(場所)で、(アクション)した」がランダムに組み合わされて出てくるプログラム。

要するに、配列・リストと乱数の使い方の問題。リストはlistコマンドで生成してlindexでアクセスできる。乱数はexprコマンド内でrand()という関数が用意されている。

使い方

$ wish rand.tcl

ソースコード

#!/usr/bin/wish

set subject [list {私} {あなた} {あの人} {坊主}]
set where   [list {家} {公園} {学校} {プール}]
set action  [list {走った} {踊った} {飛んだ} {運動した}]

proc choice {list} {
    lindex $list [expr int(rand() * [llength $list])]
}

button .make -text "make" -command {
    set s [choice $subject]
    set w [choice $where]
    set a [choice $action]

    set result ${s}${w}${a}
}

label .result -textvariable result -width 20

pack .make .result