Skip to content

Instantly share code, notes, and snippets.

@colomon
Created December 11, 2010 12:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save colomon/737355 to your computer and use it in GitHub Desktop.
Save colomon/737355 to your computer and use it in GitHub Desktop.
use List::Utils;
class QuickKeyBag {
has @.values;
method add($value) {
@.values.push($value);
}
method roll() {
@.values.roll;
}
}
my %next-step;
my $model-text = $*IN.slurp.subst(/"_" | "'"/, "", :global).subst(/<-alpha>+/, " ", :global).lc;
for sliding-window($model-text.comb(/<alpha> | \s/), 3) -> $a, $b, $c {
my $last-two = $a ~ $b;
%next-step{$last-two} = QuickKeyBag.new if %next-step{$last-two} !~~ QuickKeyBag;
%next-step{$last-two}.add($c);
}
my @chain := 'a', ' ', -> $a, $b { %next-step{$a ~ $b}.roll } ... *;
say @chain[^80];
# for %next-step.keys.sort -> $letter {
# say "$letter: { %next-step{$letter}.values.join }";
# }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment