Simpel opgavetje tussendoor

Pagina: 1
Acties:
  • 46 views sinds 30-01-2008

  • Theswitch
  • Registratie: Juli 2000
  • Laatst online: 19:56
Hoi,

Simpele opgave voor iedereen die wacht op de GPC puzzels:

Maak een programma in willekeurige programeertaal, welke de sourcecode van zichzelf afdrukt op het scherm. Er mag geen gebruik gemaakt worden van files of iets dergelijks, gewoon opstarten en de source van het programma moet op het scherm verschijnen.

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Hmm, dus ook niet van zijn eigen source file? (zou nl wel extreem simpel zijn dan ;) )

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
De grens tussen wat wel/niet mag wordt erg vaag bij Java :+ .

Gebruik een compiling class-loader in Java en je bent klaar ;)

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Is (wiskundig) onmogelijk in gecompileerde talen, tenzij je gebruik mag maken van een preprocessor.

Dat wordt PHP...

Localhost, sweet localhost


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
kvdveer: Is (wiskundig) onmogelijk in gecompileerde talen.
Voor Java ook? >:)

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Op donderdag 27 december 2001 23:38 schreef mbravenboer het volgende:

[..]

Voor Java ook? >:)
Ik ken het compileerproces van java niet zo goed.
Je zult iets moeten executen. Die code kan dus niet ongecompileerd zijn. Vervolgens moet die code zichzelf afdrukken. Dat wordt lastig. Je zult die code óf moeten gereneren uit de gecompileerde vorm, óf je zult 'm toe moeten voegen als string. Maar dan moet je die string vervolgens ook weer toe moeten voegen, en die string weer...
* kvdveer enters infinite recursion and will be exterminated...

Maar nogmaals, ik ken het compileerproces van java niet zo goed.

Localhost, sweet localhost


  • bras
  • Registratie: Oktober 2000
  • Laatst online: 13-08 14:08
[blaat verwijderd]

"When you find yourself in the company of a halfling and an ill-tempered Dragon, remember, you do not have to outrun the Dragon...you just have to outrun the halfling."


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
kvdveer: Ik ken het compileerproces van java niet zo goed.
Java compileert naar een wat hoger niveau asm, met behoorlijk beperkte functionaliteit. Het is vrij eenvoudig te compileren en decompileren.
Je zult iets moeten executen. Die code kan dus niet ongecompileerd zijn.
Je kan in Java gebruik maken van ClassLoaders. Deze ClassLoaders kunnen van alles doen behalve het normale inlezen van class files: code genereren, source-code compileren enzovoorts :) . Je kunt dus in principe met een ClassLoader een niet gecompileerd Java programma uitvoeren.

Eventueel zou je het ook at-runtime kunnen decompileren, maar de code wordt dan niet voor 100% hersteld...

Ranzige trucks, maar ja... ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

Op donderdag 27 december 2001 23:37 schreef kvdveer het volgende:
Is (wiskundig) onmogelijk in gecompileerde talen, tenzij je gebruik mag maken van een preprocessor.
Preprocessor is niet nodig, ge jij eens vlug naar www.google.com en zoek op het woord "quine", dan krijg je tientallen (honderden?) links naar zulke progjes in talen als C, BASIC en ASM (ja, zelfs ASM). Als dat geen gecompileerde talen zijn, weet ik het niet meer.

Ik heb eens een tutorial gelezen over het maken van een quine en de bijhorende lastigheden en hoe die te omzeilen, veel progplezier :)

NB: Op een page die op de "Esoteric Programming Languages webring" aangesloten zit, vind je een leuke beschrijving van dit soort programma's en veel meer, zoals "polyglots" (programma's in meerdere talen tegelijk :) ).

Ok, genoeg geluld, aan het proggen jullie *pets*

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 18-08 10:58

Bergen

Spellingscontroleur

Als je de uitersten wilt zien van wat er met java mogelijk is op grafisch gebied zou je hier eens moeten kijken: http://dn.planet-d.net/

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 12-08 20:57

Macros

I'm watching...

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 :)

"Beauty is the ultimate defence against complexity." David Gelernter


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Macros schreef op 17 October 2003 @ 12:03:
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 :)
Er staat dat het (wiskundig) onmogelijk is in een gecompileerde taal. Is PHP gecompileerd? Nee. Heb je bewezen dat de stelling niet waar is? Nee.

Nah vooruit: http://www.nyx.net/~gthompso/quine.htm Daar. Stelling ontkracht ;)

[ Voor 14% gewijzigd door Creepy op 17-10-2003 12:13 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Maak hier even een nieuw topic voor, die hele GPC contest bestaat niet meer en wil ik eigenlijk geen reacties op uitlokken ;)

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.