最小値と最大値の計算

mzp2008-02-13

30分プログラム、その243。昨日に続いて新しくプログラミング言語を覚えたいときに行うべき10の練習問題 | IDEA*IDEAより「最大値と最小値の計算」。

3. 複数の数値を入力させ、昇順に並び替え、最大値と最小値を出す(例:同僚の体重を入力して計算)。

初めてリストとソートを使った。やっぱりちゃんと考えてある問題ですね。
ところでTclの配列とリストは違うらしいんだけど、どう違うんだろう?

使い方

$ wish min_max.tcl

ソースコード

#!/usr/bin/wish

button .btn -text "search" -command {
    # split
    set list [split [.text.input get 1.0 end]]

    # strip last
    set words [lrange $list 0 [expr [llength $list] - 2]]

    # sort
    set sorted [lsort -integer $words]
    set min [lindex $sorted 0]
    set max [lindex $sorted [expr [llength $sorted] -1]]
}

frame .text
text      .text.input -width 30 -height 10 -yscrollcommand ".text.scroll set"
scrollbar .text.scroll -command ".text.input yview"
pack .text.scroll .text.input -side right -fill y -expand yes

frame .view
label .view.min_label -text "min"
label .view.min_area  -text "<min>" -textvariable min
label .view.max_label -text "max"
label .view.max_area  -text "<max>" -textvariable max
pack .view.min_label .view.min_area .view.max_label .view.max_area -anchor w -side left -fill y

pack .btn .text .view -anchor w -expand yes