]>
| Commit | Line | Data |
|---|---|---|
| 1 | #!/usr/bin/perl | |
| 2 | ||
| 3 | $row = "!qwertyuiop!asdfghjkl!zxcvbnm!"; | |
| 4 | @row_array = split(//, $row); | |
| 5 | ||
| 6 | while (<>) { | |
| 7 | chomp; | |
| 8 | y/A-Z/a-z/; | |
| 9 | s/\byou\b/u/gi; | |
| 10 | s/\bpeople\b/ppl/gi; | |
| 11 | s/\bthrough\b/thru/gi; | |
| 12 | s/\bthough\b/tho/gi; | |
| 13 | s/\bnope\b/nup/gi; | |
| 14 | s/\baustralia\b/oz/gi; | |
| 15 | s/\bfilm\b/flim/gi; | |
| 16 | s/\bsucks\b/sux/gi; | |
| 17 | s/\benough\b/enuff/gi; | |
| 18 | s/\ba lot\b/a shitload/gi; | |
| 19 | s/\bstuff\b/shit/gi; | |
| 20 | s/, /.. /g; | |
| 21 | s/\.$/.../g; | |
| 22 | ||
| 23 | @lets = split(//); | |
| 24 | ||
| 25 | $strlen = $#lets; | |
| 26 | ||
| 27 | for ($x = 0; $x < $strlen; $x++) { | |
| 28 | if (rand() < 0.01) { | |
| 29 | swap(\@lets, $x, $x + 1); | |
| 30 | next; | |
| 31 | } | |
| 32 | ||
| 33 | if (rand() < 0.10 && $lets[$x] eq " ") { | |
| 34 | swap(\@lets, $x - 1, $x - 2); | |
| 35 | next; | |
| 36 | } | |
| 37 | ||
| 38 | if(rand() < 0.01) { | |
| 39 | $i = insert_adjacent(\@lets, $x, $lets[$x]); | |
| 40 | $strlen += $i; | |
| 41 | next; | |
| 42 | } | |
| 43 | ||
| 44 | if(rand() < 0.01) { | |
| 45 | splice(@lets, $x, 1); | |
| 46 | $strlen--; | |
| 47 | next; | |
| 48 | } | |
| 49 | } | |
| 50 | ||
| 51 | print join("", @lets) . "\n"; | |
| 52 | } | |
| 53 | ||
| 54 | sub insert_adjacent { | |
| 55 | my($aref, $pos, $let) = @_; | |
| 56 | ||
| 57 | ||
| 58 | $newlet = get_adjacent($let); | |
| 59 | ||
| 60 | if( !$newlet ) { | |
| 61 | return 0; | |
| 62 | } | |
| 63 | ||
| 64 | splice(@$aref, $pos + 1, 0, $newlet); | |
| 65 | return 1; | |
| 66 | } | |
| 67 | ||
| 68 | ||
| 69 | sub get_adjacent { | |
| 70 | my($let) = @_; | |
| 71 | ||
| 72 | return 0 if $let !~ /[a-zA-Z]/; | |
| 73 | ||
| 74 | $i = index($row, $let); | |
| 75 | $before = $row_array[$i - 1]; | |
| 76 | $after = $row_array[$i + 1]; | |
| 77 | ||
| 78 | ||
| 79 | ||
| 80 | if( $before eq "!" || (rand() < rand() && $after ne "!")) { | |
| 81 | return $after; | |
| 82 | } else { | |
| 83 | return $before; | |
| 84 | } | |
| 85 | } | |
| 86 | ||
| 87 | sub swap { | |
| 88 | my($aref, $n, $m) = @_; | |
| 89 | my($tmp); | |
| 90 | ||
| 91 | if(defined($$aref[$n]) && defined($$aref[$m])) { | |
| 92 | if(! (($$aref[$n] =~ /[A-Z ]/ && $$aref[$m] =~ /[A-Z ]/) || | |
| 93 | ($$aref[$n] =~ /[a-z ]/ && $$aref[$m] =~ /[a-z ]/) )) { | |
| 94 | return; | |
| 95 | } | |
| 96 | $tmp = $$aref[$n]; | |
| 97 | $$aref[$n] = $$aref[$m]; | |
| 98 | $$aref[$m] = $tmp; | |
| 99 | } | |
| 100 | } | |
| 101 |