Vai al contenuto Link Cerca Menu (external link)
Coding e fondamenti di AI
Modulo 4 · Astrarre difficile R

Rimborso della trasferta

L’ufficio amministrazione di una società di consulenza rimborsa ai dipendenti le spese delle trasferte di lavoro. Ogni nota spese arriva come due elenchi della stessa lunghezza, uno accanto all’altro: la categoria di ciascuna spesa (“treno”, “aereo”, “taxi”, “hotel”, “pasto”, “minibar”…) e il suo importo in euro, più la durata della trasferta in giorni.

Il regolamento aziendale dice tre cose. Le spese della categoria “minibar”, “alcolici” e “multa” non si rimborsano mai. Un “pasto” si rimborsa fino a 30 euro: un pranzo da 42 euro vale 30, uno da 30 esatti o meno vale quello che è costato; il limite è per ogni singolo pasto, non sul totale dei pasti. Tutte le altre spese si rimborsano per intero. Infine c’è un tetto complessivo di 150 euro per ogni giorno di trasferta: se le spese rimborsabili lo superano, si rimborsa il tetto; se ci arrivano esatte, si rimborsano tutte.

Scrivi la funzione rimborso_trasferta(categorie, importi, giorni) che restituisce gli euro da rimborsare, con due decimali. Ti serve %in% per riconoscere le categorie escluse e ! per tenere le altre. Prima di scrivere codice, scrivi tu la specifica con i casi al confine: un pasto da 30 euro esatti, una nota fatta solo di spese escluse, una nota che arriva esattamente al tetto.

Input
  • categorie vettore di testi — categoria di ciascuna spesa della nota, per esempio "treno", "hotel", "pasto", "minibar"
  • importi vettore di numeri — importo in euro di ciascuna spesa, stesso ordine di categorie
  • giorni numero — durata della trasferta in giorni
Output
rimborso numero — euro rimborsati al dipendente, 2 decimali
da scrivere come funzione rimborso_trasferta
Nota
Lab difficile: le regole sono nel testo, gli esempi non ci sono. Scrivi tu la specifica prima del codice.
R runtime non caricato