joi, 18 martie 2010

Două celule

ElZap

Cineva a scris două numere în celulele A şi B.
(De exemplu în A fost scris numărul 19 şi în B numărul 53)

Eu habar n-am ce numere au fost scrise în cele două celule, dar ştiu că pot face operaţii de adunare şi scădere între ele. De exemplu, aş putea scrie

A=A+B

sau alte operaţii de acest fel.

Ce ar trebui să scriu eu, pentru ca folosind doar trei socoteli de astea simple, să fiu sigur că în final în celula A am valoarea care se găsea în celula B, iar în B se găseşte valoarea care se găsea în celula A.

(În exemplul nostru, în final, în A ar trebui să am 53 şi în B ar trebui să am 19)

Mi se spune că nu am voie să „comut” dintr-un foc conţinutul celor două celule, pentru că nu am o astfel de operaţie. De asemenea am fost avertizat că nu am o celulă de rezervă, ca să mut temporar un număr în ea.


Update

Răspunsul corect, care a fost dat la problema de mai sus de către Doar F, l-a determinat pe un cusurgiu să ridice o obiecţie mai ciudată.

Cică, după cum crede el, nici o celulă din cele două nu poate fi atotcuprinzătoare, adică nu putem scrie în ea numere oricât de mari.

Ce-i drept, cusurgiul cam are dreptate, că după cum ştim nici calculatoarele nu pot memora numere oricât de mari, chiar dacă se străduiesc din răsputeri cei ce le proiectează. Ba, chiar de am reprezenta numerele prin cine ştie ce artificiu, pe un HDD de 1TB, tot nu putem băga într-o celulă absolut orice număr.

Ca să mă convingă că are dreptate, el mi-a dat ca exemplu situaţia în care o celulă ar putea conţine doar numere între -1000 şi +1000.

Cică, dacă în A aş avea numărul 700, iar în B numărul 500, în momentul în care fac adunarea A=A+B, calculatorul (sau orice altă maşinărie deşteaptă), şi-ar putea pierde minţile, iar în A aş putea avea orice alt număr, numai 1200 nu.

Tot cusurgiul acela mi-a zis, că ştie el nişte operaţii cunoscute în lumea calculatoarelor care seamănă cu adunările şi scăderile noastre, prin care ar putea să mute cele două numere, taman în acelaşi mod, dar fără să i se întâmple nimic.


El se lăuda că poate să se folosească doar de o singură operaţie. Cică n-ar fi vorba de adunare sau scădere.

Ce operaţie o fi? Ce trebuie să scriu eu?

Asta este întrebarea.





16 comentarii:

  1. Credeam ca dupa atata asteptare, o sa primim niste probleme mai acatarii. Sau este doar incalzirea?

    RăspundețiȘtergere
  2. Mie îmi ajunge că ai revenit!
    Nici n-am citit până la capăt problema. :))

    RăspundețiȘtergere
  3. @Doar F

    Sacul conţine probleme de dificultăţi diferite.
    Astăzi s-a brodit una banală.

    RăspundețiȘtergere
  4. @renata

    Putea să lipsească martie din post?

    RăspundețiȘtergere
  5. @ALL

    În funcţie de rezolvările ce se vor da voi reveni cu un update ceva mai dificil.

    Să o luăm uşurel.

    RăspundețiȘtergere
  6. Daca notam numarul din celula A cu x si cel din B cu y, avem:

    A = x
    B = y
    Cele 3 operatii sunt:

    1.A = A+B = x+y
    2.B = A-B = x+y-y = x
    3.A = A-B = x+y-x = y

    RăspundețiȘtergere
  7. Acest comentariu a fost eliminat de autor.

    RăspundețiȘtergere
  8. @Doar F

    Evident, răspuns perfect.
    Nimic de adăugat, cu excepţia felicitărilor.

    Plus invitaţia de a da o mână de ajutor la un posibil update.

    RăspundețiȘtergere
  9. Hai-Hui cel slab la mate:))20 martie 2010 la 14:45

    doar o intrebare va rog.
    de la ce principiu or lege matematica se pleaca atunci cans se scrie ca A=A+B in conditiile in care A=19 si B=53 pentru ca nu vad cum poate fi 19 egal vreodata cu 19+53???


    daca problema implica solutii si "logici" pe care lumea obijnuita nu le-a aprofundat in vreo scoala obijnuita, acordati dreptul de logare pe site doar celor cu o "cultura" matematica speciala, cei de teapa mea neputand sa se bucure rezolvand astfel de probleme...

    RăspundețiȘtergere
  10. @Hai-Hui

    Ai şi tu dreptate.
    Primul 19 este la momentul t1 iar al doilea la momentul t2.

    Ca şi oamenii, A are o natură evolutivă.

    Pe blogul meu se poate intra liber. Total liber. Deocamdată nu vaăd motive pentru a impune restricţii.

    Te invit să dai o mână de ajutor la rezolvarea pentru UPDATE. Asta pentru că Doar F, a dat o soluţie totală. Afară de mici variaţiuni nu cred că se mai poate adăuga ceva la soluţia lui/ei.

    Cu problemele e altă treabă. Nimeni nu poate susţine că o soluţie este corectă decât dacă este. Votul nu are valoare aici.

    RăspundețiȘtergere
  11. @Cusurgiu
    Se rezolva cu usurinta problema numerelor mari: nu le adunam, ci le scadem. Daca inlocuim + cu - si viceversa in operatiile de mai sus, obtinem interschimbarea celor doua celule. Iar rezultatele intermediare sunt mai mici decat cel mai mare numar si mai mari decat negativul celui mai mare numar.

    Cat despre misterioasa operatie...nu prea imi vine a crede ca exista, chiar si in lumea calculatoarelor, o operatie atat de desteapta incat dupa o singura aplicare sa avem celulele inversate

    RăspundețiȘtergere
  12. @Doar F

    Cred că nu merge să le scădem, după cum mi-a comunicat domnul Cusurgiu.

    Cică, dacă aş avea +700 şi -500 în B, am ajunge de unde am plecat, adică conţinutul celulelor dă pe dinafară.

    În plus, el mi-a jurat că o astfel de operaţie ar exista, şi în plus ar trebui aplicată cam tot de trei ori.

    Cum el a fost stârnit de conţinutul problemei iniţiale, mi-a amintit că cele două celule ar putea conţine şi altceva decât numere banale.

    Când l-am întrebat la ce anume se găndeşte, el mi-a amintit de literele alfabetului Roman sau Grecesc sau ... pe care el le-ar putea codifica ASCII sau UNICODE.

    Mi-a mai zis că tot aici aş putea să bag şi niscaiva sunte, poze şi... mai se gândeşte le la ceva.

    Trebuie să recunosc că m-a cam dat peste cap cusurgiul ăsta.

    RăspundețiȘtergere
  13. Nu, nu merge. Sper ca domnul Cusurgiu nu se supara ca i-am testat vigilenta.

    Intradevar, exista o operatie minune: XOR. Doar ca are o arie limitata de utilizare si nu prea se impaca cu sunetele si pozele. Dar daca ne gandim ca lumea calculatoarelor se reduce la 0 si 1...

    Dar ceva imi spune ca domnul Cusurgiu altceva dorea sa afle, nu cum sa schimbe cele 2 celule

    RăspundețiȘtergere
  14. @Doar F

    Din cercetările mele deduc că la XOR s-ar fi găndit şi cusurgiul ăla.

    Dacă ne onorezi cu o explicaţie din care să putem pricepe şi noi cumva cum ar trebui să facem şi de ce este aşa, ar trebui să te felicităm pentru a doua oară.

    Cică XOR-ul ăla l-ar fi pus în genunchi chiar pe marele Donald Knuth. El s-ar fi băgat doar la + şi -.

    Cât depre sunete şi poze, s-ar putea să ai dreptate sub aspect tehnic. Teoretic însă ar putea să aibă dreptate cusurgiul.

    RăspundețiȘtergere
  15. XOR este o operatie logica asupra doi operanzi din care rezulta o valoare logica de adevarat daca si numai daca unul dintre operanzi, dar nu amandoi, are valoarea adevarat. El se mai numeste "sau exclusiv" sau "disjunctia exclusiva".
    In limba romana, "sau" are sens de "sau exclusiv". De exemplu, intentia normala a frazei "Poti urma regulile sau poti fi descalificat" este sa arate faptul ca numai una din conditii este adevarata. Spre deosebire, in logica, intelesul cuvantului "sau" este disjunctia inclusiva, care semnifica faptul ca cel putin una din alternative este adevarata. Alte limbi, precum latina, pot avea cuvinte diferite pentru tipuri diferite de "sau".

    Cum valorile 1 si 0 se identifica cu notiunile de adevarat(1) si fals(0), in lumea calculatoarelor este permisa utilizarea mai multor operatii logice. Astfel, putem defini tabela valorilor(un fel de tabla adunarii) pentru XOR

    0 XOR 0 = 0
    0 XOR 1 = 1
    1 XOR 0 = 1
    1 XOR 1 = 0

    Acestea fiind zise, putem interschimba cele doua celule utilizand de trei ori operatia XOR.
    A = A XOR B
    B = A XOR B
    A = A XOR B

    Din punct de vedere teoretic, XOR-ul nu poate face mai mult. Este limitat la 0 si 1(adevarat si fals, daca doriti). De aici si pana la numere, sunete sau imagini, este doar creatie tehnica.
    Aviz celor care avand la indemana nenumarate cuvinte bogate in sensuri, gasesc de cuvinta sa ponegreasca pe cei ce creaza atat de mult avand la dispozitie doar 0 si 1.

    RăspundețiȘtergere
  16. @Doar F

    Mai mult ca perfect.

    Ex ungue leonem!

    RăspundețiȘtergere