Próbuję utworzyć program w języku Ruby, który zlicza ile razy razem pojawiają się dwie litery. To jest to, co jest napisane w pliku Czytam:Zliczanie ile razy razem pojawiają się dwie litery
hola
chau
I to właśnie staram się dostać:
ho;ol;la;ch;ha;au;
1;1;1;1;1;1;
nie mogę zmusić go do poprawnej pracy. To jest mój kod do tej pory:
file = File.read(gets.chomp)
todo = file.scan(/[a-z][a-z]/).each_with_object(Hash.new(0)) {
|a, b| b[a] += 1
}
keys = ''
values = ''
todo.each_key {
|key| keys += key + ';'
}
todo.each_value {
|value| values += value.to_s + ';'
}
puts keys
puts values
Jest to wynik Dostaję:
ho;la;ch;au;
1;1;1;1;
Dlaczego nie dostaję każdą kombinację znaków? Co powinienem zamieścić w moim regexie, żeby policzyć każdą kombinację znaków?
Bardzo pouczający, Avinash. Wcześniej nie widziałem grupy przechwytującej w grupie obserwującej. Bardzo potężny. –
Mogłeś zamiast tego użyć pozytywnego spojrzenia "(? <= ([A-z] [a-z]))", o którym wspomniałeś w komentarzu, który skasowałeś. Myślę, że zasługuje na wzmiankę. –