Напишите фрагмент, функцию, программу ... которая запутана таким образом, что на первый взгляд кажется, что она делает что-то еще.
Например: напишите немного кода, который добавляет два числа, но когда вы спросите кого-то «что он делает?», Он скажет вам, что выдает «Hello, World!».
правила
- Код должен быть читаемым для тех, кто примерно знает язык, который вы используете (избегайте запутанного языка, такого как APL, в ваших собственных интересах).
- Код должен сделать что-то неожиданное, что читатель изначально не мог предсказать.
- Когда вы спрашиваете разных читателей, они должны иметь одинаковое (неправильное) мнение о том, что делает код.
Рейтинг
- Пожалуйста, прочитайте коды других участников в течение максимум 10-20 секунд, просто чтобы иметь представление о том, что там происходит.
- Добавить комментарий к ответу говорить то , что вы думаете , делает код. Если ответ, который вы хотите дать, уже есть, просто добавьте +1 к комментарию. (если вы пропустите этот ответ и добавите еще один комментарий, не волнуйтесь, он не будет считаться другим ответом).
- Очки будут начислены следующим образом: (
maxFalseOpinion
-goodGuess
) /totalOpinion
(см. Пример ниже). - Оцените других участников с помощью Fairplay и не комментируйте собственный код.
- Добавляйте только полезные комментарии. Избегайте «Я не знаю» и «Хороший!», Они не учитываются для рейтинга, но необходимо скрыть код, а не рейтинг.
Пример рейтинга
Фрагмент добавляет два числа. Комментарии говорят:
(3) Он отображает «Привет, мир!»
(1) Вычитает 2 числа.
(2) Добавляет 2 номера.
Общее количество баллов - это максимальное количество мнений (3) - количество хороших догадок (2), деленное на общее количество догадок (3 + 1 + 2 = 6). Результат: (3 - 2) / 6 = 1/6 = 16,67% .
БОЛЬШЕ О ПУНКТАХ
Люди, кажется, имеют некоторые проблемы с выяснением точек.
Вот отличная оценка:
printf('Hello World');
комментарии:
отображает количество раз, когда вы нажали кнопку. (17 комментариев).
ИТОГО: 17 комментариев
Оценка: (17 - 0) / 17 = 1 = 100%
Вот хромая оценка:
printf('Hello World');
комментарии:
печатает "Hello World". (13 комментариев).
ИТОГО: 13 комментариев
Оценка: (0 - 13) / 13 = -1 = -100%
Вот неплохой результат:
printf('Hello World');
комментарии:
печатает имя пользователя. (2 комментария).
Отображает текущее время (15 комментариев).
Он возвращает то, что вы ввели без изменений. (3 комментария).
Это печатает "Привет Мир" (1 комментарий).
ИТОГО: 21 комментарий
Оценка: (15 - 1) / 21 = 0,6667 = 66,67%.
Объяснение:
15 - главное предположение, что люди сказали больше всего. 1 правильное количество догадок. 21 - сумма всех комментариев.
источник
Ответы:
Javascript
Ответ: это выводит
1
. Комментарии ниже объясняют это довольно хорошо - здесь есть две разные переменные, а именно - «LATIN SMALL LETTER A» и « - CYRILLIC SMALL LETTER A» .Был 1 правильный ответ, 50 человек думали, что он дал 2, и в общей сложности 52 ответа, оценка (50 - 1) / 52 = 49/52 = 94,23%
источник
2
или, по крайней мере, это то, на что я надеюсь :)С, оценка 33,3%
Бегать
./prog 'Hello & goodbye, world!'
Гол
Правильный ответ
H\n
(while
это часть комментария, благодаря строке, заканчивающейся на\
, так что петли нет), данный 6 людьми.Самую популярную ошибку допустили
Hello goodbye, world\n
25 человек.(25-6) / 57 = 33,3%.
Спасибо Оливье Дюлаку за то, что он потрудился просчитать.
источник
H\n
.Hello goodbye, world!
(нет \ n) (через 2 пробела после Привет)питон
Рейтинг
Хороший ответ: печать
0 1 4 9 16 25 36 49 64 64
, каждый номер в одной строке.Пояснение: Несмотря на то, что никто не получил правильный ответ, я считаю, что это в основном неудачная попытка, потому что никто не сделал ошибку, которую я намеревался. (Я добавлю реальное объяснение позже, если никто не сделает.)
Количество хороших ответов: 0
Количество людей с таким же неправильным ответом: 7
Всего ответов: 11
Оценка: 63,64% (округлено до двух десятичных знаков)
объяснение
Сначала создается список,
a
который заполняется значениямиi * ++i
. В++
Python нет оператора, но есть унарный+
оператор, который ничего не делает для целых чисел, и применение его два раза по-прежнему ничего не делает. Таким образом,a
содержит квадраты целых чисел от0
до9
.Я расценил это
++
как отвлечение и надеялся, что большинство избирателей продолжат, думая, что они нашли ловушку и попали в настоящую ловушку. Это не сработало. Некоторые считали, что++
это синтаксическая ошибка, а другие все еще искали ловушку.Ловушка Ловушка была во втором цикле:
Я был уверен, что большинство людей подумают, что это распечатывает все
a[i]
, т. Е.0 1 4 9 16 25 36 49 64 81
Каждое число в одной строке. Вот что вы получите с помощью этого варианта, например:x
присваивается значение вa
, а затемx
печатается. В первой версииa[i]
присваиваются значения вa
, а затемa[i]
печатается. Разница в том, что в нашем случае мы имеемi == 9
, и, таким образом, значениеa[9]
меняется каждый раз через цикл. Когда наконецa[9]
печатается, оно имеет значениеa[8]
и, таким образом64
, печатается снова.источник
++
в Python).SyntaxError
на второмfor
.81
десять разSyntaxError
на второмfor
. Это потрясающе. Это действительно должно победить. Мне понадобилось 5 минут, чтобы понять, что происходит LOL!JavaScript , оценка -100%
Я не изобрел это, Гэри Бернхардт сделал, но это один из моих любимых
источник
-100%
? ...Python, -54,8%
Ответ: повышает
SyntaxError: not a chance
Объяснение:
from __future__ import braces
является одним из пасхальных яиц в Python. Это шутка, говорящая о том, что Python никогда не будет использовать фигурные скобки для определения объема в будущем.источник
SyntaxError: not a chance
Perl, 26,67%
Результаты:
Это печатает «Я двойственно отношусь к тому, чтобы говорить что-либо вообще».
my $num1,$num2 = @_;
отсутствует скобки. Следовательно, это эквивалентноmy $num1; $num2 = @_;
.$num1
не настроен ни на что.Таким образом
$num1
, никогда не бывает больше нуля. Немного о секретном мире рыб, спрятанном за экраном, - красная сельдь, так что люди думают, что нашли «уловку».Кроме того, троичный оператор является l-значением в Perl:
1 ? $a = 1 : $b = 2
фактически означает(1 ? $a = 1 : $b) = 2
. Какие средства($a = 1) = 2
оцениваются, установка$a
на2
. Вопреки видимости, вторая строка назначена$num1
.Если вам интересно,
//
это определенный оператор или. Если подпрограмма вернула неопределенное значение, строка"Stuff did not happen."
будет напечатана. Но на самом деле этого не происходит. Это было просто, чтобы дать людям другой вариант.Подсчет очков:
Всего правильно: 5
Всего догадок: 30
Оценка: (13 - 5) / 30 = 26,67%
источник
This is a secret fish world. Carp cannot be repressed!
.Hello, world!
.1 ? $a = 1 : $b = 2
на самом деле означает(1 ? $a = 1 : $b) = 2
. Что значит($a = 1) = 2
оценивается, устанавливая$a
на 2. Кроме того, как указал Primo,my $num1, $num2 = @_;
не делает то, что вы ожидаете, потому что скобки отсутствуют.PHP 52%
(Скопировано дословно отсюда )
Объяснение и оценка
источник
train
.С ++ 28,9%
Решение
Гол
Предоставлено Элвином Вонгом
HelloWorld
(учитывая, что Minitech и Zeel одинаковы)Hello\nworld
3 думал что то другое.источник
cout
если вызывается без параметров.HelloWorld
.Рубин, 100%
Правильный ответ:
Оценка: 3 одинаковых неправильных ответа, других ответов нет.
источник
Python, -28,13%
Это печатается,
11
потому чтоelse
блок, который принадлежитwhile
, выполняется после выхода из цикла.Оценка: (8 - 17) / 32 = -28,13%
источник
else:
11
в одну строку.Питон: Рейтинг: -27%
Программа печатает:
Рейтинг: Всего мнений: 22 12 правильных 3 + 1 + 6 неверных [для ответа Бакуиру я бы сказал, что он был близок, но все же неверен, поскольку os.name - строка (os.uname - функция)]
Рейтинг основан на этом предположении и моем понимании рейтинговой системы: Максимум неверно = 6 Правильно = 12 Оценка = (6-12) / 22 = -27%
источник
What is your name: [operating system name]
,What is your quest: Seek and find the holy grail
,What is your favourite color: blue
на отдельных строках. Очевидно[operating system name]
, заменяется фактическим именем.name = "Robin"
,seek = "Seek and find holy grail"
иfavorite_color = "red"
, о, нет.blue
! (AAARRGGGHHH!)What is your name: <function os.name at 0x....>
What is your name: Robin
,What is your quest: Seek and find holy grail
иWhat is your favorite color: blue
на отдельных линиях.питон
редактировать:
оценка (8-1) / 9 == 77,7%
правильный вывод: «2 - компания» на питоне 2, «3 - толпа» на питоне 3.
источник
2 is a crowd
(в Python 2, 3 в Python 3).2 is company
(в Python 2) или3 is a crowd
(в Python 3).JavaScript -46,7%
Вы можете запустить его здесь, когда будете готовы (сначала догадайтесь!). Если вы прокрутите вниз достаточно далеко на панели JS, вы увидите код с кратким объяснением.
Правильный ответ:
Подсчет очков:
источник
Please enter a number:
и возвращает ответ, за которым следуетtrue
.That's a big number
после задержки, равной числу, которое вы вводите в мс.Javascript
Ответ: это предупреждает
Hello
.concat
Метод не изменяет массив - это возвращает массив, содержащий конкатенацию массива он призвал и любые другие переданные аргументы.15 правильных, 26 неправильных, всего 41 ответ и оценка: (26-15) / 41 = 11/41 = 26,83%
источник
Hello, world!
Hello
Python 33,3%
Примечание. Предположим, что это Python 2.x, а не Python 3.
При запуске этот код выдает
UnboundLocalError: local variable 'True' referenced before assignment
.источник
SyntaxError
False, True = True, False
?True
.UnboundLocalError
.Ява
Первая попытка кодогольфа ...
хороший ответ: печать
Some ungodly gibberish and then some more.
и перевод строкиРейтинг:
Оценка: 9% (55% в педантичном режиме)
источник
Some ungodly gibberish and then some more.
Some ungodly gibberish
с новой строкиC # 62,5%
Это мой первый кодовый гольф.
Правильный ответ был: «что-то между 55 и 110». Это потому, что всякий раз, когда выполняется оператор "sum + = i", он будет использовать текущее значение i. Этот код может даже выполняться после того, как цикл for выполнен , и в этот момент у меня есть значение 11. Это дает максимально возможное значение 110 (и вы можете убедиться, что увидите его, если замедляете лямбду в своем тестировании). Наименьшее возможное значение - это сумма (1..10), которая равна 55.
оценка: строго говоря, никто не понял правильно, поэтому оценка должна быть (5-0) / 8 = 62,5%. Если мы хотим считать «примерно хороший» правильным ответом, тогда оценка (5-5) / 8 = 0%
источник
Python, -83,3%
Ответ: Печатается,
a < b
если входы равны,a = b
если первый больше, аa > b
второй больше.Объяснение:
cmp(a, b)
возвращает,0
если оба аргумента равны,1
если первый больше, а-1
первый меньше, поэтому печатается неправильный символ сравнения.источник
a = b
для ввода a == b,a < b
для ввода a> b иa > b
для ввода a <ba = b
если a> b,a < b
если a == b,a > b
если a < b. (Это, вероятно, то, что имел в виду @Foon.)PHP, 100%
Впервые публикуем в Code Gulf, надеюсь, это не так уж плохо.
правильный вывод - «hellohelloworld»
оценка (10 - 0) / 10 = 1 = 100%
источник
hello world
.'one' == 0
=>true
. Довольно умно.Perl: 100% (4-0) / 4
Эта программа печатает «3» без новой строки. Perl анализирует эту инструкцию как
поэтому только
(1+2)
аргумент передаетсяprint
.источник
9
сопровождается новойC #
источник
CPython
правильный вывод «Привет»
оценка (14-3) / 19 == 57,9%
источник
Hello\nWorld!
.Hello
. (C (оценка: 4,45%)
Хорошие предположения: 7
Максимум неправильных предположений: 6 + 2 = 8
Всего предположений: 6 + 7 + 3 + 2 + 4 = 22
Решение:
??/
это триграф для\
, поэтому перевод строки завершается, аscanf
строка закомментирована. Поэтому программа работает вечно, печатаяGuess a number between 1 and 10:
. Комментарии являются цитатой из Моцарта (черезfortune
).Спойлер, как скомпилировать и запустить:
источник
"Guess a number between 1 and 10: Guess a number between 1 and 10: Guess a number between 1 and 10: " (and so on)
не спрашивая вводаЯва
Ответ
Он печатает
Padded value:
(с новой строки).format
Метод Stringstatic
с форматом, передаваемым в качестве первого параметра. Т.е. вышеуказанный вызов эквивалентен:Количество хороших ответов: 2 Неправильные ответы: 9
Оценка : (9-2) / 11 = 63%
источник
Padded value: - 0012\n
С
Оценка = (3-16) / 19 == -68,4%
Не забудь свое полотенце.
источник
C ++
Оценка = (1 - 6) / 7 = -0,71428571428571 = -71,428571428571%
источник
JavaScript
источник
Z = false
.питон
правильный вывод 'hell0 w0rld'
оценка (8-14) / 22 == -27,3%
источник
hell0 w0rld
R: 100%
Не настолько творчески, но может озадачить некоторых людей:
Как вы думаете, это результат?
Редактировать :
Ответ был 20. Из-за отсутствия
s
вstringAsFactors
(вместоstringsAsFactors
) аргумент не распознается, поэтому функция создает новый столбец с именемstringAsFactors
. Из-за повторного использования вектора столбец содержит 10 раз,TRUE
которые преобразуются в1
в сумме s, следовательно, всего 20, а не 10.Этот ответ не был дан в комментариях. Было дано 3 ответа (все говорят
10
более или менее). Следовательно, оценка 100%, я думаю.источник
10
.Tcl
Вдохновленный Угореном
Извините, забыл пример строки. Хорошо, беги как
Редактировать Направо решение: Это не фильтрует вообще. ( 6x )
Макс неправильный ответ: 4x
Всего ответов: 10
Оценка: -0,2
источник
" "
,"&"
,"\"
.