Spiel: Kontext gesucht
-
SeppJ schrieb:
edit: Grr, 15 Minuten und keine Lösung
. Ich lasse das für heute mal vorerst ruhen…
Ja, 2 ist etwas schwerer. Eine vollständige kompilierbare Lösung mit main bringe ich auf 92 Zeichen unter (erzeugt allerdings ein paar Warnings).Bei meinem Code im Beispiel muss man sich einfach noch ein main um alles denken: http://ideone.com/m18onC. Ich komme mit einem typedef weniger als deine Korrektur aus, weil ich den Konstruktor benutze.
@cooky451: Gilt auch nicht.
-
Gratulation, SeppJ.
Ich finde echt krank, was die armen Compiler alles machen müssen um Templates zu parsen.
-
willspielen schrieb:
SeppJ schrieb:
edit: Grr, 15 Minuten und keine Lösung
. Ich lasse das für heute mal vorerst ruhen…
Ja, 2 ist etwas schwerer. Eine vollständige kompilierbare Lösung mit main bringe ich auf 92 Zeichen unter (erzeugt allerdings ein paar Warnings).Ich hatte wenige Sekunden nachdem ich obiges schreib die Erleuchtung und hab's oben reineditiert.
Es fällt mir schwer, mich mit einem Rätsel zu revanchieren, da ich mal annehme, dass du GotW kennst und dir daher etwas wie
&&&&&
oder
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(das erste ist übrigens schwieriger) bereits bekannt ist. Rätsel stellen ist schwieriger als lösen.^
viele edits: Rechtschreibung ist schwer^
-
Den Gotw kenne ich schon, aber wir können den auf C++11 ausweiten.
......(Stimmt, Rätsel stellen ist leider schwieriger als lösen)
-
template <typename... Args> void f(Args......);
-
:::?
-
-
()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()();//beliebig viele?
-
volkard schrieb:
spoiler http://pastebin.de/33063
Ist falsch.
cout<<(true?1:::max(2,3))ist
cout<<(true?1:: :max(2,3))aka Syntax-Error.
(siehe http://www.gotw.ca/gotw/078.htm)
-
volkard schrieb:
()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()();//beliebig viele?
Spoiler: http://ideone.com/SwQliG.
:::ist immer noch offen.
-
willspielen schrieb:
volkard schrieb:
spoiler http://pastebin.de/33063
Ist falsch.
cout<<(true?1:::max(2,3))ist
cout<<(true?1:: :max(2,3))aka Syntax-Error.
(siehe http://www.gotw.ca/gotw/078.htm)
Schockschwerenot. Jo. Bin Ratlos.
-
Ich bringe das Programm mit
:::auf 29 Zeichen. Tipp: Es kommt kein ternärer Operator vor.
-
willspielen schrieb:
:::?
const int N=3; int main() { int i<:::N]; }
-
edit: Och, Shade war schneller

-
Ich fände Erklärungen teilweise auch gut. Für mich sieht das nach dickem Syntaxfehler aus, warum kompiliert das?
-
willspielen schrieb:
:::const int x=1,m<:::x:>={};Urgh, viel zu langsam

-
Eisflamme schrieb:
Ich fände Erklärungen teilweise auch gut. Für mich sieht das nach dickem Syntaxfehler aus, warum kompiliert das?
Immer bei ::: pars der Compiler zu :: :
Aber
http://www.imb-jena.de/~gmueller/kurse/c_c++/c_replac.htmlDa tut erst der Präprozessor ein : fressen. Und der Compiler kommt erst nachher. dran (dieser Satz leidet unter vorzeitiger Inperpunktion)
-
Eisflamme schrieb:
Ich fände Erklärungen teilweise auch gut. Für mich sieht das nach dickem Syntaxfehler aus, warum kompiliert das?
Das ist ein Digraph.
http://en.wikipedia.org/wiki/Digraphs_and_trigraphsIch war gerade auch schwer verwundert, dass ideone das compiliert, beim GCC sind mindestens die Trigraphs nämlich standardmäßig ausgeschaltet.
-
Das ist doch... also das... danke. Ich bin da Mal raus.
-
Eisflamme schrieb:
Ich fände Erklärungen teilweise auch gut. Für mich sieht das nach dickem Syntaxfehler aus, warum kompiliert das?
Digraph.
Statt [ darfst du auch <: schreiben.
Das Problem bei der Aufgabe war, dass der C++ Parser Greedy ist. dh ein ::: kann nie als : :: gelesen werden wenn das erste : nicht bereits Teil eines Tokens ist. Deshalb geht Volkards Idee mit dem ternaeren operator nicht. Denn ::: ist :: : und nicht : ::
Loesung ist nun das erste : als Teil eines Tokens zu nehmen und da gibt es nur digraphs. Der Parser liest <: und sagt: fertig! und danach kommt dann ::