Soluzione Pangram

21 Feb 2017

Soluzione Pangram

# Compio una scelta di progetto. Il mio algoritmo controlla per pangrammi
# di natura inglese (con tutte le 26 lettere dell'alfabeto), potrebbe
# non essere la soluzione corretta dell'esame, ma è facile farlo tornare
def pangram(msg)
  # Come sempre dobbiamo controllare l'ingresso
  raise ArgumentError, "Deve essere una stringa" unless msg.is_a? String

  # Costruiamo l'hash di lettere
  letters = {}; ("a".."z").each { |l| letters[l] = nil }

  for i in 0...msg.size
    letters.delete msg[i].downcase # delete non ritorna errore se la chiave non esiste
  end

  # Ritorna true se abbiamo usato tutte le lettere (nessuna chiave rimasta)
  return letters == {}
end