SHOW:
|
|
- or go back to the newest paste.
1 | #!/bin/perl | |
2 | use strict; | |
3 | ||
4 | my $prio_vals = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; | |
5 | length($prio_vals) >= @ARGV+1 || die 'too many groups'; | |
6 | ||
7 | my $symbols = join '', @ARGV; | |
8 | my %letterprios = (); | |
9 | my $cur_prio = 1; | |
10 | ||
11 | foreach my $s (@ARGV) | |
12 | { | |
13 | for(my $i = 0; $i < length($s); $i++) | |
14 | { | |
15 | $letterprios{substr($s, $i, 1)} = substr($prio_vals, $cur_prio, 1); | |
16 | } | |
17 | $cur_prio++; | |
18 | } | |
19 | ||
20 | sub gen_code | |
21 | { | |
22 | my $r = ''; | |
23 | for(my $i = 0; $i < length($_[0]); $i++) | |
24 | { | |
25 | $r .= $letterprios{substr($_[0], $i, 1)}||0; | |
26 | } | |
27 | return join '', reverse sort split(//, $r); | |
28 | } | |
29 | ||
30 | my %words_with_prio = (); | |
31 | while(<STDIN>) | |
32 | { | |
33 | next if /([$symbols]).*\1/ or /[a-zA-Z]/; | |
34 | my $s = join '', sort split(//); | |
35 | if($s =~ /.*[$symbols]{3,}.*/) | |
36 | { | |
37 | chomp; | |
38 | $words_with_prio{gen_code($_)} = $_; | |
39 | } | |
40 | } | |
41 | ||
42 | foreach my $c (reverse sort keys %words_with_prio) | |
43 | { | |
44 | print "$words_with_prio{$c}\n"; | |
45 | } |