1. Il for viene pure utilizzato nel Ruby, ma l'each viene considerato il più peculiare al linguaggio. Considererei di utilizzare comunque l'each principalmente perchè l'indice è persistente solo in quella porzione del codice (nel contesto del loop).
2. Omettere le parentesi non fa nè caldo nè freddo. Io considererei di lasciarle stare.
3. Il tuo consiglio non migliorerebbe nulla, stai solo provando a rendere più elegante del codice inutilmente. Se fosse un po' troppo sporca la soluzione dal punto di vista di sintassi, allora passo a trovarmi un'alternativa che non cambi funzionalmente, ma il modo di scrivere il codice.
Non conosco il Ruby, prendi con le pinze ciò che stai per leggere.
Il problema molto probabilmente sta qui:
Ruby:
for char in (0..msg.length-1)
if (msg[char]==" ")
encr_msg<< " "
end
for x in (0..alphabet.length-1)
if (msg[char]==alphabet[x])
encr_msg<<p_key[x]
end
end
end
se io immettessi un numero nel testo da criptare, verrebbe crittato pure quello? A quanto pare vengono crittate solo le lettere alfabetiche (tra l'altro non capitalizzate). La lunghezza di p_key deve essere per forza proporzionale alla lunghezza del testo crittato?