• errorista
    #51
    Letezik JS-ben irt JS ertelmezo :). De talan az eval-nak azt a funkciojat, hogy osszefuz ket stringet, meg lehet eval nelkul is oldani. Most mar nehezen tudok elszakadni elobbi gondolatmenetemtol:

    SPOILER! Kattints ide a szöveg elolvasásához!
    function muvelet(s)
    {
    ha s egy "elotti Q mogotti" tipusu string, akkor s-t "elottielotti Q mogottimogotti" tipusuva alakitja
    }
    a = 'elotti Q mogotti'; //a egy string, ' Q ' egy elvalaszto karakter szerepet tolti be
    muvelet(a);
    print(a);

    Ahol az elotti helyere beirjuk, az elotti elott, a mogotti helyere pedig a mogotti mogott levo forraskodot, es ha szerencsenk van, a nyelv tudni fogja, mikor string, es mikor kod.
    A forraskodunk elottielotti Q mogottimogotti alaku lesz, a kiprintelt szoveg is.

    Egyre kevesebb eselyet latom, hogy ebbol egy mukodo JS kodot kapjak (bar hemzsegnek a neten).

    Ugy nezem, korulbelul ugyanaz, mint mit te is irtal:

    Az általam látott quine-okban a dolog úgy néz ki konkrétan, hogy van egy ,,gyár'' (mindenféle stringkezelő és kiírató függvények, tehát lényegében maga a program), és van egy tervrajz (egy hosszú string). A teljes quine program forráskódja nem más, mint a jól definiált stringkezelő-és-kirató függvény (gyár), plusz a tervrajz-string **együtt egy fájlban**.

    A stringkiírató résznek (gyárnak) argumentumul adjuk a nagy stringet (tervrajzot), erre ez kiírja majdnem a teljes program forráskódját, kivéve magát a tervrajz-stringet. Tehát a gyár a tervrajz alapján új gyárat duplikál, de a tervrajz reprodukálása kimarad. Éppen ezért a tervrajz-stringben van egy ,,copy''-metakarakter, amely a ,,gyárat'' arra utasítja, hogy azon a ponton magát a teljes tervrajz másolatát ,szúrja bele' az éppen születőfélben lévő új gyárba. Az eredmény az, hogy a gyárból és a tervrajzból alló rendszer egy új gyárat rak össze, és a tervrajz is lemásolódik, tehát ugyanolyan új rendszer képződik a régi mellé.