Есть сайт под названием «Верните True to Win» с интересными заданиями для программистов на Javascript. Цель состоит в том, чтобы найти аргументы для данной функции, которые вынуждают ее возвращать true.
Следующее является одной из задач:
function total(x) {
return (x < x) && (x == x) && (x > x);
}
Пользователи должны найти фрагменты для значения, x
которое заставляет функцию возвращать true. Чтобы проверить фрагменты, вы вызываете функцию с вашим фрагментом в качестве параметра (то есть total(<snippet>)
).
Я нашел 22-символьное решение:
{valueOf:_=>n++%3},n=0
Некоторые люди нашли решение в 21 символе. Я не могу найти это решение. Какое решение в 21 символ?
code-golf
tips
javascript
Олег
источник
источник
{valueOf:Math.random}
время от времени работает ... но я подозреваю, что это нарушит какое-то правило ... (а может и нет?)Ответы:
21 символ
Моя оригинальная шутка, за которую проголосовали и предложили удалить:
11 символов :)
Тестовое задание:
источник
function total(x) { ... } total(<insert here>)
и получить результатtotal()
вызоваtrue
, поэтому я не думаю, что это сработает ...<insert here>
->0),(true
:)0)||(true
. Хотя это и не работает, и теперь я полностью сбит с толку, потому что есть другой уровень, где вы должны сделать0);(!0
или что-то подобное ...Обманчивый ответ
Я уже упоминал об этом в комментариях, но это не было проверено. Сейчас. Вам придется отправлять его до тех пор, пока он не заработает.
демонстрация
источник
x == x
стало правдой, если х выбирается случайным образом каждый раз.valueOf
не вызывается при обработке теста на равенство. С другой стороны, операторы сравнения ожидают примитивные значения, что вызываетvalueOf
вызов. Вот тест, показывающий это.