bash.im ithappens.me zadolba.li
9065

Проще говоря, плюс один

26 апреля 2012, 10:00

Знаменитая задача: как переставить два числа, не используя третье? Канонически решается так:

A = A + B
B = A − B
A = A − B

Однако ещё быстрее можно так:

A = A xor B
B = A xor B
A = A xor B

Или так:

push А
push B
pop А
pop B

Но я бы писал, использую третью переменную:

tmp = А
A = В
B = tmp

Да-да, пару тактов разбазарю. И, например, вместо INC А напишу А = А + 1. И не потому, что не знаю такие финты, а потому, что любой осёл поймёт, что тут написано. Глаз не зацепится, мозг будет сосредоточен на задаче, а не на способе её достичь.

«Ваша программа должна быть изменяема, иначе вы родили её мертвой», — сказал кто-то известный. Остаётся добавить: «Причём легко».