Sorry dat ik deze thread weer helemaal omhoog schop, maar ik ben me de afgelopen week aan het verdiepen in dit soort programma's. Programma's die hun eigen source als output heeft.
Voor een school opdracht moesten we een compiler aanpassen en om die aanpassing te testen (nieuwe grammer parser erin zetten) heb ik een aantal kleine programma's gemaakt. Nu wist ik al dat quines bestonden, maar had ik er alleen nog nooit 1 geschreven. Ik besloot dus om een quine te gaan schrijven in de taal waarvoor die compiler werkte, Asterix, een soort Pascal met C trekjes en heel erg beperkt.
Dat is toen na 2 dagen gelukt. Nu net heb ik hetzelfde gedaan, alleen in PHP. De eerste poging faalde door PHP's gewoonte om vars te parsen tussen " " tekens. Maar na wat omdwalingen heb ik een workaround gevonden die zelfs die eigenschap nog een beetje gebruikt.
PHP:
1
2
3
4
| <?php
$a[]='<?php';
$a[]='echo $a[0]."\n";foreach($a as $b)echo "\$a[]=\'".str_replace(chr(39),chr(92).chr(39),$b)."\';\n";echo $a[1]."\n";?>';
echo $a[0]."\n";foreach($a as $b)echo "\$a[]='".str_replace(chr(39),chr(92).chr(39),$b)."';\n";echo $a[1]."\n";?> |
Hij was eerst wat langer, maar na wat inkorten heb ik hem een stuk kleiner gekregen, toch is hij nog best lang, maar ik ben tevreden.
Hierboven zei iemand dat dit logisch onmogelijk is, hierbij heb ik bewezen dat zijn stelling niet waar is.
Kan jij in jouw favo taal een quine schrijven? Ik heb het inmiddels al gedaan