郭先抢
发表于 2012-12-14 18:49:29
这个肯定会循环的,因为一位数与两位数都是有限的
chyanog
发表于 2012-12-17 17:19:29
3# wayne
今天又重写了一下,Join @@ Table[{{i, j},
NestWhile[#~Join~IntegerDigits@Tr[#[[-2 ;;]]] &, {i, j},
FreeQ], 2, 1], #[[-2 ;;]]] &]},
{i, 0, 9}, {j, 0, 9}] // Grid
郭先抢
发表于 2012-12-17 18:33:24
3# wayne
今天又重写了一下,Join @@ Table[{{i, j},
NestWhile[#~Join~IntegerDigits@Tr[#[[-2 ;;]]] &, {i, j},
FreeQ], 2, 1], #[[-2 ;;]]] &]},
{i, 0, 9}, {j, 0, 9} ...
chyanog 发表于 2012-12-17 17:19 http://bbs.emath.ac.cn/images/common/back.gif
把结果贴上来吧
郭先抢
发表于 2012-12-17 18:33:52
如果不仅有代码还有结果,那就更好了
chyanog
发表于 2012-12-17 18:55:08
13# 郭先抢
和前面的结果是一样的,wayne已经贴过了
chyanog
发表于 2012-12-17 19:00:41
本帖最后由 chyanog 于 2012-12-17 19:05 编辑
f[{a_, b_, n_}] :=
Module[{li, pos, left, repeat},
li = NestWhile[#~Join~IntegerDigits@Tr[#[[-2 ;;]]] &, {a, b},
FreeQ], 2, 1], #[[-2 ;;]]] &];
pos = Position, li[[-2 ;;]], 1, 1][];
{left, repeat} = {#[[;; pos - 1]], #[]} &@li;
If, left[],
repeat[, Length, 1]]]]
];
f /@ {{1, 1, 2}, {1, 1, 8}, {1, 4, 8}, {1, 5, 10^8 - 1}, {1, 7, 10^8}}
(*out:{1, 3, 9, 8, 3} *)
原题是写这样的一个函数,不过我觉得写的不够neat,wayne兄有空给指点下呗
chyanog
发表于 2012-12-18 19:27:52
本帖最后由 chyanog 于 2012-12-18 20:31 编辑
经过一些测试,Mathematica中Nest不慢,而NestWhile并没有While高效,可能比FixedPoint还慢一点
wayne
发表于 2012-12-20 15:14:58
16# chyanog
能说说函数的功能吗
chyanog
发表于 2012-12-20 16:00:04
本帖最后由 chyanog 于 2012-12-20 16:03 编辑
18# wayne
就是这个链接里的呀,http://astar.baidu.com/index.php?r=home/detail&id=2
f(a,b,n),a,b是前两个数,返回的是第n个数是几
wayne
发表于 2012-12-21 12:08:19
19# chyanog
一时没找到合适的函数,姑且用用字符串处理函数.f :=
Module[{a = a0, b = b0, n = n0, i, t, tmp, xx},
xx = Table;
tmp = NestWhile[(xx[[#[[-2]] + 1, #[[-1]] + 1]] = 1; Join[#, IntegerDigits]]]) &, {a, b}, xx[[#[[-2]] + 1, #[[-1]] + 1]] == 0 &];
t = StringJoin;
t = StringPosition][];
tmp[ - t - 1] + t]]]]