Dies ist das erste einer Reihe von C ++ - Rätseln für Sie. Ich hoffe, Sie werden es genießen.
Also, Puzzle Nr. 1:
Angesichts des folgenden Programms:
#include <iostream>
int main()
{
const int a=1;
const int b=2;
const float c=0.5;
std::cout << a/b-a*c;
}
Fügen Sie irgendwo im Programm Code in eine einzelne neue Zeile ein, sodass die Ausgabe 0 lautet. Die neue Zeile enthält höchstens 18 Zeichen (einschließlich Leerzeichen), und die restlichen Zeilen bleiben unverändert. Hier ist ein Beispiel für einen gültigen neuen Code:
#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;
}
Eine neue Zeile mit 15 Zeichen wurde eingefügt, damit es in Ordnung ist. Es löst jedoch nicht das Problem.
Wenn dir das zu einfach ist, mach dir keine Sorgen, es kommt noch mehr !!
code-challenge
programming-puzzle
Bogdan Alexandru
quelle
quelle
Antworten:
sollte auch funktionieren und ist gleich lang.
quelle
#define int float
ist eigentlich undefiniertes Verhalten. Sie dürfen Schlüsselwörtern keine neue Bedeutung geben.#define int ERROR
mich gezwungen, das Äquivalent vonint32_t
anstelle von eingebauten Typen zu verwenden. Als ich herumkamint main()
, hatte ich das Makro vergessen und mich gefragt, warum zum Teufel mein Code nicht kompiliert werden konnte.Wir können a = 1 loswerden, indem wir es in einen anderen Bereich verschieben:
Das sind meiner Meinung nach 13 Zeichen. Oder besser noch eine neue
a
, die auch 0 ergibt:Das sind 11 Zeichen
quelle
1 neue Zeile, 12 neue Zeichen
quelle
Also
#define a 0
, fertig. Ich habe gesehen, dass das gepostet wurde - nicht überraschend.Überraschenderweise wurde dies nicht gepostet:
14 Zeichen
Das sollte doch reichen, oder?
quelle
17 Zeichen.
Das ursprüngliche Programm wird übrigens nicht unter MSVC kompiliert, was sich darüber beschwert, dass
main
es keinen Rückgabetyp gibt.quelle
18, einschließlich Newline
quelle
float
ein Schlüsselwort ist).15 Zeichen.
quelle
14 Zeichen.
quelle
17 Zeichen.
quelle
Es sind 17 Zeichen, also passt es einfach.
quelle
Ich kenne C ++ nicht, aber auf der Grundlage der Frage, konnten Sie nicht einfach eine Zeile eingeben, um einfach 0 auszugeben? Die Frage gibt an, dass die Ausgabe 0 sein soll. Sie gibt nicht an, dass Sie die Ausgabe auf 0 ÄNDERN müssen.
(Ich habe keine Ahnung von C ++, vielleicht kann jemand dieses Konzept verwenden)
quelle
12 Zeichen, ähnlich der Lösung von Mob
andere kombinationen funktionieren auch, wie
#define a c
oder#define c 0
quelle
Ich weiß, dass es kein Code-Golf ist , aber ich scheine diesen Hut heute zu tragen!
--ein;
fünf Zeichen, einschließlich der Newline;
quelle
a
istconst
.C ++ was auch immer ...
laufen über:
quelle
Eine Variante der Antwort von Herrn Lister, aber etwas weniger offensichtlich.
quelle
Wie wäre es mit diesen 11 Zeichen ...
quelle
int a
vorherif
nicht initialisiert wird, alsoa
keinen Wert haben könnte.a
.http://codepad.org/N06weGJc
quelle