免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4767 | 回复: 14
打印 上一主题 下一主题

实现"abcd*d=dcba"??? [复制链接]

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-07 23:02 |只看该作者 |倒序浏览
use strict;
use warnings;

my $a;
my $b;
my $c;
my $d;


for ($a=0;$a<=9;$a++)
{ for ($b=0;$b<=9;$b++)
{ for ($c=0;$c<=9;$c++)
  { for ($d=0;$d<=9;$d++)
   {
      if(("$a != $b != $c != $d" && ("($a*1000+$b*100+$c*10+$d)*$d" == "$d*1000+$c*100+$b*10+$a")

       { print "$a $b $c $d\n"; }
     }
   }
  }
}
对吗?

论坛徽章:
0
2 [报告]
发表于 2004-02-09 10:36 |只看该作者

实现"abcd*d=dcba"???


  1. #!/usr/bin/perl

  2. my $num;

  3. foreach $num(1000..9999)
  4. {
  5.         $num =~ /(\d){1}(\d){1}(\d){1}(\d){1}/;               
  6.         if( ($num * $4) == ($4*1000 + $3*100 + $2*10 + $1) )
  7.         {
  8.                 print "$num\n";
  9.         }
  10. }
复制代码

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
3 [报告]
发表于 2004-02-11 18:40 |只看该作者

实现"abcd*d=dcba"???

本帖最后由 xiaojianredhat 于 2010-11-22 19:02 编辑

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-02-11 22:29 |只看该作者

实现"abcd*d=dcba"???

$num = 1234;
@str=split(//,$num);
$reverseNum = join("",reverse(@str));
print "$reveseNum\n";

更簡化..

$str =1234;
$num= join("",reverse((split(//,$str))));
print $num,"\n";

寫錯了..我看錯了...:)
deathcult寫得很好..

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
5 [报告]
发表于 2004-02-14 20:36 |只看该作者

实现"abcd*d=dcba"???

  1. $num =~ /(\d){1}(\d){1}(\d){1}(\d){1}/;  
复制代码

模式重用时怎么办?
小括号???(应该在模式重用时用)
比如
  1. $num =~ /(\d){1}(\W])(\d){1}(\d){1}/;
复制代码

匹配2.25
如果匹配2.25.32怎么办?(在上面代码的基础上)
[/quote]

论坛徽章:
0
6 [报告]
发表于 2006-01-20 11:39 |只看该作者
原帖由 deathcult 于 2004-2-9 10:36 发表
[code]
#!/usr/bin/perl

my $num;

foreach $num(1000..9999)
{
        $num =~ /(\d){1}(\d){1}(\d){1}(\d){1}/;               
        if( ($num * $4) == ($4*1000 + $3*100 + $2*10 + $1) )
        {
                print "$num\n" ...






有意思

论坛徽章:
0
7 [报告]
发表于 2006-01-21 16:03 |只看该作者

更像perl的写法

perl -e 'map{print $_ if(!/(.).*\1/&&$_%10*$_==reverse)}(1000..9999)'

论坛徽章:
0
8 [报告]
发表于 2006-01-21 21:50 |只看该作者
原帖由 orangetouch 于 2006-1-21 16:03 发表
perl -e 'map{print $_ if(!/(.).*\1/&&$_%10*$_==reverse)}(1000..9999)'



不对呀

C:\>perl -e "map{print $_ if(!/(.).*\1/&&$_%10*$_==reverse)}(1000..9999)"
1089
C:\>

实际的结果应该是:
C:\>perl pl.pl
1001
1089
1111
1221
1331
1441
1551
1661
1771
1881
1991

C:\>

论坛徽章:
0
9 [报告]
发表于 2006-01-22 08:13 |只看该作者
C:\>perl -e "map{print $_ if(!/(.).*\1/&&$_%10*$_==reverse)}(1000..9999)"
1089

这个结果更严格些,表示a、b、 c、 d分别代表不同的数字,要想一样的话把&&前的匹配部分去掉就可以了。

论坛徽章:
0
10 [报告]
发表于 2006-12-08 11:47 |只看该作者
修改了一下。呵呵


  1. #!/usr/bin/perl

  2. my $num;

  3. foreach $num(1000..9999)
  4. {      
  5.         $num =~ /(\d){1}(\d){1}(\d){1}(\d){1}/;
  6.         $_=reverse($num);
  7.         if( $_ =~ /$num/ ){
  8.                print $num ."\n";
  9.         }
  10. }
复制代码

结果:

  1. 1001
  2. 1111
  3. 1221
  4. 1331
  5. 1441
  6. 1551
  7. 1661
  8. 1771
  9. 1881
  10. 1991
  11. 2002
  12. 2112
  13. 2222
  14. 2332
  15. 2442
  16. 2552
  17. 2662
  18. 2772
  19. 2882
  20. 2992
  21. 3003
  22. 3113
  23. 3223
  24. 3333
  25. 3443
  26. 3553
  27. 3663
  28. 3773
  29. 3883
  30. 3993
  31. 4004
  32. 4114
  33. 4224
  34. 4334
  35. 4444
  36. 4554
  37. 4664
  38. 4774
  39. 4884
  40. 4994
  41. 5005
  42. 5115
  43. 5225
  44. 5335
  45. 5445
  46. 5555
  47. 5665
  48. 5775
  49. 5885
  50. 5995
  51. 6006
  52. 6116
  53. 6226
  54. 6336
  55. 6446
  56. 6556
  57. 6666
  58. 6776
  59. 6886
  60. 6996
  61. 7007
  62. 7117
  63. 7227
  64. 7337
  65. 7447
  66. 7557
  67. 7667
  68. 7777
  69. 7887
  70. 7997
  71. 8008
  72. 8118
  73. 8228
  74. 8338
  75. 8448
  76. 8558
  77. 8668
  78. 8778
  79. 8888
  80. 8998
  81. 9009
  82. 9119
  83. 9229
  84. 9339
  85. 9449
  86. 9559
  87. 9669
  88. 9779
  89. 9889
  90. 9999
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP