Myslíte si, že dobrý program nemůže zabírat 123 bajtů? Z éry DOSu možná znáte různé počiny, kterým se říkalo dema, a kde se kodéri snažili ukázat, co všechno se dá napsat, většinou v assembleru, tak, aby výsledný kód zabíral co nejméně místa na disku.

Vždycky jsem si myslel, že to je doména spíše nižších programovacích jazyků, ale přesto věřil, že se něco podobného dá dělat i v PHP. Dnes jsem objevil důkaz, že to jde!

Na webu Code Golf jsem se zapojil do „soutěže“ o nejkratší program řešící danou úlohu. Řešit se dá v PHP, i jiných jazycích, které jsou, co se týče velikosti zdrojového kódu ještě stručnější, například v Perlu.

Úloh je zde několik, jako první jsem se pustil do Home On The Range, kde jde o to, převést roustoucí posloupnost číslic na zápis ve formě sjednocení intervalů. Například z posloupnosti „1 2 3 5 6 8“ vytvoříte „1–3, 5–6, 8.“.

Jako ukázku uvedu svůj zatím nejlepší program, který jsem na toto téma vymyslel, který je velký přesně 123 bajtů:

<?foreach(explode(" ",fgets(STDIN))as$i){$o.=$m<$i?", $i":-$i;$m=$i+1;}echo trim(preg_replace("/-[^,]*-/",'-',$o),",
");?>.

Pokud máte nápad, jak to udělat s menší potřebou na zdrojový kód aplikace, a očivině to jde, protože v systému jsou i lepší řešení, můžete se zaregistrovat v systému a případně zkusit i další úkoly.

Na vrub webu bych jen připsal, že stránky se v některých okamžicích načitají velmi velmi dlouho.

« »