免费注册 查看新帖 |

Chinaunix

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

这道哈希编程应该怎么编,求助!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-12 22:42 |只看该作者 |正序浏览
请用电话上字母和数字的对应关系来来实现字母到数字的转换.
举个例子:
        输入help,输出应为4357.

论坛徽章:
0
11 [报告]
发表于 2009-12-14 00:14 |只看该作者
原帖由 alen0826 于 2009-12-12 22:42 发表
请用电话上字母和数字的对应关系来来实现字母到数字的转换.
举个例子:
        输入help,输出应为4357.


Sample code for learning Perl step by step:

  1. use strict;

  2. # create a hash for telefonkey's number and alphabet
  3. my %handykeys_num2chars = (
  4.     2 => 'abc',
  5.     3 => 'def',
  6.     4 => 'ghf',
  7.     5 => 'jkl',
  8.     6 => 'mno',
  9.     7 => 'qprs',
  10.     8 => 'tuv',
  11.     9 => 'wxyz',
  12. );

  13. my $word = 'ChinaUnix';    # i.e.: find related fon key's number from this word
  14. my $result_num  = '';

  15. foreach my $char (split '', $word)    // Split word in one char
  16. {
  17.     # loop defined hash   
  18.     foreach my $key_num (sort keys %handykeys_num2chars) {
  19.         # using regex to match the char and get related number
  20.         if ($handykeys_num2chars{$key_num} =~ /$char/i) {
  21.             $result_num .= $key_num;    # put the found number together.
  22.         }
  23.     }
  24. }
  25. # print result
  26. print "$word => $result_num\n";
复制代码

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
10 [报告]
发表于 2009-12-13 16:14 |只看该作者
仙子大人发飙了。收回前面的map,改回foreach

  1. foreach my $h ('a','b','d','g','j','m','p','t','w'){
  2.         ++$i;
  3.         $key{$_}=$i foreach $h..'z';  
  4. }
  5. while ($ARGV[0]=~/./g){
  6. print $key{$&};
  7. }
复制代码

论坛徽章:
0
9 [报告]
发表于 2009-12-13 15:07 |只看该作者
先学了再问, 没有学就来问是白问

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
8 [报告]
发表于 2009-12-13 00:04 |只看该作者
map{$key{$_}=2} 'b'..'c';
等价于
$key{'b'}=2;
$key{'c'}=2;

代码改的简洁一点。。。

  1. foreach my $h ('a','b','d','g','j','m','p','t','w'){
  2.         ++$i;
  3.         map {$key{$_}=$i} $h..'z';  
  4. }
  5. while ($ARGV[0]=~/./g){
  6. print $key{$&};
  7. }
复制代码

[ 本帖最后由 ttcn_cu 于 2009-12-13 00:16 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2009-12-12 23:58 |只看该作者
map是什么意思
map{$key{$_}=1} 'a'; 是什么意思呢?
我还没学到map这个功能吧

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
6 [报告]
发表于 2009-12-12 23:47 |只看该作者
明明用了哈希了啊,还要那种???

论坛徽章:
0
5 [报告]
发表于 2009-12-12 23:43 |只看该作者
非常希望哪位高手能用哈希结构写出来,我可以边看边对照学习,谢谢!

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
4 [报告]
发表于 2009-12-12 23:32 |只看该作者
  1. #!/usr/bin/perl -w

  2. my %key;
  3. map{$key{$_}=1} 'a';
  4. map{$key{$_}=2} 'b'..'c';
  5. map{$key{$_}=3} 'd'..'f';
  6. map{$key{$_}=4} 'g'..'i';
  7. map{$key{$_}=5} 'j'..'l';
  8. map{$key{$_}=6} 'm'..'o';
  9. map{$key{$_}=7} 'p'..'s';
  10. map{$key{$_}=8} 't'..'u';
  11. map{$key{$_}=9} 'w'..'z';
  12. while ($ARGV[0]=~/./g){
  13. print $key{$&};
  14. }
复制代码


纯当map练习作业

论坛徽章:
0
3 [报告]
发表于 2009-12-12 23:29 |只看该作者
我是新手,希望用哈希结构来写,不用先定义下哈希结构吗?比如说2和ABC相对应,3和DEF相对应
例子里的意思是在电话机上h对应4,e对应3,l对应5,p对应7 (大小写可以忽略)

[ 本帖最后由 alen0826 于 2009-12-12 23:32 编辑 ]
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP