Dieser Wettbewerb ist VORBEI!
Ab sofort sind die Ergebnisse
verfügbar.
(ein paar alte Hinweise...)
Ausschreibung
um der wettbewerbslosen Zeit ein Ende zu bereiten schreiben wir
hiermit den
1. Kaiserslauterer Shortest C Contest (KL-ShoCC)
aus:
Aufgabenstellung
Es ist ein Programm in der Programmiersprache C zu schreiben, welches
als Kommandozeilenparameter zwei ganze Zahlen i1 und i2 (beide sind
vom Typ int) übergeben bekommt. Das Programm soll alle ganzen Zahlen
beginnend von i1 bis zu i2 (inclusive) ausgeben. Die erste Zahl ist
dabei i1, die letzte i2. Die Zahlen sind in auf- oder absteigender
Reihenfolge auszugeben, je nachdem, welche Zahl größer ist. Gilt
i1 > i2, so ist absteigend,
i1 < i2, so ist aufsteigend
auszugeben.
Beispiele
$ foo 1 3
1
2
3
$ foo 1 -1
1
0
-1
Das Problem sollte wohl überschaubar sein. Das Programm, welches das
geschilderte Problem unter den folgenden Randbedingungen mit dem
kürzesten C-Quellcode löst, gewinnt den Wettbewerb.
Die Randbedingungen
- Es wird jedes einzelne Zeichen gezählt (Zur Messwertbestimmung
wird `
wc -c
' verwendet).
- Das Programm muß sich unter SunOs, Aix und Linux mittels
`
gcc -o foo foo.c
' übersetzen lassen (die Wahl der Rechner obliegt
der Jury).
- Optional kann eine Funktion
void o(int x);
verwendet werden, die genau x in einer Zeile ausgibt. Der
Objectcode kann dazugelinkt werden (`gcc -o foo o.o foo.c
'). Eine
mögliche Generierung von o.o
erhält man beispielsweise durch
echo 'void o(int i) {
printf("%d\n", i);
}' > o.c; gcc -c -o o.o o.c
Man kann sich jedoch nicht darauf verlassen, daß beim konkreten
Wettbewerb die interne Implementation so ausfällt.
- Als Libraries sind nur die ANSI-Standard-Libs zulässig, für
Includefiles gilt dasselbe. Es sind also weder eigene Libraries
noch Includefiles zulässig. Im Zweifelsfalle entscheidet die Jury.
- Zusätzliche Kommandozeilenparameter für weitere Pfade, Libraries
Optimierungen oder Defines(!) usw. sind nicht zulässig. Es darf
nur einer der beiden o. a. Befehle zur Compilation verwendet
werden.
- Das Programm muß ordnungsgemäß terminieren (keine SEGVs oder
so), falls es korrekt aufgerufen wurde.
- Ist einer oder sind beide Übergabeparameter keine Integer-Zahl
oder ist die Anzahl der Parameter nicht genau zwei, so kann das
Programm beliebig reagieren oder mit Laufzeitfehlern abstürzen.
- Die Verwendung eines bestimmten C-"Standards" zur Lösung ist nicht
unbedingt notwendig; die oberste Prämisse ist es, daß das Programm
die Aufgabe erfüllt, ohne hochgradig maschinenspezifische Features
auszunutzen. In Zweifelsfällen entscheidet die Jury.
Preise
Je nach Beteiligung wird es einen (oder mehrere) Überraschungspreise
geben. Evtl. vergibt die Jury einen `Sonderpreis fuer die perverseste
Lösung' unabhängig von der Länge des Quelltextes.
Jury
Die Jury besteht aus Nils Magnus und Peter Conrad. Die Entscheidungen
der Jury sind endgültig und können nicht angefochten werden. Fragen
zu den Teilnahmebedingungen sind an shocc@unix-ag.uni-kl.de zu richten.
Teilnahme
Teilnehmen kann jeder, der es schafft, eine Email mit dem Quelltext an
shocc@unix-ag.uni-kl.de zu schicken. Im Body der Mail muss ein Tag
BEGIN-SHOCC
einzeln und am Anfang einer Zeile stehen, danach folgt der Quelltext
und wieder ein Tag END-SHOCC
alleine und am Anfang einer
Zeile. Verwertet werden nur die ganzen Zeilen zwischen den beiden Tags
(exclusive dieser, natürlich).
Beispiel
From: Max Teilnehmer
To: shocc@unix-ag.uni-kl.de
Hi Ihr Shoccer,
hier meine Einsendung:
BEGIN-SHOCC
void main(int argc, char *argv[])
{
o(1);
o(2);
o(3);
}
END-SHOCC
p.s.: Leider Funktioniert mein Programm nur fuer bestimmte
Sonderfaelle. Macht das was?
Gruss, Max.
Beteiligungen sind an shocc@unix-ag.uni-kl.de bis zum Mittwoch, 22.02.95,
23:59:59 MEZ, Eingang beim Empfänger, ausschließlich per Email
einzuschicken. Jeder Teilnehmer kann nur mit genau einem Programm
teilnehmen. Bei mehrfacher Einsendung eines Quelltextes nimmt der
letzte vor der Deadline eingehende Code teil.
Die Ergebnisse werden direkt im Anschluß ermittelt und am Donnerstag,
den 23.02.95, um 18.30 Uhr in der DS/1 im RHRK öffentlich
bekanntgegeben. Dort findet auch die Siegerehrung statt. Externe
Teilnehmer können an der Veranstaltung auch per IRC (#shocc
)
teilnehmen, wenn
sie sich von Adressen melden, die nicht auf *.uni-kl.de matchen.
- Wenn i1 == i2 gilt, so soll i1 ausgegeben werden.
- Ein Newline (
\n
) am Ende der Zeile wird bei allen
Einsendungen mitgezählt.
- o() wird nicht als Macro implementiert. Der Aufruf von
o(x) ist frei von Seiteneffekten.
- Bei ordnungsgemäßer Terminierung des Programms erwarten wir
keinen deterministischen Returnwert.
- Die Ergebnisse (sprich: besten und interessantesten Lösungen) werden
sowohl den Teilnehmern per Email zugestellt als auch in News und WWW
veröffentlicht.
Anhang
Nils' Homepage
Peter's Homepage
UNIX-AG Homepage
Impressum