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.
« UA-2542224-4 0V »
