International Shortest C Contest

Aus PlusPedia
Wechseln zu: Navigation, Suche

Der International Shortest C Contest (kurz ShoCC) ist ein Programmierwettbewerb für am kreativsten verkürzte C-Programme. Ziel des Wettbewerbs ist gerade nicht ein lehrbuchmäßig lesbarer Programmcode: stattdessen soll durch Einsatz von Wissen über die Spezifikation der Programmiersprache und mögliche Seiteneffekte von Programmierstatements ein besonders kurzes Programm geschrieben werden. Der ShoCC steht damit dem Geist des International Obfuscated C Code Contest nahe.

Der Contest wurde 1995 von der Unix AG der Universität Kaiserslautern unter Nils Magnus und Peter Conrad ins Leben gerufen.

1 1. Wettbewerb

Aufgabe des ersten Wettbewerbs war es, ein Programm zu schreiben, welches zwei Zahlen einliest und als Ausgabe eine (je nach Wahl der beiden Grenzen auf- oder absteigend sortierte) Liste aller Zahlen zwischen diesen beiden Argumenten erzeugt. Die kürzesten Einsendungen lösten diese Aufgabe in jeweils 69 Zeichen:

 [01] main(a,y,d)int*y;{for(a=atoi(y[1]);o(a),d=atoi(y[2])-a;)a+=(d|1)%2;}
 [02] main(c,v,x)int*v;{for(c=atoi(v[1]);o(c),x=atoi(v[2])-c;c+=(x|1)%2);}
 [03] main(a,v)int*v;{for(a=atoi(*++v);o(a),*v=atoi(v[1])-a;a+=*v>>31|1);}
 [04] main(i,v,j)int*v;{for(i=atoi(v[1]);o(i),j=atoi(v[2])-i;i+=(j|1)%2);}
 [05] main(c,d){int*v=d;for(c=atoi(v[1]);o(c),d=atoi(v[2])-c;c+=d>>31|1);}
 [06] main(d,O,_)int*O;{for(_=atoi(O[1]);o(_),d=_-atoi(O[2]);_-=d>>-1|1);}
 [07] main(a,v)int*v;{for(a=atoi(v[1]);o(a),*v=atoi(v[2])-a;a+=*v>>31|1);}
 [08] main(a,b)int*b;{for(a=atoi(*++b);o(a),*b=atoi(b[1])-a;a+=(*b|1)%2);}
 [09] main(a,b)int*b;{for(a=atoi(b[1]);o(a),*b=atoi(b[2])-a;a+=*b>>31|1);}
 [10] main(J,_)int*_;{for(J=atoi(*++_);o(J),*_=atoi(_[1])-J;J+=(*_|1)%2);}
 [11] main(i,b,j)int*b;{for(i=atoi(b[1]);o(i),j=i-atoi(b[2]);i-=j>>31|1);}
 [12] main(k,j,i)int*j;{for(k=atoi(j[1]);o(k),i=atoi(j[2])-k;k+=(i|1)%2);}
 [13] main(n,a,e)int*a;{for(n=atoi(a[1]);o(n),e=atoi(a[2])-n;n+=e>>31|1);}
 [14] a;main(c,d)int*d;{for(a=atoi(d[1]);o(a),c=atoi(d[2])-a;a+=(c|1)%2);}
 [15] main(n,c,d)int*c;{for(n=atoi(c[1]);o(n),d=atoi(c[2])-n;n+=d>>31|1);}
 [16] main(d,a)int*a;{for(d=atoi(a[1]);o(d),*a=atoi(a[2])-d;d+=(*a|1)%2);}
 [17] *p;main(i,x){for(i=atoi((p=x)[1]);o(i),x=atoi(p[2])-i;x>0?i++:i--);}
 [18] main(c,v,d)int*v;{for(c=atoi(v[1]);o(c),d=atoi(v[2])-c;c+=d>>31|1);}
 [19] main(c,v,d)int*v;{for(c=atoi(v[1]);d;o(d>0?c++:c--))d=atoi(v[2])-c;}

Die bisher kürzeste bekannte Lösung benötigt 66 Zeichen und wurde nach dem Wettbewerb aus den besten Ideen der Einsender destilliert:

 *v;main(a,b){for(a=atoi(1[v=b]);o(a),b=atoi(v[2])-a;a+=(b|1)%2);}

Sonderpreise für die most obfuscated solutions (am wenigsten durchschaubare Lösungen) wurden für vier Einsendungen vergeben:

 [01] main(b,v,a)char**v;{b=atoi(v[2]);o(b+((a=atoi(v[1]))^b&&sprintf(*v,"%s %d %d",*v,a,b+(b>a?-1:1))&&system(*v),0));}
 [02] #define m(x,y)x=atoi(y[(int*)b]),
      main(a,b,i){a-3?(o(i),(i-b)&&main(a,b,i+a)):(m(i,1)m(b,2)main(i<b?1:-1,b,i));}
 [03] *p;main(i,x){for(i=atoi((p=x)[1]);o(i),x=atoi(p[2])-i;x>0?i++:i--);}
 [04] main(c,v,i)int*v;{c-i?main(v?atoi(v[1]):c+2*(o(c),c<i)-1,0,v?atoi(v[2]):i):o(c);}

2 Weblinks

  • 1. Int'l ShoCC – Wettbewerbsausschreibung
  • Results – liebevoll detaillierte Auswertung der Ergebnisse



3 Init-Quelle

Entnommen aus der:

Erster Autor: YMS angelegt am 16.01.2009 um 22:, ,
Alle Autoren: Jergen, YMS , 217xxx

Diesen Artikel melden!
Verletzt dieser Artikel deine Urheber- oder Persönlichkeitsrechte?
Hast du einen Löschwunsch oder ein anderes Anliegen? Dann nutze bitte unser Kontaktformular

PlusPedia Impressum
Diese Seite mit Freunden teilen:
Mr Wong Digg Delicious Yiggit wikio Twitter
Facebook




Bitte Beachte:
Sämtliche Aussagen auf dieser Seite sind ohne Gewähr.
Für die Richtigkeit der Aussagen übernimmt die Betreiberin keine Verantwortung.
Nach Kenntnissnahme von Fehlern und Rechtsverstößens ist die Betreiberin selbstverständlich bereit,
diese zu beheben.

Verantwortlich für jede einzelne Aussage ist der jeweilige Erstautor dieser Aussage.
Mit dem Ergänzen und Weiterschreiben eines Artikels durch einen anderen Autor
werden die vorhergehenden Aussagen und Inhalte nicht zu eigenen.
Die Weiternutzung und Glaubhaftigkeit der Inhalte ist selbst gegenzurecherchieren.


Typo3 Besucherzähler - Seitwert blog counter
java hosting vpn norway