Corso di Raku / Appendice 🆕 / Lavorare con i dati / Testo e stringhe / Exercises / Codifica run-length
Soluzione: Codifica run-length
Ecco una possibile soluzione del compito.
Codice
my $text = 'aaabbbbcc';
my $encoded = '';
for $text ~~ m:g/ (.) $0* / -> $match {
$encoded ~= $match[0] ~ $match.chars;
}
say $encoded;🦋 Trova il programma nel file run-length.raku.
Output
a3b4c2Commenti
Lo schema
(.) $0*cattura un carattere e poi riconosce tutte le copie successive che seguono — una sequenza intera per corrispondenza.m:graccoglie ogni sequenza.Per ogni sequenza,
$match[0]è la lettera ripetuta e$match.charsè la lunghezza della sequenza, quindi i due insieme danno voci comea3.Dare un nome alla corrispondenza con
-> $matchè facoltativo. Senza, ogni corrispondenza diventa l’argomento corrente$_, e puoi lasciar cadere la variabile e chiamare i metodi direttamente su di essa:my $text = 'aaabbbbcc'; my $encoded = ''; for $text ~~ m:g/ (.) $0* / { $encoded ~= .[0] ~ .chars; } say $encoded;