|
Тема
|
Една закачка
|
|
Автор |
zdrsoft (непознат
) |
Публикувано | 21.06.07 16:45 |
|
Здравейте
една закачка от мен :)
Например имате две целочислени променливи:
$a = 35;
$b = 48;
Напишете размяна на двте стойности в променливите, без да ползвате допълнителна променлива.
Успех
Редактирано от zdrsoft на 21.06.07 16:46.
| |
|
list($x,$y) = array($y,$x);
god is real...
if not defined as integer
| |
Тема
|
Добре , но има още решения :)
[re: zdrsoft]
|
|
Автор |
zdrsoft (непознат
) |
Публикувано | 21.06.07 18:22 |
|
Добре , но има още решения :)
| |
Тема
|
Re: Добре , но има още решения :)
[re: zdrsoft]
|
|
Автор |
buendia (el doce) |
Публикувано | 21.06.07 18:34 |
|
браво!
god is real...
if not defined as integer
| |
|
Класика! Спомням си, че навремето я имаше като задача още когато се появиха калкулатори с две клетки за памет. Имаше и версия с три променливи (като се появиха калкулаторите с три клетки на паметта )
$b = $a + $b;
$a = $b - $a;
$b = $b - $a;
Вместо събиране може да се използват умножение, деление и др.
| |
|
Дааа това е решението, което имах впредвид :)
Редактирано от zdrsoft на 22.06.07 02:25.
| |
|
А с $a, $b и $c ($a->$b, $b->$c, $c->$a) как ще стане?
| |
Тема
|
Re: Една закачка
[re: croesus]
|
|
Автор |
Gnus (гнусен) |
Публикувано | 29.06.07 12:25 |
|
Или най-добре побитов XOR за да няма опасност от препълване на разрядната решетка:
$b = $a ^ $b;
$a = $b ^ $a;
$b = $b ^ $a;
| |
Тема
|
Re: Една закачка
[re: croesus]
|
|
Автор |
Gnus (гнусен) |
Публикувано | 29.06.07 12:34 |
|
$a = $a + $b + $c;
$b = $a - ($b + $c);
$c = $a - ($b + $c);
$a = $a - ($b + $c);
побитово:
$a = $a ^ $b ^ $c;
$b = $a ^ ($b ^ $c);
$c = $a ^ ($b ^ $c);
$a = $a ^($b ^ $c);
Редактирано от Gnus на 29.06.07 12:43.
| |
Тема
|
Re: Една закачка
[re: Gnus]
|
|
Автор |
croesus (?!?) |
Публикувано | 04.07.07 16:49 |
|
Дам, с битови операции е много по-добре. Браво!
| |
|
|
|
|