Ceci est le premier d'une série de puzzles C ++ pour vous. J'espère que vous apprécierez.
Alors, puzzle n ° 1:
Étant donné le programme suivant:
#include <iostream>
int main()
{
const int a=1;
const int b=2;
const float c=0.5;
std::cout << a/b-a*c;
}
Insérez du code sur une seule nouvelle ligne n'importe où dans le programme afin que la sortie soit 0. La nouvelle ligne contiendra AU PLUS 18 caractères (espaces compris) et le reste des lignes ne sera pas modifié. Pour être clair, voici un exemple d'un nouveau code valide:
#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;
}
Une nouvelle ligne avec 15 caractères a été insérée, donc ça va. Cependant, cela ne résout pas le problème.
Si c'est trop simple pour vous, ne vous inquiétez pas, d'autres arrivent !!
code-challenge
programming-puzzle
Bogdan Alexandru
la source
la source
Réponses:
devrait également fonctionner et est de la même longueur.
la source
#define int float
est en fait un comportement indéfini. Vous n'êtes pas autorisé à donner un nouveau sens aux mots clés.#define int ERROR
pour me forcer à utiliser l'équivalent deint32_t
au lieu des types intégrés. Au moment où je me suis renduint main()
, j'avais oublié la macro et je me demandais pourquoi diable mon code ne compilerait pas.Nous pouvons nous débarrasser de a = 1 en le déplaçant dans une autre portée:
C'est je pense 13 caractères. Ou mieux encore, obtenez un nouveau
a
qui se traduit également par 0:C'est 11 caractères
la source
1 nouvelle ligne, 12 nouveaux caractères
la source
Alors
#define a 0
, c'est fait. J'ai vu que cela avait été publié - sans surprise.Étonnamment, cela n'a pas été publié:
14 caractères
Cela devrait faire, non?
la source
17 caractères.
Par ailleurs, le programme d'origine ne compile pas sous MSVC, qui se plaint de
main
ne pas avoir de type de retour.la source
18, y compris la nouvelle ligne
la source
float
est un mot clé).15 caractères.
la source
14 caractères.
la source
17 caractères.
la source
C'est 17 caractères donc ça va juste.
la source
Je ne connais pas le C ++, mais sur la base de la question, ne pourriez-vous pas simplement entrer une ligne pour simplement sortir 0? la question spécifie que la sortie doit être 0, elle ne spécifie pas que vous devez CHANGER la sortie à 0.
(J'ai 0 indice sur C ++, peut-être que quelqu'un peut utiliser ce concept cependant)
la source
12 caractères, similaire à la solution de mob
d'autres combinaisons fonctionnent également, comme
#define a c
ou#define c 0
la source
Je sais que ce n'est pas du golf de code , mais il semble que je porte ce chapeau aujourd'hui!
--une;
cinq caractères, y compris la nouvelle ligne;
la source
a
estconst
.c ++ quoi que ...
courir via:
la source
Une variante de la réponse de M. Lister mais un peu moins évidente.
la source
Que diriez-vous de ces 11 caractères ...
la source
int a
avant avantif
n'est pas initialisé, ila
pourrait donc avoir n'importe quelle valeur.a
.http://codepad.org/N06weGJc
la source