Peter J. Holzer
2017-03-29 11:30:32 UTC
Ich habe gerade in Perl einmal zu oft ->$#* getippt und mich an längst
vergangene !*++* C-Tage erinnert. Da könnte man doch einen Wettbewerb
daraus machen.
Regeln:
Gesucht ist die längste Folge an "line noise" Characters in einem
Programm in beliebiger Programmiersprache. Als "line noise" gelten alle
Zeichen außer Buchstaben, Ziffern und Whitespace.
Das Programm muss kompilierbar sein und ohne Laufzeitfehler laufen. Wenn
es einen Sprachstandard gibt, muss es diesem entsprechen. Es muss nichts
sinnvolles tun,
Jeder Operator darf nur einmal verwendet werden, Klammern dürfen nur
verwendet werden, wenn sie nicht redundant sind (sonst lassen sich
trivial beliebig lange Folgen erzeugen). Whitespace kann zur
Untersützung des Lexers eingefügt werden, wird aber nicht mitgezählt.
Hier sind meine Versuche für C und Perl:
C: 13 Zeichen:
char a[2] = {1, 2};
char *b = a;
char *c = a;
*c++*=~!-+--*++b;
//1234567890123
// 1111
Perl: 14 Zeichen:
my $a = [0];
$a->$#*||=~!+-@$a;
# 12345678901234
# 11111
Das Perl-Beispiel nützt das experimentelle postderef Feature (ab Perl
5.14). In Perl gibt es außerdem eine ziemlich triviale Möglichkeit, sehr
lange Folgen zu erzeugen, ich überlege mir noch, ob ich eine zusätzliche
Regel einführe, um das zu verhindern.
Viel Spaß!
hp
PS: Ich werde Einträge auf https://github.com/hjp/linenoise sammeln, wer
will, kann das natürlich auch forken.
vergangene !*++* C-Tage erinnert. Da könnte man doch einen Wettbewerb
daraus machen.
Regeln:
Gesucht ist die längste Folge an "line noise" Characters in einem
Programm in beliebiger Programmiersprache. Als "line noise" gelten alle
Zeichen außer Buchstaben, Ziffern und Whitespace.
Das Programm muss kompilierbar sein und ohne Laufzeitfehler laufen. Wenn
es einen Sprachstandard gibt, muss es diesem entsprechen. Es muss nichts
sinnvolles tun,
Jeder Operator darf nur einmal verwendet werden, Klammern dürfen nur
verwendet werden, wenn sie nicht redundant sind (sonst lassen sich
trivial beliebig lange Folgen erzeugen). Whitespace kann zur
Untersützung des Lexers eingefügt werden, wird aber nicht mitgezählt.
Hier sind meine Versuche für C und Perl:
C: 13 Zeichen:
char a[2] = {1, 2};
char *b = a;
char *c = a;
*c++*=~!-+--*++b;
//1234567890123
// 1111
Perl: 14 Zeichen:
my $a = [0];
$a->$#*||=~!+-@$a;
# 12345678901234
# 11111
Das Perl-Beispiel nützt das experimentelle postderef Feature (ab Perl
5.14). In Perl gibt es außerdem eine ziemlich triviale Möglichkeit, sehr
lange Folgen zu erzeugen, ich überlege mir noch, ob ich eine zusätzliche
Regel einführe, um das zu verhindern.
Viel Spaß!
hp
PS: Ich werde Einträge auf https://github.com/hjp/linenoise sammeln, wer
will, kann das natürlich auch forken.
--
_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | | Man feilt solange an seinen Text um, bis
| | | ***@hjp.at | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel
_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | | Man feilt solange an seinen Text um, bis
| | | ***@hjp.at | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel