|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 04 Mar 2002 22:26:08 To : Alexey Gradovtsev Subject : Re: Почему не работает? -------------------------------------------------------------------------------- Alexey Gradovtsev wrote: > Вот только система счисления должна быть двоичной и для двух вариантов: [её] и > [ий]. Иначе из 'пей' получится и такое: 'пйё', 'пий', 'пее' и т.д., но такого > уже не надо. OK. Hаверное я недостаточно внятно понял условие. Чтобы не повторяться - вот рекурсивная реализация о которой упоминал Артем. Hа сей раз коротко, без разжевывания. Андрей #!/usr/bin/perl -w use strict; my %alts = ( 'и' => ['и', 'й'], 'й' => ['и', 'й'], 'И' => ['И', 'Й'], 'Й' => ['И', 'Й'], 'е' => ['е', 'ё'], 'ё' => ['е', 'ё'], 'Е' => ['Е', 'Ё'], 'Ё' => ['Е', 'Ё'] ); my $alts_re = join('', keys %alts); sub combines { my $line = shift; my ($head, $alt, $tail) = split /([$alts_re])/o, $line, 2; return $line unless $alt; my @result; my @tails = combines($tail); foreach my $c (@{$alts{$alt}}) { push @result, map { "$head$c$_" } @tails; } @result; } print "$_\n" foreach combines('Индеец'); --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/52841e6747f7.html, оценка из 5, голосов 10
|