Raku kurss / Pielikums 🆕 / Darbs ar datiem / Teksts un virknes / Exercises / Sēriju garuma kodēšana
Risinājums: Sēriju garuma kodēšana
Šeit ir iespējams risinājums uzdevumam.
Kods
my $text = 'aaabbbbcc';
my $encoded = '';
for $text ~~ m:g/ (.) $0* / -> $match {
$encoded ~= $match[0] ~ $match.chars;
}
say $encoded;🦋 Atrodiet programmu failā run-length.raku.
Izvade
a3b4c2Komentāri
Paraugs
(.) $0*satver vienu rakstzīmi un tad atbilst tik daudzām tās kopijām, cik seko, — vienai veselai sērijai vienā atbilstībā.m:gsavāc katru sēriju.Katrai sērijai
$match[0]ir atkārtotais burts un$match.charsir sērijas garums, tāpēc abi kopā dod ierakstus, piemēram,a3.Atbilstības nosaukšana ar
-> $matchnav obligāta. Bez tās katra atbilstība kļūst par tematu$_, un mainīgo var atmest, izsaucot metodes tieši tam:my $text = 'aaabbbbcc'; my $encoded = ''; for $text ~~ m:g/ (.) $0* / { $encoded ~= .[0] ~ .chars; } say $encoded;
Kursa navigācija
← Sēriju garuma kodēšana | Saraksti, masīvi un jaucējtabulas →