Дан список целых чисел {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}
. Для тех, кто заинтересован, эти цифры используются при расчете дня недели.
Weekday = (m[n] + d + y + y>>2 + y/400 - y/100) % 7;
, где m[n]
- выражение, которое я ищу, d
- день месяца, y
- year - (month <= 2)
.
Создайте выражение, состоящее из арифметических, логических и побитовых операторов, которые будут выводить целое положительное целое n
число m
, m % 7
равное n-му числу в списке.
Ветви, троичные операторы, таблицы и указатели не допускаются.
Оценка:
1 - для | & ^ ~ >> <<
операторов
1.1 - для + - < > <= >= == != ! && ||
операторов
1.2 - для *
оператора
1.4 - для / %
операторов
Ответ с наименьшим количеством побед.
Лично я нашел:
(41*n)>>4+((n+61)>>4)<<2
с оценкой 6.4. Я думал, что это будет трудно найти, так что при условии собственного выражения для начала.
источник
table lookups
Интересно фразировка я полагаю ...Ответы:
2
2,2Я люблю произвольную точность арифметики.
Или, если вам не нравится гекс,
Тест:
источник
4*n
вместо этого составить справочную таблицу и сохранить 0,2 балла, записав ее какn<<2
?7
. Мой лучший кандидат на целочисленное делениеconst/n
на полы противоречитn=4
иn=8
.const%n
который может удовлетворить все, кроме n = 1,2 и 3.2,0
или (оценка 2,2):
Все найдено с грубой силой :-)
источник
for
цикл, протестировав все значения p, q для формулы(p >> i) ^ q
, затем пошел пить кофе, и через 10 минут пришел, чтобы прочитать результаты.35,3
Я подозреваю, что это может быть наименее эффективным методом для создания списка:
Я только что рассчитал полиномиальную регрессию. Я испытываю желание увидеть, какой другой ужасный метод может быть предпринят.
Примечательно, что я мог бы сэкономить 3,3 балла, если бы результат был округленным. На данный момент, я не думаю, что это имеет значение.
источник
3,2
Нулевое решение:
Одно решение на основе:
Сначала я думал, что
%7
операция будет засчитана, и%
будучи здесь дорогостоящей операцией, я пытался решить ее без нее.Я пришел к результату 3,2, как это:
Я был бы заинтересован в оптимизации с использованием этого подхода (без
%
). Спасибо.источник
(0426415305230 >> (i*3)) & 7
? Вы можете увидеть выходные цифры в обратном порядке.Python (3)
Поскольку в наши дни таких вопросов довольно много, я решил создать программу, которая автоматически решит их в 3 (или 2) жетонах. Вот результат для этой задачи:
Доказательство того, что это работает:
источник
&
.