免费注册 查看新帖 |

Chinaunix

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

perl实例精解的一道题,求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-08 15:09 |只看该作者 |倒序浏览
编写一段脚本 , 从一叠纸牌中随机抽取 10 张 , 并打印结果值 。
a. 该脚本应当先借助 foreach 循环构建一套 52 张牌 。
b. 外层循环负责按照花色遍历整套纸牌:
梅花、 方块 、 红桃 、 黑桃 。 内层循环则针对每一种花色
遍历所有数字 : A 、到 10 、 J 、 Q 以及 K 。 从各花色获得的纸牌都将赋值到一个数组中 。
c. 使用 rand() 函数从上述数组中随机获得一张纸牌 。
这样做便能保证获得的 10 张纸牌互不重复 。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
2 [报告]
发表于 2011-03-08 15:19 |只看该作者
#!/usr/bin/perl -w

use 5.012;
use List::Util 'shuffle';
use Data::Dumper;

my @cards;

for my $color ('梅花', '方块', '红桃', '黑桃') {
    for my $point ( 'A', 2 .. 10, 'J', 'Q', 'K') {
        push @cards, [$color, $point];
    }
}

print Dumper [(shuffle @cards)[0 .. 9]]

论坛徽章:
0
3 [报告]
发表于 2011-03-10 10:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
双子座
日期:2013-11-06 17:18:01
4 [报告]
发表于 2011-03-10 10:10 |只看该作者
#!/usr/bin/perl -w

use 5.012;
use List::Util 'shuffle';
use Data:umper;

my @cards;

for  ...
zhlong8 发表于 2011-03-08 15:19



遇到生疏的模块又高兴又怕,高兴的是学到新模块了,怕的是我为什么没用过看过这个模块

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
5 [报告]
发表于 2011-03-10 10:23 |只看该作者
模块是个积累的过程,问题这个 List::Util 是标准模块之一

论坛徽章:
0
6 [报告]
发表于 2011-03-25 14:46 |只看该作者
  1. #!/usr/bin/perl -w
  2. @color=('梅花','方块','红桃','黑桃');
  3. @number=('A',2..10,'J','Q','K');
  4. foreach $a (@color) {
  5.         foreach $b (@number) {
  6.         push (@c,$a.$b);
  7.         }
  8. }
  9. for ($d=0;$d<10;$d++) {
  10.      $e=(int rand (52))-1;
  11.      print "$c[$e]\n";
  12. }
复制代码
今天突然看到之前发的这个问题,楼上的给的答案没有按照题目要求来,请高手看下我写的这个,我觉得很罗嗦,请指正,谢谢!

论坛徽章:
0
7 [报告]
发表于 2011-03-25 15:29 |只看该作者
今天突然看到之前发的这个问题,楼上的给的答案没有按照题目要求来,请高手看下我写的这个,我觉得很罗嗦, ...
超级细菌 发表于 2011-03-25 14:46



方块J
黑桃2
黑桃J
黑桃2
红桃3
黑桃10
红桃5
黑桃8
红桃K
黑桃2

运行了一次就发现有3个重复的

论坛徽章:
0
8 [报告]
发表于 2011-03-25 15:38 |只看该作者
zhlong8

论坛徽章:
0
9 [报告]
发表于 2011-03-25 21:05 |只看该作者
不是吧?太失望了,{:3_194:}还得再改改

论坛徽章:
0
10 [报告]
发表于 2011-03-26 11:25 |只看该作者
#!/usr/bin/perl -w
@color=qw('方块' '黑桃' '红桃' '梅花');
@sign=qw(A J Q K);
@num=(2..10);
@num1=(@sign,@num);
$i=0;
foreach $color(@color)
{
    foreach $num1(@num1)
   {
            $v[$i]=$color.$num1;
            #print "${v[$i]}\n";
             $i++;
   }
}
$flag=0;
foreach (1..10){
    $rand=rand(52)+1;
    $rand=int($rand);
    if($flag!=$rand)
   {
        print "$v[$rand]\n";
                $flag=$rand;
   }
    else
    {
        $_--;
    }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP