“水仙花”数从ITEM开始变得无比精彩

在FMSLogo-MSWLogo-PCLogo语言中,ITEM“输出指定位置元素”命令简直是“独一无二”般的存在。在C++、PYTHON语言中数值153和“字符串”153是两种截然不同的“数据”,是严格区分的,决不允许混淆使用,否则程序就会“报错”停止运行。在LOGO语言中,ITEM属于“字表处理”命令,可以用它轻易地“剪取”数字、字符串、表数据任意位置的“元素”。但是在LOGO语言中ITEM命令可以对数字进行“剪取”,剪取出来的单个数字当然是属于“字符”、“字符串”性质的,但是在LOGO语言中这个单独被“剪取”下来的数字字符,竟然允许被当成“数值”进行计算。这种可以模糊“数值”和“字符”之间的界限的语法规定给我带来了极大的方便,大大减少了计算的工作量,使得一些复杂的计算有可能实现。下面举个例子:
for[i 100
999][循环体]
;产生出来的100~999的数字赋值给变量:i。
假设现在恰好:i的值循环到153。
make "s item 2
:i 这个命令剪取:i值153中的第2个数字赋值给变量:s。
现在:s的值是5,实际上已经将153的十位数剪取下来了。
显然,使用ITEM命令剪取一个数字串中的某一个数位,比使用remainder或者乘法*减法-以及int命令要简单得多。
使用item命令编程求解“水仙花数”的编程如下:
to sxh_d
for[i 100 999][
;产生出所有3位数
make "b
item 1 :i
;用字表处理命令item剪取出第1位百位数
make "s
item 2 :i
;剪取第2位十位数
make "g
item 3 :i
;剪取第3位个位数
if
:b*:b*:b+:s*:s*:s+:g*:g*:g=:i[ ;输出符合条件的3位自幂数
pr :i]]
end
现在还看不能完全出来item命令编程的优势
在后面两篇的博客中你将会看到
如果不使用item命令 求解1~99999999的自幂数简直是不可能的
精彩博文待续
LOGO编程画出来的动画:
加载中,请稍候......