[A24-58] Inserisci parentesi

Il forum di Base5, dove è possibile postare problemi, quiz, indovinelli, rompicapo, enigmi e quant'altro riguardi la matematica ricreativa e oltre.

Moderatori: Gianfranco, Bruno

Rispondi
Quelo
Livello 7
Livello 7
Messaggi: 928
Iscritto il: ven giu 16, 2006 3:34 pm

[A24-58] Inserisci parentesi

Messaggio da Quelo »

La seguente espressione aritmetica senza parentesi dà come risultato -3.

1-2+3-4+5-6 = -3
Se collochiamo due parentesi così, il risultato diventa -1.

1-2+3-(4+5-6) = -1
Aggiungi parentesi in modo da ottenere il risultato più grande possibile
(massimizzare il risultato).
Aggiungi parentesi in modo da ottenere il risultato più piccolo possibile
(minimizzare il risultato).
Come si può scrivere un programma per computer che risolva questo tipo di problemi, con n numeri e n-1 operatori +, -, *, / ?
Riprendo questo che trovo interessante

La prima cosa che mi viene in mente è di raggruppare tutte le somme, in modo che rimangano solo sottrazioni. Ottengo così il minimo

1-(2+3)-(4+5)-6 = -19

Se adesso raggruppo ulteriormente tutte le operazioni dopo il primo meno, trasformo l'ultima parte in positivo. Ottengo così il massimo

1-((2+3)-(4+5)-6) = 11

Questa potrebbe essere una regola generale, ma se aumento il numero di elementi e inserisco gli altri operatori, il ragionamento potrebbe non essere così immediato

Proviamo allora a scrivere un programma che risolva da solo il problema.
La prima cosa che mi viene in mente è di provare tutte le possibili combinazioni, ma questo significa esplorare tutti i possibili raggruppamenti all'interno delle parentesi.

Prendiamo come esempio n = 6 avremo, come sottogruppi di primo livello
[1,1,1,1,1,1] = 1-2+3-4+5-6 = -3
[2,1,1,1,1] = (1-2)+3-4+5-6 = -3
[2,2,1,1] = (1-2)+(3-4)+5-6 = -3
[2,2,2] = ...
[3,1,1,1]
[3,2,1]
[3,3]
[4,1,1]
[4,2]
[5,1]

Per ognuno di questi dobbiamo considerare le possibili permutazioni, mantenendo l'ordine dei numeri
ad esempio [5,1] = (1-2+3-4+5)-6 = -3
mentre [1,5] = 1-(2+3-4+5-6) = 1

A questo punto dobbiamo considerare che ogni sottogruppo con più di due elementi genera ulteriori raggruppamenti
ad esempio [3,2,1] genera [(2,1),2,1] e [(1,2),2,1] da moltiplicare per le 6 permutazioni possibili

Dobbiamo ora scrivere alcune routine:
- una che genera tutti i raggruppamenti di primo livello (e tutti gli altri in cascata)
- una che genera le permutazioni di un certo gruppo
- una che genera tutte le possibili combinazioni in modo iterativo
- una che ricompone le formule e ne valuta il risultato

Usiamo Python, per diversi motivi:
- ha una funzione che genera le permutazioni senza scrivere il relativo codice (anche negli esempi di Decimal Basic c'è un codice pronto)
- ha una funzione che valuta direttamente il risultato di una formula contenuta in una stringa
- non si devono dimensionare gli array, possiamo ingrandirli a piacere finché c'è memoria disponibile

Ed ecco il nostro listato

Codice: Seleziona tutto

# importa la funzione di permutazione dal modulo itertools

from itertools import permutations as pms

#ricava i sottogruppi di primo livello di un insieme di n elementi

def sottogruppi(n):
    s = [[1]*n]                     # crea un array di n volte 1
    p = 0
    q = [1]                         # gruppo da ricavare
    while q[0] < n-1:               # itera il processo finché non si
        q[p] += 1                   #   arriva al sottogruppo [n-1,1]
        r = q[:p+1]
        r.extend([1]*(n-sum(q)))    # completa il sottogruppo
        s.append(r)                 # salva il sottogruppo
        if sum(q)<n-1:              # passa all'elemento successivo
            p += 1
            q.append(1)
        else:                       # risale all'elemento precedente
            while (sum(q)>=n or q[p]==q[p-1]) and p>0:
                q = q[:p]
                p -= 1
    return s                        # restituisce l'insieme dei sottogruppi

# ricava le permutazioni di un gruppo

def permuta_gruppo(r):          
    q = []
    for p in pms(r,len(r)):         # usa la funzione di permutazione
        if p not in q: q.append(p)  # elimina gli elementi ripetuti
    return q

# separa i numeri dai segni

def separa_segni(f):            
    k = ''
    g = []                          # lista dei numeri
    h = [f[0]]                      # lista dei segni
    for i in range(1,len(f)):       
        if '0'<=f[i]<='9':          # accorpa le cifre dei numeri maggiori di 9
            k += f[i]               
        else:
            g.append(k)             # inserisce il numero nella lista
            k = ''
            h.append(f[i])          # inserisce il segno nella lista
    g.append(k)
    return g, h                     # restituisce le liste

# compone un'unica lista di sottogruppi con tutte le permutazioni

def permuta_sottogruppi(n):
    p = []
    for i in sottogruppi(n):
        for j in permuta_gruppo(i): p.append([str(x) for x in j])
    return p


f = '1-2+3-4+5-6'           # formula in ingresso
if f[0]!='-': f = '+'+f     # aggiunge '+' se non presente all'inizio


maxr = minr = eval(f)       # imposta il valore massimo e minimo al valore base
print (f, '=', maxr)

g, h = separa_segni(f)      # separa i numeri dai segni
n = len(g)

p = permuta_sottogruppi(n)  # lista dei sottogruppi di livello 1

# processa la lista dei sottogruppi fino ad ottenere tutte le combinazioni
# per qualsiasi livello di parentesi

x = True
q = p.copy()
while x:
    x = False
    p = q.copy()
    q = []
    for i in p:
        r = []
        for j in range(len(i)):
            if i[j]=='1' or i[j]=='(' or i[j]==')': r.append(i[j])
            if i[j]=='2': r.extend(['(', '1', '1', ')']); x = True
            if i[j]>'2':
                k = permuta_sottogruppi(int(i[j]))
                s = r.copy()
                for l in k:
                    r = s.copy()
                    r.append('(')
                    r.extend(l)
                    r.append(')')
                    r.extend(i[j+1:])
                    q.append(r)
                    x = True
                break
        else:
            q.append(r)   

# compone le stringhe con le formule e le valuta

for j in q:
    r = ''
    m = 0
    p = False
    for k in j:
        if k=='(':
            if not p: r = r + h[m]
            p = True
            r += k
        if k=='1':
            if not p: r = r + h[m]
            p = False
            r += g[m]
            m += 1
        if k==')': r += k 
    s = round(eval(r),9)                         # valuta la formula
    if s>maxr:
        print(r, '=', s, '>>>')         # stampa la formula solo se maggiore 
        maxr = s
    if s<minr:
        print(r, '=', s, '<<<')         # stampa la formula solo se minore 
        minr = s
questo è il risultato

Codice: Seleziona tutto

+1-2+3-4+5-6 = -3
+1-(2+3)-4+5-6 = -9 <<<
+1-2+3-(4+5)-6 = -13 <<<
+1-(2+3)-(4+5)-6 = -19 <<<
+1-(2+3-4)+5-6 = -1 >>>
+1-(2+3-4+5-6) = 1 >>>
+1-(2+3-(4+5)-6) = 11 >>>
un altro esempio con tutti gli operatori

Codice: Seleziona tutto

-15*33+21/8/9*11+77/3 = -466.125
-15*(33+21)/8/9*11+77/3 = -98.08333333333333 >>>
-15*33+21/8/(9*11)+77/3 = -469.3068181818182 <<<
-15*33+21/8/9*(11+77)/3 = -486.44444444444446 <<<
-15*(33+21)/(8/9)*11+77/3 = -9998.083333333334 <<<
-15*(33+21)/8/(9*11)+77/3 = 24.643939393939394 >>>
-15*33+21/(8/9)*(11+77)/3 = 198.0 >>>
-15*(33+21)/(8/9)*(11+77)/3 = -26730.0 <<<
-15*33+21/(8/9)*(11+77/3) = 371.25 >>>
-15*(33+21)/(8/9)*(11+77/3) = -33412.5 <<<
-15*33+21/(8/(9*11+77)/3) = 891.0 >>>
-15*33+21/(8/(9*(11+77))/3) = 5742.0 >>>
-15*(33+21)/(8/(9*11+77)/3) = -53460.0 <<<
-15*(33+21)/(8/(9*(11+77))/3) = -240570.0 <<<
[Sergio] / $17$

Quelo
Livello 7
Livello 7
Messaggi: 928
Iscritto il: ven giu 16, 2006 3:34 pm

Re: [A24-58] Inserisci parentesi

Messaggio da Quelo »

Mi sono avventurato a tradurre il programma in Decimal Basic, che so essere gradito agli utenti di Base5.
Ho incontrato qualche difficoltà e dovuto accettare qualche compromesso.

Il primo problema è stato quello degli array variabili, in questo caso ho scelto di usare dei file temporanei che posso leggere in modo sequenziale.
A questo punto dovevo gestire le permutazioni e, seppur disponibile una routine ricorsiva, la trovo poco gestibile.
Ho optato per una ricerca diretta, cioè facendo passare tutti i numeri e tenendo solo quelli contenenti cifre minori o uguali a n e la cui somma sia n.
Ad esempio con n=6, tra 10 e 100 abbiamo 15, 24, 33, 42, 51, tra 100 e 1000 abbiamo 114, 123, 132, 141, ecc...
Questo però rallenta la ricerca e limita n a 9.
L'ultima questione è stata quella più ostica, cioè la valutazione di una formula in formato stringa.
Sulle prime ho pensato di usare un eseguibile a cui passare la stringa come parametro e che restituisse il risultato, ma una chiamata esterna per ogni formula da valutare avrebbe reso l'esecuzione interminabile.
[per approfondimenti potete visitare questa pagina da cui ho preso ispirazione: https://cmdlinecalc.sourceforge.io/]
Non ho trovato nessuna soluzione già pronta così mi sono scritto il codice da solo, ma sicuramente è migliorabile.

Questo è il risultato. Alla seconda riga va indicata la cartella temporanea

Codice: Seleziona tutto

PUBLIC STRING path$
LET path$  =  "C:\Dati\"                  ! Percorso per il salvataggio di file temporanei

DECLARE EXTERNAL SUB perm, FileCopy, separa_segni
DECLARE EXTERNAL FUNCTION calcolo_semplice
PUBLIC NUMERIC z
PUBLIC STRING gp$(256) 
DIM g(32)                                 ! lista dei numeri
DIM h$(32)                                ! lista dei segni
LET n = 0                                 ! numero di elementi

LET path$  =  "C:\Dati\"                  ! Percorso per il salvataggio di file temporanei

LET f$ = "1-2+3-4+5-6"                    ! formula in ingresso

CALL separa_segni((f$),g,h$,n)

LET maxr = calcolo_semplice(f$)
LET minr = maxr
PRINT f$; "="; maxr
LET maxrl = 100*LEN(f$)
LET minrl = 100*LEN(f$)

CALL perm(n)
LET m = z                                 ! numero di permutazioni

LET p$ = path$ & "plist.tmp"
LET q$ = path$ & "qlist.tmp"

OPEN #1: NAME p$
ERASE #1
FOR i = 1 TO z
   PRINT #1: gp$(i)
NEXT I
CLOSE #1

CALL FileCopy(p$,q$)

LET x = 1
DO WHILE x = 1
   LET x = 0    
   LET m = 0
   CALL FileCopy(q$,p$)
   OPEN #1: NAME p$
   OPEN #2: NAME q$
   ERASE #2
   DO
      LINE INPUT #1, IF MISSING THEN EXIT DO: i$
      LET r$ = ""
      FOR j = 1 TO LEN(i$)
         LET j$ = mid$(i$,j,1)
         IF j$ = "1" OR j$ = "(" OR j$ = ")" THEN LET r$ = r$ & j$
         IF j$ = "2" THEN 
            LET r$ = r$ & "(11)"
            LET x = 1
         END IF
         IF j$>"2" THEN
            CALL perm(VAL(j$))
            LET s$ = r$
            FOR l = 1 TO z
               LET r$ = s$ & "(" & gp$(l) & ")" & right$(i$,LEN(i$)-j)
               PRINT #2: r$
               LET m = m + 1
            NEXT L
            LET x = 1
            EXIT FOR         
         END IF
      NEXT J
      IF j$<"3" THEN 
         PRINT #2: r$
         LET m = m + 1
      END IF
   LOOP
   CLOSE #1
   CLOSE #2
LOOP

PRINT "Permutazioni:"; m

OPEN #1: NAME q$
DO
   LINE INPUT #1, IF MISSING THEN EXIT DO: i$
   LET r$ = ""
   LET m = 1
   LET p = 0
   FOR k=1 TO LEN(i$)
      LET k$ = mid$(i$,k,1)
      IF k$="(" THEN
         IF p=0 THEN LET r$ = r$ & h$(m)
         LET p = 1
         LET r$ = r$ & k$
      END IF
      IF k$="1" THEN 
         IF p=0 THEN LET r$ = r$ & h$(m)
         LET p = 0
         LET r$ = r$ & STR$(g(m))
         LET m = m + 1
      END IF
      IF k$=")" THEN LET r$ = r$ & k$
   NEXT K
   LET s = calcolo(r$)                    ! valuta la formula
    
   IF (s=>maxr) OR ((s=maxr) AND (LEN(r$)<=maxrl)) THEN
      PRINT r$; "="; s; ">>>"             ! stampa la formula solo se maggiore 
      LET maxr = s
      LET maxrl = LEN(r$)
   END IF
   IF (s<=minr) OR ((s=rmin) AND (LEN(r$)<=minrl)) THEN
      PRINT r$; "="; s; "<<<"             ! stampa la formula solo se minore 
      LET minr = s
      LET minrl = LEN(r$)
   END IF
LOOP

FUNCTION calcolo(t$)
   DO 
      LET x = 0
      FOR i = 1 TO LEN(t$)
         LET i$ = mid$(t$,i,1)
         IF i$ = "(" THEN 
            LET pa = i
            LET x = 1
         END IF
         IF i$ = ")" THEN 
            LET u = calcolo_semplice(mid$(t$, pa+1, i-pa-1))
            LET t$ = left$(t$,pa-1) & STR$(u) & mid$(t$, i+1, LEN(t$))
            LET x = 1
            EXIT FOR
         END IF
      NEXT I
   LOOP UNTIL x = 0
   LET calcolo = calcolo_semplice(t$)
END FUNCTION


END
 
EXTERNAL FUNCTION calcolo_semplice(s$)
DIM g(LEN(s$))
DIM h$(LEN(s$))
LET m = 0
CALL separa_segni((s$),g,h$,m)
LET t$ = ""
FOR i = 1 TO m
   LET t$ = t$ & h$(i) & STR$(i) 
NEXT  I
DIM w$(5,2)
LET w$(1,1) = "^"
LET w$(2,1) = "/"
LET w$(3,1) = "*"
LET w$(4,1) = "-"
LET w$(5,1) = "+"
LET x = m
DO
   FOR w = 1 TO 5
      FOR v = 2 TO LEN(t$)-1
         LET v0 = 0
         LET v1 = 0
         LET v2 = 0
         LET v0$ = mid$(t$,v-1,1)
         LET v1$ = mid$(t$,v,1)
         LET v2$ = mid$(t$,v+1,1)
         IF v0$ > "0" AND v0$ <= "9" THEN LET v0 = VAL(v0$)
         IF v1$ > "0" AND v1$ <= "9" THEN LET v1 = VAL(v1$)
         IF v2$ > "0" AND v2$ <= "9" THEN LET v2 = VAL(v2$)
         IF v1$ = w$(w,1) AND v0 > 0 AND v2 > 0 THEN
            SELECT CASE w
            CASE 1
               LET g(v0)=g(v0)^g(v2)
            CASE 2
               LET g(v0)=g(v0)/g(v2) 
            CASE 3
               LET g(v0)=g(v0)*g(v2)   
            CASE 4
               IF mid$(t$,v-2,1) = "-" THEN
                  LET g(v0)=g(v0)+g(v2)
               ELSE 
                  LET g(v0)=g(v0)-g(v2)
               END IF
            CASE 5
               IF mid$(t$,v-2,1) = "-" THEN
                  LET g(v0)=g(v0)-g(v2)
               ELSE 
                  LET g(v0)=g(v0)+g(v2)
               END IF
            END SELECT   
            LET t$ = left$(t$,v-1) & right$(t$, LEN(t$)-v-1)
            LET x = x - 1
         END IF
      NEXT V
   NEXT  W
LOOP UNTIL x = 1
IF h$(1) = "-" THEN LET g(1)=g(1)*(-1)
LET calcolo_semplice = g(1) 
END FUNCTION 
 
EXTERNAL SUB separa_segni(t$,a(),b$(),m)
LET m = 1
LET p = 2
MAT a = CON
IF left$(t$,1) <> "-" THEN 
   IF left$(t$,1) <> "+" THEN LET t$ = "+" & t$
END IF
IF left$(t$,2) = "--" THEN LET t$ = "+" & right$(t$, LEN(t$)-2)
IF left$(t$,2) = "+-" OR left$(t$,2) = "-+" THEN LET t$ = "-" & right$(t$, LEN(t$)-2)
LET b$(1) = left$(t$,1)
LET j = 0
FOR i = 2 TO LEN(t$)       
   IF j = 0 THEN
      LET i$ = mid$(t$,i,1)
      IF (i$ < "0" OR i$ > "9") AND i$ <> "." AND i$ <> "E" THEN    
         IF mid$(t$,i+1,1) = "-" THEN 
            LET a(m+1) = -1
            LET j = 1
         END IF 
         IF mid$(t$,i-1,1) <> "E" THEN
            LET a(m) = a(m) * VAL(mid$(t$,p,i-p))   ! inserisce il numero nella lista
            LET p = i + 1 + j
            LET m = m + 1
            LET b$(m) = i$                          ! inserisce il segno nella lista
         END IF
      END IF
   ELSE
      LET j = 0
   END IF
NEXT I
LET a(m) = a(m)*VAL(mid$(t$,p,i-p))
END SUB
 
EXTERNAL SUB perm(n)
LET z = 0 
MAT gp$ = NUL$
IF n>3 THEN
   FOR k = n-1 TO 3 STEP -1
      FOR i = VAL(REPEAT$("1",n-k) & STR$(k)) TO VAL(STR$(k) & REPEAT$("1",n-k))
         LET i$ = STR$(i)
         LET k0 = 1
         LET k1 = 0
         FOR j = 1 TO LEN(i$)
            LET ij = VAL(mid$(i$,j,1))
            LET k1 = k1+ij
            IF ij<1 OR ij>n THEN LET k0 = 0
         NEXT J
         IF k0 = 1 AND k1 = n THEN 
            LET z = z+1
            LET gp$(z) = STR$(i)
         END IF
      NEXT I
   NEXT K
END IF
FOR i = 1 TO n-1
   LET i$ = REPEAT$("1",n-i-1) & "2" & REPEAT$("1",i-1)
   LET z = z+1
   LET gp$(z) = i$
NEXT I
LET z = z+1
LET gp$(z) = REPEAT$("1",n)
END SUB
 
EXTERNAL SUB FileCopy(a$,b$)
OPEN #1: NAME a$
OPEN #2: NAME b$
ERASE #2
DO
   LINE INPUT # 1, IF MISSING THEN EXIT DO: c$
   PRINT #2: c$
LOOP
CLOSE #1
CLOSE #2
END SUB
Problema iniziale

Codice: Seleziona tutto

1-2+3-4+5-6=-3 
Permutazioni: 197 
+1-(2+(3-(4+(5-6))))=-1 >>>
+1-(2+(3-((4+5)-6)))=-1 >>>
+1-(2+(3-(4+5-6)))=-1 >>>
+1-(2+((3-4)+(5-6)))= 1 >>>
+1-(2+((3-(4+5))-6))= 11 >>>
+1-(2+(3-(4+5)-6))= 11 >>>
+1-((2+(3-(4+5)))-6)= 11 >>>
+1-(((2+3)-(4+5))-6)= 11 >>>
+1-((2+3-(4+5))-6)= 11 >>>
+1-(2+(3-(4+5))-6)= 11 >>>
+1-((2+3)-(4+5)-6)= 11 >>>
+1-(2+3-(4+5)-6)= 11 >>>
+(1-2)+((3-4)+(5-6))=-3 <<<
+(1-2)+((3-(4+5))-6)=-13 <<<
+(1-2)+(3-(4+5)-6)=-13 <<<
+((1-2)+(3-(4+5)))-6=-13 <<<
+((1-(2+3))-(4+5))-6=-19 <<<
+(1-(2+3)-(4+5))-6=-19 <<<
+(1-(2+3))-(4+5)-6=-19 <<<
+1-(2+3)-(4+5)-6=-19 <<<
Altro esempio

Codice: Seleziona tutto

-8*2^3+2/6-4*5/2=-73.6666666666667 
Permutazioni: 4279 
-8*(2^(3+(2/(6-(4*(5/2))))))=-45.254833995939 >>>
-8*(2^(3+(2/(6-((4*5)/2)))))=-45.254833995939 >>>
-8*(2^(3+(2/(6-(4*5/2)))))=-45.254833995939 >>>
-8*(2^(3+(2/((6-4)*(5/2)))))=-84.4485062894656 <<<
-8*(2^(3+(2/(((6-4)*5)/2))))=-84.4485062894656 <<<
-8*(2^(3+(2/(6-4*(5/2)))))=-45.254833995939 >>>
-8*(2^(3+(2/(6-(4*5)/2))))=-45.254833995939 >>>
-8*(2^(3+(2/((6-4)*5/2))))=-84.4485062894656 <<<
-8*(2^(3+(2/(6-4*5/2))))=-45.254833995939 >>>
-8*(2^(3+((2/6)-(4*(5/2)))))=-7.87450656184294E-2 >>>
-8*(2^(3+((2/6)-((4*5)/2))))=-7.87450656184294E-2 >>>
-8*(2^(3+((2/6)-(4*5/2))))=-7.87450656184294E-2 >>>
-8*(2^(3+((2/(6-4))*(5/2))))=-362.038671967512 <<<
-8*(2^(3+(((2/6)-(4*5))/2)))=-.070153878019335 >>>
-8*(2^(3+(((2/(6-4))*5)/2)))=-362.038671967512 <<<
-8*(2^(3+((2/6-(4*5))/2)))=-.070153878019335 >>>
-8*(2^(3+((2/(6-4)*5)/2)))=-362.038671967512 <<<
-8*(2^(3+(((2/6)-4*5)/2)))=-.070153878019335 >>>
-8*(2^(3+((2/6-4*5)/2)))=-.070153878019335 >>>
-8*(2^(3+(2/(6-4)*(5/2))))=-362.038671967512 <<<
-8*(2^(3+((2/(6-4))*5/2)))=-362.038671967512 <<<
-8*(2^(3+(2/(6-4)*5/2)))=-362.038671967512 <<<
-8*(2^(((3+2)/6)-(4*(5/2))))=-1.39202924709428E-2 >>>
-8*(2^(((3+2)/6)-((4*5)/2)))=-1.39202924709428E-2 >>>
-8*(2^(((3+2)/6)-(4*5/2)))=-1.39202924709428E-2 >>>
-8*(2^((3+(2/(6-4)))*(5/2)))=-8192 <<<
-8*(2^((3+2/(6-4))*(5/2)))=-8192 <<<
-8*(2^((((3+2)/6)-(4*5))/2))=-1.04284363607033E-2 >>>
-8*(2^(((3+(2/(6-4)))*5)/2))=-8192 <<<
-8*(2^(((3+2/(6-4))*5)/2))=-8192 <<<
-8*(2^(((3+2)/6-(4*5))/2))=-1.04284363607033E-2 >>>
-8*(2^((((3+2)/6)-4*5)/2))=-1.04284363607033E-2 >>>
-8*(2^(((3+2)/6-4*5)/2))=-1.04284363607033E-2 >>>
-8*(2^((3+(2/(6-4)))*5/2))=-8192 <<<
-8*(2^((3+2/(6-4))*5/2))=-8192 <<<
-8*((2^3)+((2/6)-(4*(5/2))))= 13.3333333333334 >>>
-8*((2^3)+((2/6)-((4*5)/2)))= 13.3333333333334 >>>
-8*((2^3)+((2/6)-(4*5/2)))= 13.3333333333334 >>>
-8*((2^3)+(((2/6)-(4*5))/2))= 14.6666666666668 >>>
-8*((2^3)+((2/6-(4*5))/2))= 14.6666666666668 >>>
-8*((2^3)+(((2/6)-4*5)/2))= 14.6666666666668 >>>
-8*((2^3)+((2/6-4*5)/2))= 14.6666666666668 >>>
-8*((2^(3+2))/(6-(4*(5/2))))= 64 >>>
-8*((2^(3+2))/(6-((4*5)/2)))= 64 >>>
-8*((2^(3+2))/(6-(4*5/2)))= 64 >>>
-8*((2^(3+2))/(6-4*(5/2)))= 64 >>>
-8*((2^(3+2))/(6-(4*5)/2))= 64 >>>
-8*((2^(3+2))/(6-4*5/2))= 64 >>>
-8*((2^((3+2)/6))-(4*(5/2)))= 65.7456205097546 >>>
-8*((2^((3+2)/6))-((4*5)/2))= 65.7456205097546 >>>
-8*((2^((3+2)/6))-(4*5/2))= 65.7456205097546 >>>
-8*((((2^3)+2)/6)-(4*(5/2)))= 66.6666666666666 >>>
-8*((((2^3)+2)/6)-((4*5)/2))= 66.6666666666666 >>>
-8*((((2^3)+2)/6)-(4*5/2))= 66.6666666666666 >>>
-8*(((2^3+2)/6)-(4*(5/2)))= 66.6666666666666 >>>
-8*(((2^3+2)/6)-((4*5)/2))= 66.6666666666666 >>>
-8*(((2^3+2)/6)-(4*5/2))= 66.6666666666666 >>>
-8*((2^((3+(2/(6-4)))*5))/2)=-4194304 <<<
-8*((2^((3+2/(6-4))*5))/2)=-4194304 <<<
-8*(((2^((3+2)/6))-(4*5))/2)= 72.8728102548772 >>>
-8*(((((2^3)+2)/6)-(4*5))/2)= 73.3333333333332 >>>
-8*((((2^3+2)/6)-(4*5))/2)= 73.3333333333332 >>>
-8*((((2^3)+2)/6-(4*5))/2)= 73.3333333333332 >>>
-8*(((2^3+2)/6-(4*5))/2)= 73.3333333333332 >>>
-8*(((((2^3)+2)/6)-4*5)/2)= 73.3333333333332 >>>
-8*((((2^3+2)/6)-4*5)/2)= 73.3333333333332 >>>
-8*((((2^3)+2)/6-4*5)/2)= 73.3333333333332 >>>
-8*(((2^3+2)/6-4*5)/2)= 73.3333333333332 >>>
-8*(2^((3+(2/(6-4)))*5)/2)=-4194304 <<<
-8*(2^((3+2/(6-4))*5)/2)=-4194304 <<<
-(8*2)^(3+((2/(6-4))*(5/2)))=-4194304 <<<
-(8*2)^(3+(((2/(6-4))*5)/2))=-4194304 <<<
-(8*2)^(3+((2/(6-4)*5)/2))=-4194304 <<<
-(8*2)^(3+(2/(6-4)*(5/2)))=-4194304 <<<
-(8*2)^(3+((2/(6-4))*5/2))=-4194304 <<<
-(8*2)^(3+(2/(6-4)*5/2))=-4194304 <<<
-(8*2)^((3+(2/(6-4)))*(5/2))=-1099511627776 <<<
-(8*2)^((3+2/(6-4))*(5/2))=-1099511627776 <<<
-(8*2)^(((3+(2/(6-4)))*5)/2)=-1099511627776 <<<
-(8*2)^(((3+2/(6-4))*5)/2)=-1099511627776 <<<
-(8*2)^((3+(2/(6-4)))*5/2)=-1099511627776 <<<
-(8*2)^((3+2/(6-4))*5/2)=-1099511627776 <<<
-((8*2)^(3+2))/(6-(4*(5/2)))= 262144 >>>
-((8*2)^(3+2))/(6-((4*5)/2))= 262144 >>>
-((8*2)^(3+2))/(6-(4*5/2))= 262144 >>>
-((8*2)^(3+2))/(6-4*(5/2))= 262144 >>>
-((8*2)^(3+2))/(6-(4*5)/2)= 262144 >>>
-((8*2)^(3+2))/(6-4*5/2)= 262144 >>>
-((8*2)^((3+(2/(6-4)))*5))/2=-6.04462909807315E+23 <<<
-((8*2)^((3+2/(6-4))*5))/2=-6.04462909807315E+23 <<<
-(8*2)^(3+2)/(6-(4*(5/2)))= 262144 >>>
-(8*2)^(3+2)/(6-((4*5)/2))= 262144 >>>
-(8*2)^(3+2)/(6-(4*5/2))= 262144 >>>
-(8*2)^(3+2)/(6-4*(5/2))= 262144 >>>
-(8*2)^(3+2)/(6-(4*5)/2)= 262144 >>>
-(8*2)^(3+2)/(6-4*5/2)= 262144 >>>
-(8*2)^((3+(2/(6-4)))*5)/2=-6.04462909807315E+23 <<<
-(8*2)^((3+2/(6-4))*5)/2=-6.04462909807315E+23 <<<
[Sergio] / $17$

Rispondi