Notazione / Meta lingua per esprimere un algoritmo

1

Ho bisogno di imparare un linguaggio notazionale, così posso esprimere e possibilmente dimostrare la correttezza di quello che ritengo sia un complicato algoritmo che distribuisce un aggiustamento del credito tra più bollette dell'acqua in ordine decrescente di data di emissione. Ma non posso dire quale dovrebbe essere il linguaggio notazionale.

Ogni fattura ha tre livelli di consumo, da 1 a 30, da 31 a 60 e da oltre 60. Ogni livello è associato a una diversa tariffa di acqua e fogna. Più alto è il livello, più alto è il tasso.

Due bollette dell'acqua hanno un consumo di 100 cc, il che significa che ogni fattura è fatturata in questo modo. Questa è la sua distribuzione tra i livelli 1, 2 e 3 è tier1 = -30, tier2 = -30 e tier3 = -40. Nel caso in cui non sia ovvio, la fatturazione avviene dal livello più basso al più alto, pertanto l'accredito avviene dal livello più alto al più basso.

Se applico un credito di consumo di -170, la prima bolletta consuma -100ccfs. È il credito residuo di -70 cc da applicare al secondo conto che diventa pazzo.

-40 di esso deve essere accreditato a tier3 e il restante -30 a tier2. Nulla è lasciato al livello 1 (seconda bolletta). So che questa è una distribuzione assolutamente corretta, perché ho consultato gli oracoli nel nostro comune. Sanno di cosa stanno parlando.

Con -70 a sinistra (tenuto in una variabile) e il consumo originale della seconda fattura (tenuto in una variabile separata), sottraggo il valore della somma di tier1 e di cuter di tier2 (60ccf) da 100ccf (il consumo quando il conto è stato rilasciato). Voglio dimostrare perché è giusto. Non sono contento di dire "Ehi, mi sono ingannato finché non ho ottenuto una bella risposta".

Qualsiasi idea o aiuto sarebbe apprezzato.

    
posta octopusgrabbus 01.08.2014 - 23:31
fonte

1 risposta

2

Come ho espresso in un'altra risposta , Z-Notation è un metodo standard comune in CS formale per esprimere algoritmi indipendenti dal linguaggio di programmazione. La categoria più ampia è Pidgin Code.

Z-Notation è utilizzato in entrambi Introduzione agli algoritmi e Intelligenza Artificiale: un Approccio Moderno , entrambi libri di testo standard nelle rispettive sotto-discipline e contenenti esempi molto complessi resi meravigliosamente in Z-Notation.

Ovviamente puoi usare qualsiasi notazione desideri, ma poiché Z-Notation è ampiamente utilizzata e sviluppata dai ricercatori che lavorano in informatica teorica e matematica, consentirà un pubblico più ampio rispetto a molte delle alternative.

    
risposta data 02.08.2014 - 00:03
fonte

Leggi altre domande sui tag