Это первая из серии головоломок C ++ для вас. Надеюсь, вам понравится.
Итак, головоломка № 1:
Учитывая следующую программу:
#include <iostream>
int main()
{
const int a=1;
const int b=2;
const float c=0.5;
std::cout << a/b-a*c;
}
Вставьте некоторый код в одну новую строку в любом месте внутри программы так, чтобы вывод был равен 0. Новая строка будет содержать не более 18 символов (включая пробелы), а остальные строки останутся неизмененными. Чтобы было понятно, вот пример правильного нового кода:
#include <iostream>
int main()
{
const int a=1;
const int b=2;
int* p = NULL;
const float c=0.5;
std::cout << a/b-a*c;
}
Новая строка с 15 символами была вставлена, так что все в порядке. Однако это не решает проблему.
Если это слишком просто для вас, не волнуйтесь, еще не все!
code-challenge
programming-puzzle
Богдан Александру
источник
источник
Ответы:
должен работать так же и имеет одинаковую длину.
источник
#define int float
на самом деле неопределенное поведение. Вам не разрешено придавать ключевым словам новое значение.#define int ERROR
чтобы заставить себя использовать эквивалентint32_t
вместо встроенных типов. К тому времени, когда я нашел времяint main()
, я забыл о макросе и подумал, почему, черт возьми, мой код не скомпилируется.Мы можем избавиться от = 1, переместив его в другую область:
Это я думаю 13 персонажей. Или еще лучше получить новый,
a
который также приводит к 0:Это 11 символов
источник
1 новая строка, 12 новых символов
источник
Итак
#define a 0
, Готово. Я видел, что было опубликовано - неудивительно.Удивительно, но это не было опубликовано:
14 символов
Что должно сделать, верно?
источник
17 символов
Кстати, оригинальная программа не компилируется под MSVC, которая жалуется, что
main
не имеет возвращаемого типа.источник
18, включая перевод строки
источник
float
является ключевым словом).15 символов
источник
14 символов.
источник
17 символов
источник
Это 17 символов, так что это просто подходит.
источник
Я не знаю C ++, однако, основываясь на этом вопросе, не могли бы вы просто ввести строку, чтобы просто вывести 0? вопрос указывает, что вывод должен быть 0, но не указывает, что вы должны ИЗМЕНИТЬ вывод на 0.
(У меня есть 0 подсказок на C ++, возможно, кто-то может использовать эту концепцию, хотя)
источник
12 символов, аналогично решению моба
другие комбинации также работают, как
#define a c
или#define c 0
источник
Я знаю, что это не код-гольф , но мне кажется, что я сегодня в этой шляпе!
--a;
пять символов, включая перевод строки;
источник
a
естьconst
.с ++, что угодно ...
запустить через:
источник
Вариант ответа мистера Листера, но немного менее очевидный.
источник
Как насчет этих 11 символов ...
источник
int a
beforeif
не инициализируется, поэтомуa
может иметь любое значение.a
.http://codepad.org/N06weGJc
источник