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

15:00 26.04.2012, IT happens


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


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. И не потому, что не знаю такие финты, а потому, что любой осёл поймёт, что тут написано. Глаз не зацепится, мозг будет сосредоточен на задаче, а не на способе её достичь.


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



Загрузка...