本帖最后由 sxw 于 2011-10-22 23:28 编辑
以前的题目,引用“
前些天在CN-DOS翻老帖,看到如此的一个题目,又加深了一点难度,有兴趣的来做下。
加分规则:
1.思路独特 5分
2.代码高效、通用 4分
3.技巧高超 4分
4.代码简洁 2分
5.完美代码 15分
题目如下:
a.txt内容:
A111
Assure
Cons tant
Smail
A012
Exa
Explosive
Weird
Admission
A077
Chant
Reli gious
Praise
Rhyming
Parsley
A034
Faith
Zealous
Absorb
Principle
按照段落序号从小到大顺序排列,如下:
A012
Exa
Explosive
Weird
Admission
A034
Faith
Zealous
Absorb
Principle
A077
Chant
Reli gious
Praise
Rhyming
Parsley
A111
Assure
Cons tant
Smail
每段的单词个数未知,在单词随机处有空格。
段落序号A之后的数字总是3位,若不够三位,则在前面加0表示。
A077,而不是A77。A034,而不是A34
”
试着用Perl来实现:- #!/usr/bin/perl
- use strict;
- use warnings;
- undef $/;
- my $file=<DATA>;
- my @a=split (m/^(A\d\d\d)/m,$file);
- shift @a;
- my %hash=@a;
- foreach (sort keys %hash) {
- print "$_","$hash{$_}\n";
- }
- __DATA__
- A111
- Assure
- Cons tant
- Smail
-
- A012
- Exa
- Explosive
- Weird
- Admission
-
- A077
- Chant
- Reli gious
- Praise
- Rhyming
- Parsley
-
- A034
- Faith
- Zealous
- Absorb
- Principle
-
-
复制代码
|