Quizzino della domenica: Scambio in economia

Supponete che la vostra calcolatrice abbia due locazioni di memoria: M1 e M2, e che ciascuna di esse contenga un numero, rispettivamente a e b. Il vostro compito è trovare un modo per scambiare tra loro i due valori. Se ci fosse una terza locazione di memoria non ci vorrebbe nulla: si copia la prima variabile nella terza locazione, poi si copia la seconda variabile nella prima locazione e infine si copia nella seconda locazione il valore salvato. Ma come si fa senza questo aiutino? Supponete che i numeri siano al massimo di quattro cifre.
[M1 ⇔ M2]

(un aiutino lo trovate sul mio sito, alla pagina http://xmau.com/quizzini/p373.html; la risposta verrà postata lì il prossimo mercoledì. Problema classico.)

15 comments

  1. Si legge M1; lo si manda a memoria; si sostituisce M1 con M2; si scrive in M2 M1 mandato a memoria

    • Beato Lei che ha tutta questa memoria naturale! Io non ce la farei più?

      • c’è una soluzione che usa solo meni e più, ma io sono dell’idea che anche un informatico a un certo punto debba riconoscere la superiorità di carta e penna

    • non funziona se la locazione di memoria è lunga quattro cifre

    • Infatti questo è un quizzino informatico più che matematico. Quando ero giovane io, i numeri interi venivano spesso memorizzati in due byte, quindi si potevano salvare numeri da -32768 a 32767.

      • Ah, curioso! Non ricordo nessuna calcolatrice che avesse la memoria più corta del display! Per questo quando ho visto il limite di 4 cifre ho capito la soluzione, dato che i display con meno di 8 cifre sono improbabili.

        • non voglio sostituirmi allo illustre tenutario, ma c’è una soluzione che funziona con display lunghi quanto i numeri in campo

  2. Nel dominio dei numeri interi positivi farei così (suppongo M1>=M2)
    1. M1=M1-M2
    2. M2=M2+M1
    3. M1=M2-M1

    • Ah, ho letto solo dopo che i numeri sono al massimo di 4 cifre. Direi che allora la mia risposta valga anche in presenza di numeri negativi.

  3. a me la tua soluzione sembra sbagliata…al secondo step, in M2 non c’è A ma -A….per me dovrebbe essere così:
    M1 = M1 + M2
    M2 = M1 – M2
    M1 = M1 – M2

    No?

  4. L’ultima riga della risposta però dovrebbe essere “M1 = M1 − M2”.

      • La cosa buffa è che il contenuto delle variabili era quello giusto (anche perché era quello che avevo usato per poi trovare cosa scrivere). Passi la terza riga che era ovviamente un errore di sbaglio, ma la seconda proprio no…