Zum Inhalt springen

Obfuscated Perl Contest

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 1. Februar 2006 um 19:46 Uhr durch Mosmas (Diskussion | Beiträge) (Initialer Artikel). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Der Obfuscated Perl Contest ist ein Programmierwettbewerb, bei dem die Teilnehmer in der Programmiersprache Perl verfasste kurze Programme einreichen, die ihre Funktionsweise im Quelltext auf möglichst kreative Weise verschleiern (englisch: to obfuscate), was normalerweise natürlich nicht Ziel bei der Programmierung ist.

Wettbewerbe dieser Art, die auch für andere Programmiersprachen veranstaltet werden, dienen vorrangig der Unterhaltung der beteiligten Programmierer. Die Erstellung, aber auch die Analyse der Funktionsweise der veröffentlichten Wettbewerbsbeitäge ist in der Regel außerordentlich lehrreich, worin – neben dem Unterhaltungswert – der Nutzen solcher Wettbewerbe für die Programmierer der jeweiligen Programmiersprache besteht.


Historie

Der Wettbewerb wurde erstmalig 1996 von Felix S. Gallo in der Fachzeitschrift The Perl Journal ausgerufen. Er fand danach jährlich statt, im Jahre 2000 vermutlich zum letzten Mal.

Gewinner wurden in vier Kategorien gekürt:

  • Die beste vierzeilige Signature
    Es gewinnt das beste Programm, das in 4 Zeilen von je 76 Zeichen passt.
  • Das mächtigste Programm
    Es gewinnt das Programm, das den größten Effekt mit dem geringsten Aufwand erzielt (maximal 1024 Bytes).
  • Das kreativste Programm
    Es gewinnt das Programm mit der verblüffendsten oder kuriosesten Kombination von Verschleierung und Funktionalität (maximal 2048 Bytes).
  • Das beste The Perl Journal
    In der Tradition der "Just another Perl hacker"-Programme gewinnt hier das beste Programm, das den Text „The Perl Journal“ ausgibt (maximal 2048 Bytes).

Die Beiträge wurden bewertet nach den Kriterien Ästhetik (des Quelltextes), Output und Unverständlichkeit. Jedes Jahr wurde außerdem einem Beitrag der Best of Show award verliehen. Die Siegerbeiträge wurden im Perl Journal veröffentlicht, können heute allerdings nur noch gegen Gebühr in den Verlagsarchiven eingesehen werden (siehe www.tpj.com).

Beispiele

Erster Platz in der Kategorie „beste vierzeilige Signature“ beim 0. Obfuscated Perl Contest von Robert Klep.
Das Programm gibt eine mit ASCII-Zeichen dargestellte Mandelbrot-Menge aus. (Das Terminal muss auf eine Breite von 80 Zeichen eingestellt sein.)

Programm:

$Y=-1.2;for(0..24){$X=-2;for(0..79){($r,$i)=(0,0);for(0..15){$n=$_;$r=($x=$
r)*$x-($y=$i)*$y+$X;$i=2*$x*$y+$Y;$x*$x+$y*$y>4&&last}print unpack("\@$n a"
,".,:;=+itIYVXRBM ");$X+=3/80}$Y+=2.4/25}

Ausgabe:

,,,,,,,,,,,::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::
,,,,,,,,,:::::::::;;;;;;;;;;;;;;;;;;;;;;======+iRV+++====;;;;;;:::::::::::::::::
,,,,,,,,::::::;;;;;;;;;;;;;;;;;;;;;;========+++itVXYYRi======;;;;;;:::::::::::::
,,,,,,:::::;;;;;;;;;;;;;;;;;;;;;;=========++++ttIR  VIt+++=====;;;;;;;::::::::::
,,,,,::::;;;;;;;;;;;;;;;;;;;;==========+++iitIX        ti++++====;;;;;;;::::::::
,,,,:::;;;;;;;;;;;;;;;;;;;=========++ittttttIYX       VIItiiiii++==;;;;;;;::::::
,,,::;;;;;;;;;;;;;;;;;;======+++++iit     R               RY XX Y++=;;;;;;;;::::
,,::;;;;;;;;;;;;;;;;===+++++++++iiitIVB                        Mti++=;;;;;;;;:::
,,:;;;;;;;;;;;====+XtiiiiiiiiiittIYM                           RIti+==;;;;;;;;::
,:;;;;;=======+++iiI XVVYV VYYIIYYB                               t+===;;;;;;;;:
,;;========++++++ttIY          MRB                               Mi+===;;;;;;;;;
,========+++iiiIRYYX                                             t++====;;;;;;;;
,++iitYttttIIIVXM                                              Yti++====;;;;;;;;
,++iitYttttIIIVXM                                              Yti++====;;;;;;;;
,========+++iiiIRYYX                                             t++====;;;;;;;;
,;;========++++++ttIY          MRB                               Mi+===;;;;;;;;;
,:;;;;;=======+++iiI XVVYV VYYIIYYB                               t+===;;;;;;;;:
,,:;;;;;;;;;;;====+XtiiiiiiiiiittIYM                           RIti+==;;;;;;;;::
,,::;;;;;;;;;;;;;;;;===+++++++++iiitIVB                        Mti++=;;;;;;;;:::
,,,::;;;;;;;;;;;;;;;;;;======+++++iit     R               RY XX Y++=;;;;;;;;::::
,,,,:::;;;;;;;;;;;;;;;;;;;=========++ittttttIYX       VIItiiiii++==;;;;;;;::::::
,,,,,::::;;;;;;;;;;;;;;;;;;;;==========+++iitIX        ti++++====;;;;;;;::::::::
,,,,,,:::::;;;;;;;;;;;;;;;;;;;;;;=========++++ttIR  VIt+++=====;;;;;;;::::::::::
,,,,,,,,::::::;;;;;;;;;;;;;;;;;;;;;;========+++itVXYYRi======;;;;;;:::::::::::::
,,,,,,,,,:::::::::;;;;;;;;;;;;;;;;;;;;;;======+iRV+++====;;;;;;:::::::::::::::::

Zweiter Platz in der Kategorie „mächtigstes Programm“ beim 0. Obfuscated Perl Contest von Gordon Lack.
Das „Programm“ konvertiert MAC-Textdateien in Unix-Textdateien.

#!/usr/bin/perl -w015l12pi.bak

Sieger in der Kategorie „The Perl Journal“ beim 1. Obfuscated Perl Contest von Joe Futrelle.
Das Programm erzeugt entsprechend der Kategorie die Ausgabe „The Perl Journal“.

 package S2z8N3;{
    $zyp=S2z8N3;use Socket;
        (S2z8N3+w1HC$zyp)&
    open SZzBN3,"<$0"
 ;while(<SZzBN3>){/\s\((.*p\))&/
     &&(@S2zBN3=unpack$age,$1)}foreach
   $zyp(@S2zBN3)
  while($S2z8M3++!=$zyp-
 30){$_=<SZz8N3>}/^(.)/|print $1
       ;$S2z8M3=0}s/.*//|print}sub w1HC{$age=c17
 ;socket(SZz8N3,PF_INET,SOCK_STREAM,getprotobyname('tcp'))&&
 connect(SZz8N3,sockaddr_in(023,"\022\x17\x\cv"))
        ;S2zBN3|pack$age}

Siehe auch

Wettbewerbsbeiträge

Bei diesen Wettbewerbsbeiträgen ist die Kategorie unbekannt.

Sonstige