2010-12-21 22 views
5

Another SO question wspomina o fantastycznym quine autorstwa Yusuke Endoh. Quine to program komputerowy, który produkuje kopię własnego kodu źródłowego jako jedynego wyjścia; ten robi to z niespodzianką. A must-see.Jak działa ta wspaniała praca?

Ale nie wiem, jak to działa. Jakieś wskazówki?

+0

Komentarze na temat tego wpisu są przyzwoitym początkiem. –

+1

+1 za kalambur "twist". Jest taki YouTube, który pokazuje, że kroczy o 1 stopień, obracając się o 360 stopni [tutaj] (http://www.youtube.com/watch?v=ktq-22iq-Po), co jest zabawne do oglądania. Zauważ, że jedyny inny migoczący tekst znajduje się w lewym górnym rogu, gdzie zdefiniowano 'v'. – RBerteig

Odpowiedz

6

Po pierwsze, należy zwrócić uwagę, że linia v= i globus ASCII to jedyne fragmenty kodu, które zmieniają się w każdym pokoleniu. To daje nam odrobinę wskazówki, co naprawdę się tutaj dzieje.

Podstawową zasadą jest to, że model globus został zakodowany z Zlib::Deflate w pierwszej połowie kodu, a druga połowa rozszerza ją Zlib::Inflate, odczytuje go i wyciąga kulę ASCII w ramach nowego kodu z nowym v wartość. W zmianach 45 ° nie ma nic szczególnie specjalnego; kod narysuje kulę ziemską przy dowolnym obrocie, który lubisz. (W rzeczywistości zajmuje argument w wierszu poleceń określający liczbę stopni, jeśli chcesz.)

Aby uzyskać więcej informacji na temat implementacji, polecam rozszerzenie kodu źródłowego i śledzenie za jego pośrednictwem, z podstawową wiedzą na temat tego, w jaki sposób quine jest zaprojektowany :)

Powiązane problemy