wtorek, 10 sierpnia 2010

Pascal w C

Ostatnia zagadka została poprawnie rozwiązana przez dwie osoby. Pierwsze działające rozwiązanie nadesłał Adam (podpisujący się w komentarzach jako Rekin). Później, krótsze rozwiązanie zaproponował Railis. Gratulacje.


Dzisiaj zagadka bardziej ze znajomości C, niż C++. Kompilator C++ jednak też powinien akceptować rozwiązanie. Zagadka jest stara jak świat a jej treść brzmi następująco:

Spraw, aby poniższy kod został skompilowany przez kompilatory C/C++:

begin
        writeln("Hello world");
end;

I wyprodukował napis: Hello World, po czym zakończył swoją pracę. Oczywiście bez modyfikacji tychże linijek.
Tradycyjnie już: miłej zabawy.

PS: Wiem, że "pascalowość" tegoż kodu jest troszeczkę naciągana. ;)

8 komentarzy:

  1. #include
    #define writeln printf
    #define begin
    #define end printf("\n")
    int main()
    {
    begin
    writeln("Hello World!");
    end;
    }

    OdpowiedzUsuń
  2. Nie tak. :)
    Chodziło dokładnie o ten kod:
    begin
    writeln("Hello world");
    end;

    Nie dopisujesz nic za. Tylko przed.

    OdpowiedzUsuń
  3. Ale mój błąd, nie sprecyzowałem.

    OdpowiedzUsuń
  4. No to to jest w sumie to samo tyle, że trzeba define troche zmienic :)

    #include
    #define writeln printf
    #define begin main(){
    #define end; printf("\n");}

    begin
    writeln("Hello World!");
    end;


    Gra i bucy...

    OdpowiedzUsuń
  5. Wkurzają mnie ten zabezpieczenia przed xss'em... nie pokazuje mi niczego po znaku '<'.

    OdpowiedzUsuń
  6. @Rekin: a mnie nie wkurzają, za to wkurza mnie brak <pre>. Co do zagadki: gdyby można było dopisywać przed i po to można by pascalowy kod dać w komentarz. :P Moje rozwiązanie:

    #include <stdio.h>

    #define begin {
    #define end }

    void writeln(const char s[])
    {
        printf("%s\n", s);
    }

    int main()
    begin
        writeln("Hello world");
    end;

    OdpowiedzUsuń
  7. Właśnie... pre też brakuje. W sumie to można dodawać kody programu na wklej.org i wklejać linki. W każdym razie czekamy na następne zagadki :-)

    OdpowiedzUsuń
  8. Tylko jakieś konkretniejsze :D. Z tym Pascalem... tracisz formę Mateusz!

    OdpowiedzUsuń