用Perl解决一道高中数学题

前端之家收集整理的这篇文章主要介绍了用Perl解决一道高中数学题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

背景:在微博上见到一道简单的数学题 ,最近一直在学Perl编程,用Perl实现之,在代码中应用了几个高级技巧,加深了对Perl数组的理解。


问题: 一个将字符串“ ABCDEFG ”变成字符串“ CDABFGE ”的置换定义为一次运算,则从字符 “一行白鹭上青天”开始,经过  2011  次运算后得到的字符串为

  •  
  •  
  •  
  •  

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/

猜你在找的Perl相关文章