[#] [Перевод] Perl 6 и последовательности Маркова
habrabot(difrex,1) — All
2015-03-26 00:30:03


Рассмотрим одну нечисловую последовательность, основанную на использовании [цепей Маркова ][1]в тексте. Следующий символ последовательности будет случайным образом определяться на основе двух предыдущих. Распределение следует шаблону, содержащемуся в исходном тексте.

use v6;
use List::Utils;

my $model-text = $*IN.slurp.lc;
$model-text .=subst(/<[_']>/, "", :global);
$model-text .=subst(/<-alpha>+/, " ", :global);

my %next-step;
for sliding-window($model-text.comb, 3) -> $a, $b, $c {
%next-step{$a ~ $b}{$c}++;
}

my $first = $model-text.substr(0, 1);
my $second = $model-text.substr(1, 1);
my @chain := $first, $second, -> $a, $b { %next-step{$a ~ $b}.roll.key } ... *;
say @chain.munch(80);


После инициализации в коде чётко видны три части. [Читать дальше →][2]

[1]: https://ru.wikipedia.org/wiki/Цепь_Маркова
[2]: http://habrahabr.ru/post/253917/#habracut