Open Grid

Skrypt, który wypisuje swój własny kod

K0nkur$

Pierwsze najciekawsze rozwiązanie w moim subiektywnym odczuciu otrzyma nagrodę w wysokości 12,000 zł*

Słowem wstępu, odkąd subskrybuję Newsletter HackFwd do mojej skrzynki trafiają linki do interesujących wykładów skierowanych dla młodych Startupów. W dniu dzisiejszym zainteresował mnie wykład Standing on the soulders of giants. Nie zamierzam streszczać całego wykładu, który i tak trzeba obejrzeć, ale na potrzeby konkursu skorzystam z ich autorytetu i napomnę m.in. o ciekawej roli zagadek algorytmicznych i ich zdawałoby się zerowym odniesieniu do rzeczywistości. Otóż okazuje się, że jak się głębiej nad tym zastanowić to pozwalają one skupić się na poznaniu / tworzeniu efektywnych rozwiązań rzeczywistych problemów bez narzutu nieistotnych szczegółów.

Dzisiejszy wpis dedykuje starej wprawce programistycznej pochodzącej ze wspomnianej w wykładzie książki Etudes for Programmers

Zadanie

Napisz program (kompletnie oderwany od rzeczywistości?), który wypisze swój własny kod źródłowy. Wydawałoby się banalne zadanie, ale ... To zadanie dzisiaj dedykuje wam. Dodam jedynie małe urozmaicenie:

  • Żeby nie było zbyt łatwo, program należy napisać w PHP, czyli w języku, w którym prawdziwi programiści nie programują
  • Wygrać może nawet rozwiązanie wykorzystujące właściwości samego języka jak np. samo-modyfikujący się kod
  • Rozwiązania wykorzystujące odwołania do systemu plików raczej mnie nie powalą.
  • Rozwiązania należy umieszczać w komentarzach do tego wpisu do 2011-05-03 23:59:59

* poddanych kompresji algorytmem "brykiet" NBP.

Dodano 02 may 2011 o 15:27:09 w kategorii Science, Techblog

Comments to "Skrypt, który wypisuje swój własny kod":

1 | AdamK

02 may 2011, 16:08:58

Pustego komentarza nie da się dodać, więc opiszę moje rozwiązanie: Moje rozwiązanie to pusty plik php (0 bajtów długości).

2 | Marcin

02 may 2011, 16:15:19

favicon

http://pastie.org/private/r6qtkd4zfii4bnthakdiq

3 | OpenGrid

02 may 2011, 16:17:33

@AdamK nice try, ale Twój skrypt nic nie wypisuje
@Marcin "Rozwiązania wykorzystujące odwołania do systemu plików raczej mnie nie powalą."

4 | sebcioz

02 may 2011, 17:29:37

favicon

Ułatwienie: słowo klucz "quine" w google

Poproszę nagrodę ;D

https://gist.github.com/951780

5 | mroq

02 may 2011, 18:38:40

favicon

eval też nie powala ;;)

6 | Remigiusz 'lRem' Modrzejewski

02 may 2011, 18:50:28

,?php //Tutaj dowolny kod

Wygrałem? ;)

7 | Winhelp

02 may 2011, 19:03:38

A może być w HQ9+? W tym programiści też normlanie nie programują :P

8 | OpenGrid

02 may 2011, 22:28:47

@sebcioz a gdzie kod?
@mroq dobre jako przykład na ilustrację eval jako element języka. Jeżeli to samo uda się bez eval to możemy mieć zwycięzce.
@Remigiusz to raczej nie jest kod interpretowany
@Winhelp jak przetłumaczysz na PHP

9 | sebcioz

02 may 2011, 22:53:31

favicon

@OpenGrid w komentarzu :D? https://gist.github.com/951780

Jeżeli nie wystarczy to mogę bez eval też przepisać ;D

10 | Gancuś

03 may 2011, 09:37:58

favicon

kazdy skrypt wyswietli swoj kod o ile wylaczymy interpreter, ale chyba nie o to chodzi

11 | OpenGrid

03 may 2011, 14:11:28

@Gancuś to nie o to chodzi
Myślałem, że do tego czasu już będzie fajne rozwiązanie, zwłaszcza, że Google może być pomocne w tym temacie. Póki najbliżej rozwiązania jest sebcioz, ale eval rujnuje wszystko.

12 | koziolek

03 may 2011, 16:31:58

favicon

<?php highlightfile(\\FILE\\_); ?>

Z bonusowym kolorowaniem składni! :)

13 | sebcioz

03 may 2011, 16:51:29

favicon

eh. mówisz masz :D https://gist.github.com/953463

14 | AdamK

03 may 2011, 20:29:29

@OpenGrid: skrypt który opisałem ma długość 0 bajtów, tak więc jego wypisanie to wypisanie niczego, co też ten skrypt z sukcesem wykonuje. Poproszę nagrodę :)

15 | OpenGrid

03 may 2011, 20:47:59

@sebcioz wygrywa konkurs. Gratulacje!

16 | sebcioz

03 may 2011, 21:37:47

favicon

To teraz poproszę moją nagrodę. Przymuję na paypalu ;)

17 | mina86

05 may 2011, 01:37:24

AdamK, ciekawe, bo pomyślałem o dokładnie tym samym. ;) Działa w każdym języku skryptowym jaki znam.

A tymczasem po dysku walało mi się: https://gist.github.com/956241.

18 | a_patch

06 may 2011, 12:43:10

Raczej ciężko będzie "przelać" nagrodę na paypal...

19 | DOH

10 may 2011, 21:49:46

Raczej napisał bym:
<?php
readfile(FILE);

Add comment

Textile Lite włączony ( available tags ): *strong* | **bold** | _em_ | __italic__ | "link":http:// | bq. cytat.
code