PlusPedia wird derzeit technisch modernisiert. Aktuell laufen Wartungsarbeiten. Für etwaige Unannehmlichkeiten bitten wir um Entschuldigung; es sind aber alle Artikel zugänglich und Sie können PlusPedia genauso nutzen wie immer.
Neue User bitte dringend diese Hinweise lesen:
Anmeldung - E-Mail-Adresse Neue Benutzer benötigen ab sofort eine gültige Email-Adresse. Wenn keine Email ankommt, meldet Euch bitte unter NewU25@PlusPedia.de.
Hinweis zur Passwortsicherheit:
Bitte nutzen Sie Ihr PlusPedia-Passwort nur bei PlusPedia.
Wenn Sie Ihr PlusPedia-Passwort andernorts nutzen, ändern Sie es bitte DORT bis unsere Modernisierung abgeschlossen ist.
Überall wo es sensibel, sollte man generell immer unterschiedliche Passworte verwenden! Das gilt hier und im gesamten Internet.
Aus Gründen der Sicherheit (PlusPedia hatte bis 24.07.2025 kein SSL | https://)
Bei PlusPedia sind Sie sicher: – Wir verarbeiten keine personenbezogenen Daten, erlauben umfassend anonyme Mitarbeit und erfüllen die Datenschutz-Grundverordnung (DSGVO) vollumfänglich. Es haftet der Vorsitzende des Trägervereins.
PlusPedia blüht wieder auf als freundliches deutsches Lexikon.
Wir haben auf die neue Version 1.43.3 aktualisiert.
Wir haben SSL aktiviert.
Hier geht es zu den aktuellen Aktuelle Ereignissen
International Shortest C Contest: Unterschied zwischen den Versionen
Init |
(kein Unterschied)
|
Aktuelle Version vom 21. Februar 2010, 22:29 Uhr
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. 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);}
Weblinks
- 1. Int'l ShoCC – Wettbewerbsausschreibung
- Results – liebevoll detaillierte Auswertung der Ergebnisse
Init-Quelle
Entnommen aus der:
Erster Autor: YMS angelegt am 16.01.2009 um 22:, ,
Alle Autoren: Jergen, YMS , 217xxx