Advertisement
Guest User

prioletters

a guest
Jun 26th, 2012
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement