• We are trusted partners of:
DevelopmentFun

O noua provocare pentru programatori

By July 15, 2013 5 Comments

Cum provocarea de săptămâna trecută a avut mare succes, venim cu o nouă provocare pentru voi:

Se dau două numere întregi a și b.

Cerința:

Să se scrie secvența de cod care interschimbă cele 2 valori, fără a folosi variabile auxiliare.

INNOBYTE

Author INNOBYTE

More posts by INNOBYTE

Join the discussion 5 Comments

  • Alexandra says:

    a = a + b;
    b = a – b // fost a
    a = a – b // fost b

  • Emil [carco] Sirbu says:

    Da’ voi mai si munciti? 🙂

    Cum a zis Alexandra, cu variatiuni, se poate face si cu inmultire / impartire sau cu xor/^.

    Mai exista varianta directa in anumite limbaje (am uitat care au implementata atribuirea “paralela”), adica (a,b) = (b,a), in pehaspe, ceva similar (cu acelasi rezultat) ar fi: list($a,$b) = array($b,$a)

  • andreea.paraschiv says:

    Mai si muncim, mai si muncim 🙂

    Nicely done, Alexandra & Emil!

    Solutii..mai sunt multe!

  • NoName says:

    $a ^= $b ^= $a ^= $b;

  • andreea.paraschiv says:

    Good one, NoName!

    Si solutiile colegilor mei:
    1.
    $a = $a + $b
    $b = $a – $b
    $a = $a – $b

    2.
    $a = $a * $b;
    $b = $a / $b;
    $a = $a / $b;

    3.
    $a = $a ^ $b;
    $b = $a ^ $b;
    $a = $a ^ $b;

    4.
    list($a, $b) = array($b, $a);
    SAU
    list($a,$b) = array_reverse(array($a,$b));

    5.
    extract(array(‘a’=>$b, ‘b’=>$a));

    6.
    file_put_contents(‘a.txt’,$a);
    file_put_contents(‘b.txt’,$b);

    $a = file_get_contents(‘b.txt’);
    $b = file_get_contents(‘a.txt’);

    7.
    $a = $a <> strlen(decbin($b));
    $a = $b << (strlen(decbin($a)) – strlen(decbin($b))) ^ $a;

Leave a Reply