Mit dem folgenden Python 3-Skript:
def greet():
print("Hello, world!")
greet()
Stellen Sie dieser Textdatei einige Zeilen voran , damit sie sowohl als Python-Programm ausgeführt als auch als C ++ - Programm kompiliert und ausgeführt werden kann, das die gleiche Ausgabe erzeugt Hello, world! (einschließlich der neuen Zeile am Ende):
$ python3 bilingual.py.cpp
Hello, world!
$ g++ bilingual.py.cpp && ./a.out
Hello, world!
Die Lösung wird anhand der Anzahl der Nicht-Leerzeichen des gesamten Programms bewertet, einschließlich des Python-Skripts:
sed 's/\s//g' bilingual.py.cpp|wc -c
Antworten:
Ergebnis 116
Voranstellen:
Der Backslash
\
des Präprozessors zieht die böse:
enthaltende Zeile in ein nicht verwendetes Makro. Probieren Sie es hier aus .Dank der Antwort von edc65 für den Hinweis zu implizitem int in C ++ 4.
Dank PieCot Antwort für die Annahme ,
<cstdio>
über<stdio.h>
.Danke an Leon für den Vorschlag, das
X
im Original zu entfernen#define X\
.quelle
Ergebnis 119
(Danke @Linus für die Byteanzahl)
(1 Byte gespeichert dank @Conor O'Brien) (1 Byte gespeichert dank @PieCot)
Ich zählte die Bytes noch einmal von Hand und fand 113. Vielleicht ist es diesmal richtig.Nein, ist es nichtAnmerkungen: stdio und puts sind in C ++ noch am Leben und funktionieren einwandfrei. Der fehlende Int-Typ ist in C ++ 4 gültig. Test
quelle
0
in Zeile 2 entfernen . Test.Ergebnis
131 130134Die Zeilen, die vorangestellt werden müssen, sind:
Und der resultierende Code:
Testen
quelle
#import
ist nicht gültig C ++:
Ergebnis
110104Die Antwort von Linus verbessern :
Test als C ++
Testen Sie als Python
quelle
Ergebnis 136
Nur für die Aufzeichnungen:
Eine andere (weniger effiziente) Möglichkeit, mit dem Dickdarm umzugehen.
quelle
cstdio
aber beachtet werden.tr -d '[:space:] ' < bilingual.py.cpp | wc -c
Ich erhalte 128, während dieser Befehl:tr -d '[:blank:] ' < bilingual.py.cpp | wc -c
136