• physis
    #43
    Kedves Erroista,
    Csak az számít csalásnak, ha a program beolvassa a saját forráskódját fájlból, és azt írja ki. Tehát pl. egy quine nevű fájlban ha efféle program áll (most itt egy ad hoc képzelt ,,keverék'' programnyelven):


    sourceCode: string;
    sourcecode := readFile("quine");
    print sourceCode;


    az így ,,csalás'', ez nem számít igazi quine-nak. Az a lényeg, hogy az alábbi problémasorba beleütközzék az ember:


    print "";


    ez nem jó quine, mert semmit sem ír ki , míg a forráskódja legalábbis egy print-et tartalmaz.


    print "print";


    ez sem jó quine, mert csak egy "print"-et ír ki, míg a forráskódja ennél azért immár hosszabb.


    print "print "print "";


    látszik, hogy mindig rendre ,,le vagyunk maradva'' (két printet ír ki, míg a forráskód három ilyen beágyaott printből áll), szóval mindig lemarad a Matrjoska-baba legkülső babája.

    A probléma tehát - programnyelvtől függetlenül - alapvetően egy matematikai, logikai kérdés. Erre van megoldás (absztrakt módon lehet úgy tekinteni, hogy tkp. egy függvény fixpontját keressük, de a gyár-tervrajz hasonlat szemléletesebb lehet), és az élet is ezt használja.