if(n >= 0) x = x + n; else x = x - Math.abs(n);
x += n;
, c'était trop compliqué. PEBKAC.
int i; int j; int k ; i = 2; j = 2; k = somme(i,j); int somme(int i, int j){ int k; while(1){ k = rand(); if(k==i+j) return k; } }
int add(int a, int b) { if (b > 0) return add(a+1, b-1); else if (b < 0) return add(a-1, b+1); else if (b == 0) return a+0; else throw GenericException; //impossible throw GenericException; //impossible return 0; //juste au cas où }
$i = 5; $j = -10; $k = somme($i,$j, 0); echo $k; function somme($i, $j, $k){ if($i > 0) return somme(--$i,$j,++$k); else if($i < 0) return somme(++$i,$j,--$k); else if($j > 0) return somme($i,--$j,++$k); else if($j < 0) return somme($i,++$j,--$k); else return $k; }
public static int abs(int a) { return max(a, -a); }
public static int max(int a, int b) { if (a < 0) { if (b < 0) { return -(abs(a + b) - abs(a - b)) / 2; } else { return b; } } else { if (b < 0) { return a; } else { return (abs(a + b) + abs(a - b)) / 2; } } }
let somme p q = let rec aux n m ret = let s = if ret = 0 then if (n land 1) = (m land 1) then 0 else 1 else if (n land 1) = (m land 1) then 1 else 0 in let r = if ret = 0 then if (n land 1 = 1) && (m land 1 = 1) then 1 else 0 else if (n land 1 = 1) || (m land 1 = 1) then 1 else 0 in if n = 0 && m = 0 && ret = 0 then 0 else ((aux (n lsr 1) (m lsr 1) r) lsl 1) lor s in aux p q 0
int sum (int, int); int i; int j; int k; i = 2; j = 2; k = sum(i, j); int sum(int i, int j){ int k; while((k = rand()) != sum(i, j)) ; return k; }