-ENDED- сделать что-то похожее на что-то еще [закрыто]


78

Напишите фрагмент, функцию, программу ... которая запутана таким образом, что на первый взгляд кажется, что она делает что-то еще.

Например: напишите немного кода, который добавляет два числа, но когда вы спросите кого-то «что он делает?», Он скажет вам, что выдает «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 - сумма всех комментариев.


5
Возможные идеи для участников (особенно те , пишущие C) можно найти на сайте underhanded.xcott.com
shiona

3
У меня есть чувство, что люди не хотят комментировать, если они не видят уловку (потому что они, очевидно, в конечном итоге ошиблись). Это сильно изменило бы результаты.
Угорен

2
@Haidro, я бы сказал, что если вы немного знаете язык и, кажется, понимаете, что делает программа, тогда комментируйте. Если вы не можете понять это (например, я не могу понять ответ slackwear ), не делайте этого.
Угорен

2
Когда заканчивается вызов?
WolframH

4
Я думаю, что вам нужно минимальное количество предположений для победителя - я бы сказал 10. 1 неправильный ответ из 1 не очень впечатляет, но все же 100%.
Угорен

Ответы:


79

Javascript

var а;
a = 1;
а++;
alert( a );

Ответ: это выводит 1. Комментарии ниже объясняют это довольно хорошо - здесь есть две разные переменные, а именно - «LATIN SMALL LETTER A» и « - CYRILLIC SMALL LETTER A» .

Был 1 правильный ответ, 50 человек думали, что он дал 2, и в общей сложности 52 ответа, оценка (50 - 1) / 52 = 49/52 = 94,23%


57
Результаты 2или, по крайней мере, это то, на что я надеюсь :)
Александр

8
Это самый подлый фрагмент JS, который я когда-либо видел. Отлично сработано.
Питер Маджид

1
Для тех, кто этого не понимает (спойлеры впереди): ссылка
BlueRaja - Danny Pflughoeft

3
@soandos: (ОПЯТЬ, SPOILERS): переменная, используемая в первой и третьей строках, отличается от переменной во второй и четвертой. Один использует в (U + 0061) , в то время как другие используют а (U + 0430). Смотрите также .
BlueRaja - Дэнни Пфлугхофт

5
Мой друг подумал, что это довольно забавно, и был вдохновлен написать этот github.com/johnhaggkvist/WATifyJS - у него было слишком мало представителей, чтобы комментировать, поэтому я делаю это для него ^ _ ^
Хенрик Андерссон

32

С, оценка 33,3%

#include <stdio.h>
int main(int ac, char **av) {
        const char *arg = av[1];
        #define valid_ch(ch) (ch!='&' && ch!='\\')  // All valid except & and \
        while (*arg)
        {
                if (valid_ch(*arg)) putchar(*arg);
                arg++;
        }
        puts("");
        return 0;
}

Бегать ./prog 'Hello & goodbye, world!'

Гол

Правильный ответ H\n( whileэто часть комментария, благодаря строке, заканчивающейся на \, так что петли нет), данный 6 людьми.
Самую популярную ошибку допустили Hello goodbye, world\n25 человек.
(25-6) / 57 = 33,3%.
Спасибо Оливье Дюлаку за то, что он потрудился просчитать.


24
Печать "Привет, до свидания, мир! \ N" ...
Vi.

5
Это бесконечный цикл.

5
Печатает только первый символ в arg и символ новой строки. Так что печатает H\n.
марин

7
Печать: Hello goodbye, world!(нет \ n) (через 2 пробела после Привет)
Оливье Дюлак,

6
производит SEGFAULT.
Паскальхейн

27

питон

a = []
for i in range(10):
    a.append(i * ++i)
for a[i] in a: 
    print(a[i])

Рейтинг

  1. Хороший ответ: печать 0 1 4 9 16 25 36 49 64 64, каждый номер в одной строке.

  2. Пояснение: Несмотря на то, что никто не получил правильный ответ, я считаю, что это в основном неудачная попытка, потому что никто не сделал ошибку, которую я намеревался. (Я добавлю реальное объяснение позже, если никто не сделает.)

  3. Количество хороших ответов: 0

  4. Количество людей с таким же неправильным ответом: 7

  5. Всего ответов: 11

  6. Оценка: 63,64% (округлено до двух десятичных знаков)

объяснение

Сначала создается список, aкоторый заполняется значениями i * ++i. В ++Python нет оператора, но есть унарный +оператор, который ничего не делает для целых чисел, и применение его два раза по-прежнему ничего не делает. Таким образом, aсодержит квадраты целых чисел от 0до 9.

Я расценил это ++как отвлечение и надеялся, что большинство избирателей продолжат, думая, что они нашли ловушку и попали в настоящую ловушку. Это не сработало. Некоторые считали, что ++это синтаксическая ошибка, а другие все еще искали ловушку.

Ловушка Ловушка была во втором цикле:

for a[i] in a: 
    print(a[i])

Я был уверен, что большинство людей подумают, что это распечатывает все a[i], т. Е. 0 1 4 9 16 25 36 49 64 81Каждое число в одной строке. Вот что вы получите с помощью этого варианта, например:

for x in a: 
    print(x)

xприсваивается значение в a, а затем xпечатается. В первой версии a[i]присваиваются значения в a, а затем a[i]печатается. Разница в том, что в нашем случае мы имеем i == 9, и, таким образом, значение a[9]меняется каждый раз через цикл. Когда наконец a[9]печатается, оно имеет значение a[8]и, таким образом 64, печатается снова.


3
Синтаксическая ошибка (нет ++в Python).
Угорен

5
SyntaxErrorна втором for.
Бакуриу

Печатает 81десять раз
Michael0x2a

SyntaxErrorна втором for. Это потрясающе. Это действительно должно победить. Мне понадобилось 5 минут, чтобы понять, что происходит LOL!
Рубик

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

26

JavaScript , оценка -100%

Я не изобрел это, Гэри Бернхардт сделал, но это один из моих любимых

alert(Array(16).join("wat?" - 1)+", BATMAN!")

37
Выходы NaNNaNNaNNaNNANNANNNANNANNNANNANANNA ANNNANNNANNANNAN, BATMAN! :)
codefreak

1
Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

Похоже, это видео довольно знаменитое ...
Бакуриу

3
Это -100%? ...
Элвин Вонг

Конечно. Бэтмен отдает это.
mplungjan

14

Python, -54,8%

Ответ: повышает SyntaxError: not a chance

from __future__ import braces

if (input() > 0) {
print 'You entered a positive number';
}
else {
print 'You didn\'t enter a positive number';
}
  • Хорошие догадки: 24
  • Те же плохие догадки: 7
  • Всего догадок: 31

Объяснение:

from __future__ import bracesявляется одним из пасхальных яиц в Python. Это шутка, говорящая о том, что Python никогда не будет использовать фигурные скобки для определения объема в будущем.


6
Проверяет, подписан ли результат пользовательского выражения.
Феликс Домбек

1
Я подозреваю, что есть довольно много ошибок. Python программисты упрямы;)
grc

12
Это синтаксическая ошибка!
Дхара

11
SyntaxError: not a chance
Бакуриу

2
@ BoppreH Пожалуйста, ограничьте себя в изложении результата без каких-либо явных объяснений или добавьте комментарий, в котором уже говорится, что результат, по вашему мнению, является правильным. Другие виды комментариев только разрушают удовольствие для следующих читателей.
Бакуриу

14

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%

no warnings;
no strict;
no feature;
no 5.16;
no Carp;

sub do_mysterious_stuff
{
    my $num1,$num2 = @_;               

    if ($num1 > 0)
    {                                                                                                                  eval q; $num1="This is a secret fish world. Carp cannot be repressed!" or
       $num1 = "Hello, world!";
    }
    else
    {
        $num2 > 0 ? 
            $num1 = "What's up, world?": 
            $num2 = "I am ambivalent about saying anything at all.";
    }

    return $num1;
}

print do_mysterious_stuff(1,1) //"Stuff did not happen.";

2
Это выводит, я амбивалентен о том, чтобы говорить что-либо вообще.
марин

10
Это печатает This is a secret fish world. Carp cannot be repressed!.
Угорен

13
Не будучи гуру Perl, это должно напечатать Hello, world!.
Александр

2
Ну вот и все, ребята. Я никогда не имею дело с Perl снова.
Мистер Лама,

3
@ContextSwitch и @aidan, троичный оператор является l-значением в Perl. 1 ? $a = 1 : $b = 2на самом деле означает (1 ? $a = 1 : $b) = 2. Что значит ($a = 1) = 2оценивается, устанавливая $aна 2. Кроме того, как указал Primo, my $num1, $num2 = @_;не делает то, что вы ожидаете, потому что скобки отсутствуют.

14

PHP 52%

  $arg = 'T';
  $vehicle = ( ( $arg == 'B' ) ? 'bus' :
               ( $arg == 'A' ) ? 'airplane' :
               ( $arg == 'T' ) ? 'train' :
               ( $arg == 'C' ) ? 'car' :
               ( $arg == 'H' ) ? 'horse' :
               'feet' );
  echo $vehicle;

(Скопировано дословно отсюда )

Объяснение и оценка

Правильный ответ - лошадь . Это не хитрость или ловкость рук. Как ни странно, именно так троичный оператор определяется в PHP.
3 выбрали правильный ответ: лошадь ,
16 человек выбрали поезд, который является правильным буквально на любом другом языке, когда-либо изобретенном, кроме PHP. Всего
25 ответов, что дает оценку (16 - 3) / 25 = 52%


5
ноги
Вим

15
отпечатки train.
SteeveDroz

3
печатает «лошадь».
Джонатан


1
И именно поэтому вы почти всегда должны использовать круглые скобки для указания порядка операций, даже если вы думаете, что они вам не нужны.
Райан Амос

12

С ++ 28,9%

#include <iostream>

using namespace std;

void print( void ) {
  static int times = 0;

  switch( times ) {
  case 0:
     cout << "Hello";
     break;
  case 1:
     cout << "World";
     break;
  default:
     cout << "Goodbye";
     break;
  }
  times++;
}

int main(int cout, char* argv[]) {

  print();
  cout << '\n';
  print();
}

Решение

Смысл этого кода состоит в том, чтобы заставить пользователя думать, что между текстом «Hello» и «World» будет напечатан символ новой строки. Обратите внимание, что первый параметр main называется cout. Поскольку в области main, cout является целым числом, оператор << фактически выполняет операцию сдвига влево с параметром '\ n', а не выводит новую строку. Функция печати предназначена главным образом для отвлечения внимания от входных параметров в main, но также для разрешения использования std :: cout без добавления префикса пространства имен.

Гол

Предоставлено Элвином Вонгом

  • Всего 38 ответов:
  • 12 мыслей HelloWorld(учитывая, что Minitech и Zeel одинаковы)
  • 23 думал Hello\nworld 3 думал что то другое.
  • Оценка (23 - 12) / 38 = 28,9%

23
Печатает «Hello» в одной строке и «World» в следующей.
Redtuna

2
Печать "HelloWorld". Ставит 1024, coutесли вызывается без параметров.
Александр

9
Печать HelloWorld.
Ry-

1
Печать HelloWorld. И выполняет немного мудрый сдвиг влево на целое число «cout».
Zeel

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

10

Рубин, 100%

display = lambda { puts "Hello, world!" }
display()

Правильный ответ:

Печать "основной" без перевода строки. Объяснение: В Ruby нельзя вызывать лямбду, используя обычный синтаксис скобок. Вместо этого display () интерпретируется как встроенный метод, который есть у всех объектов: o.display печатает o.to_s в стандартный вывод. Методы, вызываемые без объекта, интерпретируются как методы "main", объекта, который включает модуль ядра.

Оценка: 3 одинаковых неправильных ответа, других ответов нет.


3
Принты "Привет, мир!"
3Doubloons

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

8

Python, -28,13%

x = 0
while x < 10:
    if (x%2)==0: x += 2
else: x += 1

print x

Это печатается, 11потому что elseблок, который принадлежит while, выполняется после выхода из цикла.

  • Максимальное количество ложных догадок: 8
  • Правильные догадки: 17
  • Всего догадок: 8 + 17 + 7 = 32

Оценка: (8 - 17) / 32 = -28,13%


7
Сбой из-за отсутствия отступа вelse:
Александр

16
Печать 11в одну строку.
Бакуриу

6
Это печатает 10.
копия

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

8

Питон: Рейтинг: -27%

name = "Robin"
seek = "Seek and find holy grail"
favorite_color = "blue"

from os import *

print "What is your name: %s" % name
print "What is your quest: %s" % seek
print "What is your favorite color: %s" % favorite_color

Программа печатает:

What is your name: <value of os.name> 
What is your quest: Seek and find holy grail
What is your favorite color: blue

Рейтинг: Всего мнений: 22 12 правильных 3 + 1 + 6 неверных [для ответа Бакуиру я бы сказал, что он был близок, но все же неверен, поскольку os.name - строка (os.uname - функция)]

Рейтинг основан на этом предположении и моем понимании рейтинговой системы: Максимум неверно = 6 Правильно = 12 Оценка = (6-12) / 22 = -27%


11
Отпечатки 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], заменяется фактическим именем.
Волатильность

3
Отображает 3 последние строки со значениями name = "Robin", seek = "Seek and find holy grail"и favorite_color = "red", о, нет. blue! (AAARRGGGHHH!)
SteeveDroz

5
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на отдельных линиях.
Рори О'Кейн

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

7

питон

import sys

class TwoPlusTwoIsFive(object):
  def __bool__(self):
    if 2 + 2 == 5:
      return True
    else:
      return False

two_plus_two_is_five = TwoPlusTwoIsFive()

if two_plus_two_is_five:
  print('{} is company'.format(sys.version[0]))
else:
  print('{} is a crowd'.format(sys.version[0]))

редактировать:

оценка (8-1) / 9 == 77,7%

правильный вывод: «2 - компания» на питоне 2, «3 - толпа» на питоне 3.


7
2 is a crowd(в Python 2, 3 в Python 3).
Угорен

2 is company(в Python 2) или 3 is a crowd(в Python 3).
WolframH

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

5
Черт, особый способ переименования! :)
Бакуриу

7

JavaScript -46,7%

var getResult = function(n, notReadyYet) {
    alert("Calculating results...");
    if (notReadyYet) {
        setTimeout(getResult, 100, n);
    } else {
        sayResult(n);
    }
    return arguments.callee;
}

var sayResult = function(n) {
    if (n >= 10) {
        alert("That's a big number!");
    }
    if (n < 10) {
        alert("That's a small number.");
    }
    return n;
}

(function() {
    var input = parseInt(prompt("Please enter a number:"));
    var result = getResult(input, true);
    return result;
})();

Вы можете запустить его здесь, когда будете готовы (сначала догадайтесь!). Если вы прокрутите вниз достаточно далеко на панели JS, вы увидите код с кратким объяснением.

Правильный ответ:

После того, как пользователь попросит ввести число, он войдет в бесконечный цикл и покажет предупреждения «Расчет результатов ...», пока не будет превышен максимальный размер стека вызовов (хотя пример jsfiddle остановится примерно через 20 раз). Однако, если точка с запятой ставится после закрывающей скобки функции sayResult, она будет работать как mgibsonbr, описанный в комментариях.

Подсчет очков:

  • Хороших ответов: 9
  • Самое популярное ложное мнение: 2
  • Всего ответов: 15

Он запрашивает номер с вопросом Please enter a number:и возвращает ответ, за которым следует true.
SteeveDroz

8
он блокируется в бесконечный цикл, выскакивая «Расчет результатов» до бесконечности
SeanC

Он запрашивает число, дважды выдает предупреждение «Расчет результатов», затем
выдает

1
Он выводится That's a big numberпосле задержки, равной числу, которое вы вводите в мс.
Гиерон,

В зависимости от браузера и / или того, как настроен DOM (я действительно новичок в JS), он выводит имя функции, которая вызывается при загрузке страницы.
Кевин

6

Javascript

var a = [];
a.push( "Hello" );
a.concat( [ ", ", "world", "!" ] );
alert( a.join("") )

Ответ: это предупреждаетHello . concatМетод не изменяет массив - это возвращает массив, содержащий конкатенацию массива он призвал и любые другие переданные аргументы.

15 правильных, 26 неправильных, всего 41 ответ и оценка: (26-15) / 41 = 11/41 = 26,83%


25
ОповещенияHello, world!
SteeveDroz

14
Это предупреждаетHello
Волатильность

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

5

Python 33,3%

def Test():
    False = True
    True = False
    if False:
        return False
    elif True:
        return True
    else:
        return None

a = Test()
print a

Примечание. Предположим, что это Python 2.x, а не Python 3.


При запуске этот код выдает UnboundLocalError: local variable 'True' referenced before assignment.


1
ПовышаетSyntaxError
Волатильность

Не должно ли это быть False, True = True, False?

Что есть, то есть. (в любом случае, я думаю, что это не имеет значения в этом случае)
TerryA

4
Это печатает True.
WolframH

1
Поднимает UnboundLocalError.
Бакуриу

5

Ява

public class Puzzle {

    public static void main(String[] args) {
        String out = "Some ungodly gibberish";
        //char x = \u000a; out = out + " and then some more. ";
        System.out.println(out);
    }
}

Первая попытка кодогольфа ...

хороший ответ: печать Some ungodly gibberish and then some more.и перевод строки

Рейтинг:

  • Максимальное количество догадок 6
  • Общее количество догадок 11
  • количество правильных догадок 5 (0, если вы находитесь в режиме педанитц)

Оценка: 9% (55% в педантичном режиме)


5
ОтпечаткиSome ungodly gibberish and then some more.
картонная

6
Печать Some ungodly gibberishс новой строки
MrZander

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

5

C # 62,5%

int sum=0;
List<Task> threads = new List<Task>();
for (int i=1; i<=10; i++) {
  Task adder = new Task( ()=> sum += i );
  threads.Add( adder );
  adder.Start();
}
foreach (var t in threads ) { 
  t.Wait();
}
Console.WriteLine("Sum of all numbers in 1..10 is: "+sum);

Это мой первый кодовый гольф.

Правильный ответ был: «что-то между 55 и 110». Это потому, что всякий раз, когда выполняется оператор "sum + = i", он будет использовать текущее значение i. Этот код может даже выполняться после того, как цикл for выполнен , и в этот момент у меня есть значение 11. Это дает максимально возможное значение 110 (и вы можете убедиться, что увидите его, если замедляете лямбду в своем тестировании). Наименьшее возможное значение - это сумма (1..10), которая равна 55.

  • Хороших ответов: 0
  • Только примерно хорошие ответы: 5
  • Количество раз, когда был выбран самый популярный ответ: 5
  • Всего ответов: 8

оценка: строго говоря, никто не понял правильно, поэтому оценка должна быть (5-0) / 8 = 62,5%. Если мы хотим считать «примерно хороший» правильным ответом, тогда оценка (5-5) / 8 = 0%


4
Печатает неопределенное число от 55 до 100 включительно.
Ry-

Это просто печатает 100.
Кевин

1
Печатает «случайное» число от 0 (включительно) до 110 (включительно)
fjdumont

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

Я счастлив, что большинство людей поняли это в основном правильно - по-видимому, достаточно правильно, что они будут знать, чтобы не делать эту ошибку в своем коде!
Редтуна

4

Python, -83,3%

Ответ: Печатается, a < bесли входы равны, a = bесли первый больше, а a > bвторой больше.

a = input()
b = input()
print 'a', '<=>'[cmp(a, b)], 'b'
  • Хорошие догадки: 11
  • Те же плохие догадки: 1
  • Всего догадок: 12

Объяснение:

cmp(a, b)возвращает, 0если оба аргумента равны, 1если первый больше, а -1первый меньше, поэтому печатается неправильный символ сравнения.


7
Печатает a = b, если a> ba <b является a == b, или a> b, если a> b
Foon

печатает a = bдля ввода a == b, a < bдля ввода a> b и a > bдля ввода a <b
wim

2
Печатает, a = bесли a> b, a < bесли a == b, a > bесли a < b. (Это, вероятно, то, что имел в виду @Foon.)
flornquake

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

1
Я думаю, что это лучше, чем показывает оценка. Если бы я не был в режиме поиска ошибок, я бы его не нашел.
WolframH

4

PHP, 100%

Впервые публикуем в Code Gulf, надеюсь, это не так уж плохо.

function word_to_num($word) {
 switch ($word) {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return "error";
 }
}
function print_word($num) {
 switch ($num) {
  case 1:
   print "hello";
   break;
  case 2:
   print "world";
   break;
  case "error":
  default:
   print " ";
  }
}

$words = array("one", 0, "two");
foreach ($words as $word) {
 $result = word_to_num($word);
 print_word($result);
}

правильный вывод - «hellohelloworld»

оценка (10 - 0) / 10 = 1 = 100%


9
Печать hello world.
flornquake

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

Ох, хаха. Черт возьми PHP.
Ry-

'one' == 0=> true. Довольно умно.
Примо

4

Perl: 100% (4-0) / 4

print (1 + 2) * 3, "\n"; 
#

Эта программа печатает «3» без новой строки. Perl анализирует эту инструкцию как

((print (1+2)) * 3, "\n")

поэтому только (1+2)аргумент передается print.


3
Печать 9сопровождается новой
строкой

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

3

C #

static void Main(string[] args)
{
     Console.WriteLine('H' + 'e' + 'l' + 'l' + 'o');
     Console.ReadLine();
}

3
Печатает сумму значений ASCII каждой буквы (500)
3Doubloons

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

Чтобы быть справедливым, когда я впервые увидел это, я подумал, что будет напечатано «Привет», но затем сделал двойной дубль.
Редтуна

3

CPython

if 'Hello' + 'World' is 'HelloWorld':
  print 'Hello'
if 'Hello' + 'World!' is 'HelloWorld!':
  print 'World!'

правильный вывод «Привет»

оценка (14-3) / 19 == 57,9%


13
Ничего не печатает.
TerryA

1
Печать Hello\nWorld!.
Бакуриу

2
Печать Hello. (
Зависит

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

3

C (оценка: 4,45%)

Хорошие предположения: 7
Максимум неправильных предположений: 6 + 2 = 8
Всего предположений: 6 + 7 + 3 + 2 + 4 = 22

Решение: ??/ это триграф для \, поэтому перевод строки завершается, а scanfстрока закомментирована. Поэтому программа работает вечно, печатая Guess a number between 1 and 10:. Комментарии являются цитатой из Моцарта (через fortune).

// Why not?/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// What?/
int main(int argc, char** argv)
{
    // Why not?/
    int number;

    // Why should I not send it?/
    srand(time(NULL));

    while(1)
    {
        // Why should I not dispatch it?/
        printf("Guess a number between 1 and 10: ");

        // Why not??/
        scanf("%d", &number);

        // Strange! I don't know why I shouldn't/
        if(number == rand() % 10 + 1)
        {
            // Well, then/
            printf("You guessed right!\n");
            // You will do me this favor./
            exit(0);
        }
    }
}

Спойлер, как скомпилировать и запустить:

gcc test.c -trigraphs


5
Комментарии просто отвлекают. Программа «Угадай случайное число от 1 до 10».
luser droog

6
"Guess a number between 1 and 10: Guess a number between 1 and 10: Guess a number between 1 and 10: " (and so on)не спрашивая ввода
pascalhein

2
Что-то плохое скрыто в комментариях, поскольку они похожи на C ++.
Александр

1
В конце концов, печатает «Ты угадал правильно!» И перевод строки, а затем заканчивается.
Каз Драгон

4
Злой комментарий имеет отношение к триграфам.
Шион

3

Ява

public class Test {
    public static void main(String[] args) {
        String fmt = "%s - %04d\n";
        System.out.println(fmt.format("Padded value: ", 0x0c));
    }
}

Ответ

Он печатает Padded value:(с новой строки).

formatМетод String staticс форматом, передаваемым в качестве первого параметра. Т.е. вышеуказанный вызов эквивалентен:

        System.out.println(String.format("Padded value: ", 0x0c));

Количество хороших ответов: 2 Неправильные ответы: 9

Оценка : (9-2) / 11 = 63%


8
Это печатаетPadded value: - 0012\n
копия

1
Это печатает "дополненное значение:` сопровождаемый символом новой строки.
Элвин Вонг

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

3

С

#include <stdio.h>
#define SIX  1+5
#define NINE 8+1

int main()
{
    printf("%d\n", SIX * NINE);
}

Оценка = (3-16) / 19 == -68,4%

Не забудь свое полотенце.


15
Он печатает 42 +
перевод

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

Я только что заметил твою загадку. Я бы ошибся, xP. Я программист на Java / C #, так что это мое оправдание ...
Кевин,

3

C ++

#include <cstdio>

int main()
{
    int f;

    f or (f = 0, f < 1000, ++f,
        printf("H ello world !\n"));

    return 0;
}

Оценка = (1 - 6) / 7 = -0,71428571428571 = -71,428571428571%


5
Это ничего не делает.
СтивеДроз

Не компилируется.
ф.арделян

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

2

JavaScript

var x = 0;
var y = !x * 4;
var z = !y;
alert("Z = "+z);

13
Это оповещения Z = false.
SteeveDroz

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

2

питон

def greeting():
  try:
    return 'Hello World'
  finally:
    return 'HELL0 W0RLD'

print greeting().lower()

правильный вывод 'hell0 w0rld'

оценка (8-14) / 22 == -27,3%


7
Отпечатки: привет, мир
TerryA

14
Printshell0 w0rld
SteeveDroz

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

2

R: 100%

Не настолько творчески, но может озадачить некоторых людей:

sum(data.frame(rep(1,10),stringAsFactors=TRUE))

Как вы думаете, это результат?

Редактировать :

Ответ был 20. Из-за отсутствия sв stringAsFactors(вместо stringsAsFactors) аргумент не распознается, поэтому функция создает новый столбец с именем stringAsFactors. Из-за повторного использования вектора столбец содержит 10 раз, TRUEкоторые преобразуются в1 в сумме s, следовательно, всего 20, а не 10.

Этот ответ не был дан в комментариях. Было дано 3 ответа (все говорят 10более или менее). Следовательно, оценка 100%, я думаю.


Возвращает значение 10.
SteeveDroz

1
Первоначально я думал, что он вернется 10. Подлый ... отказ от этого "s" действительно меняет вещи ...
Дейсон

1
@Dason Теперь я понимаю, что подавление второго было бы еще более хитрым: можно было бы предположить, что частичное соответствие исправит это, но оказывается, что это не так.
plannapus

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz

100%! Congrats!
Редтуна

2

Tcl

Вдохновленный Угореном

foreach c [split [lindex $argv 0] {}] {
    # Don't print the invalid chars & and \
    if {$c in "& \\"} {continue}
    puts -nonewline $c
}

Извините, забыл пример строки. Хорошо, беги как

./charfilter.tcl 'Привет и прощай, мир!'

Редактировать Направо решение: Это не фильтрует вообще. ( 6x )
Макс неправильный ответ: 4x
Всего ответов: 10
Оценка: -0,2


5
Он просто печатает свой аргумент и фактически не фильтрует.
марин

3
он печатает свои аргументы без " ", "&", "\".
Паскальхейн

Это конец игры , пожалуйста, оцените себя с комментариями, которые выше этого. Отредактируйте свой контент и добавьте хороший ответ, количество хороших ответов, количество людей, которые в основном ответили на одно и то же, общее количество ответов и ваш балл . Не забывайте, что 2 рядом с комментарием означает 3 ответа. Комментарий свободно ниже этого.
SteeveDroz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.