Sto provando a fare un programma Ruby che conta il numero di volte in cui due lettere appaiono insieme. Questo è ciò che è scritto nel file che sto leggendo:Contando il numero di volte in cui due lettere appaiono insieme
hola
chau
E questo è quello che sto cercando di ottenere:
ho;ol;la;ch;ha;au;
1;1;1;1;1;1;
io non riesco a farlo funzionare correttamente. Questo è il mio codice finora:
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
Questo è il risultato che sto ottenendo:
ho;la;ch;au;
1;1;1;1;
Perché non ricevo ogni combinazione di caratteri? Cosa dovrei aggiungere alla mia regex in modo che contasse ogni combinazione di caratteri?
Molto istruttivo, Avinash. Non avevo mai visto un gruppo di cattura in un gruppo di ricerca. Molto potente. –
Si potrebbe invece aver usato il look-behind positivo '(? <= ([A-z] [a-z]))', a cui si allude in un commento che hai cancellato. Penso che meriti menzione. –