#!/usr/bin/tclsh
#
# Hidden Squares:
# A number n may have squares hidden among its digits. For instance,
# in the number 1625649, the consecutive digits 1, 4, 9, 16, 25, 49,
# 64, 256 and 625 are all squares.
#
namespace path {::tcl::mathop ::tcl::mathfunc}
puts -nonewline "Please input a number: "
flush stdout
gets stdin number
if {$number <= 0} {
puts "Number requires > 0."
exit
}
set max [int [sqrt $number]]
for {set i 1} {$i <= $max} {incr i} {
set n [* $i $i]
if {[string first $n $number] >= 0} {
puts -nonewline "$n "
}
}
puts ""
這裡也使用了 namespace path。
Tcl 支援 namespace 的概念,一個 namespace 是 function 和變數的集合,和 C++
類似,透過封裝可以保證不會被其它的 namespace 的變數和命令所影響,而且你可以隨時新增、改名與刪除裡面的成員。
沒有留言:
張貼留言