Меня спросили в интервью: как преобразовать от 0 до 1 и от 1 до 0. Я ответил:
if
и switch
Есть ли какой-либо другой подход?
Несколько очевидных возможностей:
!n
1-n
n^1
n==0
n!=1
n<1
Простая арифметика:
x = 1 - x;
На самом деле существует бесконечное количество многочленов, которые будут отображать 1 в 0 и наоборот. Например:
x = x * x * x * x * x - x * x * x * x + x * x - 2 * x + 1;
Возьмите скрепку. Выправьте это. Это 1. Согните его до кончиков. Это 0. Чтобы получить 1, выпрямите его.
Я думаю, вы могли бы использовать ABS (VAR - 1), но я думаю, что ваши подходы более элегантны
Это должно работать для любых двух чисел ...
(РЕДАКТИРОВАТЬ: глядя на другие ответы, я, возможно, неправильно прочитал вопрос ... но мне все еще нравится мой ответ: -)
public class X
{
public static void main(final String[] argv)
{
int x = Integer.parseInt(argv[0]);
int y = Integer.parseInt(argv[1]);
x += y;
y = x - y;
x = x - y;
System.out.println(x);
System.out.println(y);
}
}
Some Trig : COS (PI * N) ^ 2
В python
import math
math.cos(math.pi * n) ** 2
я не могу поверить, что люди забыли модуль:
(3 + n) % 2
Lookup table:
int[] swap = { 1, 0 };
And later:
x = swap[x];
они, вероятно, ожидали, что вы будете использовать побитовое НЕ