[Перевод] Perl 6 и последовательности Маркова
|
|
Среда, 25 Марта 2015 г. 02:08
+ в цитатник
Рассмотрим одну нечисловую последовательность, основанную на использовании
цепей Маркова в тексте. Следующий символ последовательности будет случайным образом определяться на основе двух предыдущих. Распределение следует шаблону, содержащемуся в исходном тексте.
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);
После инициализации в коде чётко видны три части.
Читать дальше → http://habrahabr.ru/post/253917/
Метки:
Программирование
Perl
perl6
rakudo
markov
марков
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-