Este é o primeiro de uma série de quebra-cabeças em C ++ para você. Espero que você goste.
Então, o quebra-cabeça no.1:
Dado o seguinte programa:
#include <iostream>
int main()
{
const int a=1;
const int b=2;
const float c=0.5;
std::cout << a/b-a*c;
}
Insira algum código em uma única nova linha em qualquer lugar do programa para que a saída seja 0. A nova linha conterá no máximo 18 caracteres (incluindo espaços) e o restante das linhas permanecerá inalterado. Para ficar claro, aqui está um exemplo de um novo código válido:
#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;
}
Uma nova linha com 15 caracteres foi inserida, então está tudo bem. No entanto, isso não resolve o problema.
Se isso é muito simples para você, não se preocupe, mais está chegando !!
code-challenge
programming-puzzle
Bogdan Alexandru
fonte
fonte
Respostas:
deve funcionar bem e tem o mesmo comprimento.
fonte
#define int float
é realmente um comportamento indefinido. Você não tem permissão para dar um novo significado às palavras-chave.#define int ERROR
para me forçar a usar o equivalente emint32_t
vez de tipos internos. No momento em que chegueiint main()
, já havia esquecido a macro e me perguntado por que diabos meu código não seria compilado.Podemos nos livrar de a = 1 movendo-o para outro escopo:
Acho que são 13 caracteres. Ou melhor ainda, obtenha um novo
a
que também resulte em 0:São 11 caracteres
fonte
1 nova linha, 12 novos caracteres
fonte
Então
#define a 0
, Feito. Vi que foi publicado - sem surpresa.Surpreendentemente, isso não foi publicado:
14 caracteres
Isso deve fazer, certo?
fonte
17 caracteres.
A propósito, o programa original não é compilado no MSVC, que reclama que
main
não tem um tipo de retorno.fonte
18, incluindo nova linha
fonte
float
é uma palavra-chave).15 caracteres.
fonte
14 caracteres.
fonte
17 caracteres.
fonte
São 17 caracteres, então cabe.
fonte
Eu não sei C ++, no entanto, com base na pergunta, você não pode simplesmente inserir uma linha para simplesmente gerar 0? a pergunta especifica que a saída deve ser 0, não especifica que você deve alterar a saída para 0.
(Eu tenho 0 pista sobre C ++, talvez alguém possa usar esse conceito)
fonte
12 caracteres, semelhante à solução da mob
outras combinações também funcionam, como
#define a c
ou#define c 0
fonte
Eu sei que não é código-golfe , mas eu pareço estar usando esse chapéu hoje!
--uma;
cinco caracteres, incluindo a nova linha;
fonte
a
éconst
.c ++ seja qual for ...
executar através de:
fonte
Uma variante da resposta do Sr. Lister, mas um pouco menos óbvia.
fonte
Que tal esses 11 caracteres ...
fonte
int a
antes doif
não está sendo inicializado, portanto,a
pode ter algum valor.a
.http://codepad.org/N06weGJc
fonte