Este es el primero de una serie de rompecabezas de C ++ para ti. Espero que lo disfrutes.
Entonces, rompecabezas no.1:
Dado el siguiente programa:
#include <iostream>
int main()
{
const int a=1;
const int b=2;
const float c=0.5;
std::cout << a/b-a*c;
}
Inserte algún código en una sola línea nueva en cualquier lugar dentro del programa para que la salida sea 0. La nueva línea contendrá MÁS DE 18 caracteres (incluidos los espacios), y el resto de las líneas permanecerán sin modificaciones. Para ser claros, aquí hay un ejemplo de un nuevo 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;
}
Se insertó una nueva línea con 15 caracteres, por lo que está bien. Sin embargo, no resuelve el problema.
Si esto es demasiado simple para ti, no te preocupes, ¡viene más!
code-challenge
programming-puzzle
Bogdan Alexandru
fuente
fuente
Respuestas:
debería funcionar también y tiene la misma longitud.
fuente
#define int float
En realidad es un comportamiento indefinido. No está permitido dar a las palabras clave un nuevo significado.#define int ERROR
para obligarme a usar el equivalente de enint32_t
lugar de los tipos incorporados. Cuando lleguéint main()
, me había olvidado de la macro y me preguntaba por qué diablos mi código no se compilaría.Podemos deshacernos de a = 1 moviéndolo a otro ámbito:
Esto es creo 13 personajes. O mejor aún, obtenga una nueva
a
que también resulte en 0:Eso son 11 caracteres
fuente
1 nueva línea, 12 nuevos caracteres
fuente
Entonces
#define a 0
, hecho. Vi que fue publicado, como era de esperar.Sorprendentemente, esto no fue publicado:
14 caracteres
Eso debería hacer, ¿verdad?
fuente
17 caracteres
Por cierto, el programa original no se compila bajo MSVC, que se queja de que
main
no tiene un tipo de retorno.fuente
18, incluyendo nueva línea
fuente
float
es una palabra clave).15 caracteres
fuente
14 caracteres.
fuente
17 caracteres
fuente
Tiene 17 caracteres, así que simplemente encaja.
fuente
No conozco C ++, sin embargo, basándome en la pregunta, ¿no podría simplemente ingresar una línea para simplemente generar 0? la pregunta especifica que la salida debe ser 0, no especifica que debe CAMBIAR la salida a 0.
(Tengo 0 pistas en C ++, aunque quizás alguien pueda usar este concepto)
fuente
12 caracteres, similar a la solución de la mafia
otras combinaciones también funcionan, como
#define a c
o#define c 0
fuente
Sé que no es código golf , ¡pero parece que hoy llevo ese sombrero!
--una;
cinco caracteres, incluida la nueva línea;
fuente
a
esconst
.c ++ lo que sea ...
ejecutar a través de:
fuente
Una variante de la respuesta del señor Lister pero un poco menos obvia.
fuente
¿Qué tal estos 11 caracteres ...
fuente
int a
antes delif
no se está inicializando, por lo quea
podría tener algún valor.a
.http://codepad.org/N06weGJc
fuente