Podana lista liczb całkowitych {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}
. Dla tych, którzy są zainteresowani, te liczby są wykorzystywane w obliczeniach dnia tygodnia.
Dzień tygodnia = (m[n] + d + y + y>>2 + y/400 - y/100) % 7;
, gdzie m[n]
- szukam wyrażenia, d
- dzień miesiąca, y
- year - (month <= 2)
.
Skonstruuj wyrażenie składające się z operatorów arytmetycznych, logicznych i bitowych, które będą generować dodatnią liczbę n
całkowitą dodatnią, m
tak aby była m % 7
równa n-tej liczbie na liście.
Oddziały, operatory trójskładnikowe, wyszukiwanie tabel i wskaźniki są niedozwolone.
Ocena:
1 - dla | & ^ ~ >> <<
operatorów
1,1 - dla + - < > <= >= == != ! && ||
operatorów
1,2 - dla *
operatora
1,4 - dla / %
operatorów
Odpowiedź z najniższym wynikiem wygrywa.
Osobiście znalazłem:
(41*n)>>4+((n+61)>>4)<<2
z wynikiem 6,4. Myślałem, że będzie to trudne do znalezienia, więc pod warunkiem własnego wyrażenia na początek.
table lookups
Ciekawy frazowanie przypuszczam ...