背景:在微博上见到一道简单的数学题 ,最近一直在学Perl编程,用Perl实现之,在代码中应用了几个高级技巧,加深了对Perl数组的理解。
问题: 一个将字符串“
Perl代码:
######################################## Desc: 用Perl解一道高中数学题(函数) ## Author: thinkhy ## Date: 05/26/2012 Sat ## Reference:#######################################use strict ;use utf8 ;
my $str = "一行白鹭上青天" ;my @fun = ( 2 , 3 ,153)">0 ,153)">1 ,153)">5 ,153)">6 ,153)">4 );my @tran = ( split "" , $str )[ @fun ];
my @tranArray ;push @tranArray , $str ;
while ( $str ne ( join @tran )){( @tran );@tran = @tran [ @fun ];}binmode ( STDOUT , ':encoding(gb2312)' );print "\n" ,128)">@tranArray ;my $cnt = 2011 % @ tranArray ;print "\nFinal: " . $tranArray [ $cnt ] . "\n" ;
程序输出如下:
一行白鹭上青天
白鹭一行青天上
一行白鹭天上青
白鹭一行上青天
一行白鹭青天上
白鹭一行天上青
Final: 白鹭一行青天上
Reference:
1. 善科题库 http://www.mysanco.com/tiku/index.php?class=index&action=special_subject&tid=13997&rid=10
2. 《Perl高效编程》 http://book.douban.com/subject/6146346/