Soluzione Bolletta

21 Feb 2017

Soluzione Bolletta

def bolletta(filename)
  # Controlliamo l'input: sia che sia una stringa, sia che il file esista
  raise ArgumentError, "filename deve essere String" unless filename.is_a? String
  raise RuntimeError, "filename non esiste" unless File.exist? filename

  # Costruiamo l'elemento in uscita
  ret = {}
  # Apriamo il file ed eseguiamo per ogni linea
  File.open(filename, "r").each_line do |l|
    # Leggiamo una singola linea e la suddividiamo su base ","
    # e convertiamo ogni elemento in numero intero (map, che applica to_i)
    tel, tr, tm = l.chomp.split(",").map(&:to_i)

    # Se non esiste la chiave numero di telefono
    # crea la chiave ocn valore 0
    ret[tel] = 0 unless ret.keys.include? tel
    # Clacola la tariffa
    ret[tel] += tr * tm
  end
  # Ritorna il risultato
  return ret
end