L'ordine delle operazioni, PEMDAS, è una regola di base in matematica che ci dice quali operazioni di ordine devono essere eseguite:
"Parentesi, esponenti, moltiplicazione e divisione e addizione e sottrazione"
Il problema è che PEMDAS non è molto versatile! E se volessi farlo in un altro ordine? Non faremo confusione con le parentesi, quindi le terremo dove sono (prima).
Crea un programma che accetta due argomenti:
- Una stringa che indica a quale ordine devono seguire le operazioni. Alcuni esempi sono
"DAMES"
,"SAD, ME"
,"ME SAD"
,"MEADS"
. Sì, spazi e virgole sono a posto, in quanto l'ordine è più facile da ricordare.- Suggerimenti seguenti nella chat: il supporto di spazi e virgole è ora facoltativo.
- Se manca una delle lettere o se ci sono altre lettere che non dovrebbero esserci, puoi considerare l'input non valido e trattarlo come preferisci.
- Una stringa o un'espressione contenente l'espressione che deve essere valutata.
Restituisce il risultato dell'espressione come numero decimale o intero. Se la risposta non è un numero intero, deve essere restituita come un numero decimale.
Regole:
- Va bene combinare i due argomenti di input in uno, se è più facile nella tua lingua.
- Non deve essere una stringa, ma deve contenere lettere. Non puoi sostituire Addition con 1, Division con 2, ecc.
- Puoi scegliere quale input è il primo.
- L'espressione viene valutata da
destra a sinistra dasinistra a destra. (Cambio di regola. Sono accettati tutti i poster di presentazione nelle prime 12 ore che hanno il contrario) - Le operazioni utilizzano i simboli:
( ) ^ * / + -
. Ad esempio, non è possibile utilizzare¤
anziché+
per l'aggiunta. - Gli spazi nell'espressione di input non sono validi come input
- Unario +/- non è valido come input se segue direttamente + o -. Considera
3+-2
come input non valido. Può essere trattato come preferisci (non deve produrre un errore). Se+
o-
segue qualsiasi altro operatore a più o meno, è trattata al solito modo:3*-3 = -9
,sin(-2)=-0.909
- Il programma deve seguire rigorosamente le lettere, quindi
"EMDAS", 1-3+4 => -6
, e"EMDSA", 1-3+4 => 2
.
Esempi:
Input: "EMDAS", "3+6*2/4-1" // -> 3+12/4-1 -> 3+3-1 -> 6-1 -> 5
Output: 5
Input: "DAMES", "3+6*2/4-1" // -> 3+6*0.5-1 -> 9*0.5-1 -> 4.5-1 -> 3.5
Output: 3.5
Input: "SAD, ME", "3+6*2/4-1" // -> 3+6*2/3 -> 9*2/3 -> 9*0.66667 -> 6
Output: 6
Input: "ME ADS", "3+5^4/2-3*2 // -> 3+5^4/2-6 -> 3+625/2-6 -> 628/2-6 -> 314-6 -> 308
Output: 308
Input: "AM EDS", "4*3-sin(0.5^2)*3+1" // -> 4*3-sin(0.5^2)*4 -> 12-sin(0.5^2)*4 -> 4*3-(4*sin(0.5^2)) -> 12-(4*sin(0.5^2)) -> 12-(4*sin(0.25)) -> 12-(4*0.24740) -> 12-0.98961 -> 11.01038
Output: 11.01038
Input: "DAMES", "4-5-6" // -> (4-5)-6 -> = -7
Output: -7 // NOT: -> 4-(5-6) -> 4-(-1) -> 5
Nota, le parentesi sono state aggiunte per mostrare che la moltiplicazione 4*sin(0.5^2)
viene valutata prima dell'espiazione.
Questo è il codice golf, quindi vince il codice più breve in byte.
BODMAS
o BIDMAS
a scuola. B
= Staffe O
o I
= Ordine o Indici.
p
necessario? Non è negli esempi