Tutorial
Please, don't shoot!
Program jest ju¿ prawie dobry, ale powiedzmy, ¿e przyszed³ Wam do g³owy pomys³ zabawienia siê i napisali¶cie nastêpuj±cy kod:
uses Linux; begin shell('rm /etc/passwd'); end.
Wys³anie takiego programu spowoduje, ¿e Sprawdzarka zwróci ocenê:
Rule Violation
Oznacza to, ¿e naruszyli¶cie zasady Mistrzostw. Ten program móg³by zaszkodziæ serwerowi, na którym sprawdzane s± wasze programy, gdyby Sprawdzarka nie by³a dobrze zabezpieczona (a jest), co w konsekwencji mog³oby spowodowaæ opó¼nienia w zawodach i popsucie innym zabawy. Nie wolno Wam tego robiæ!!! Za wys³anie takiego programu (jak i wielu mu podobnych) zostaniecie zdyskwalifikowani!
W ogólno¶ci nie wolno Wam wywo³ywaæ, ¿adnych funkcji systemowych (czyli takich, które bezpo¶rednio komunikuj± siê z systemem operacyjnym, np. fork). Nie mo¿ecie te¿ wywo³ywaæ procedur/funkcji (czy to systemowych, czy nie, np. wspomniany shell), które s³u¿± do innego celu ni¿ rozwi±zanie zadania. Nale¿± do nich np. funkcje obs³ugi sieci, obs³ugi grafiki czy chocia¿by tworzenia/otwierania/zamykania pliku (te ostatnie nie s± potrzebne poniewa¿ program ma korzystaæ ze standardowego wej¶cia i wyj¶cia).
Choæ Rule Violation jest zwiastunem rych³ej dyskwalifikacji, to nie musi do tego doj¶æ. Nie stanie siê tak je¿eli przyczyna tego komunikatu bêdzie przypadkowa i zostanie uznana przez sêdziów za niegro¼n±. Dobrym przyk³adem, czêsto spotykanym w praktyce, jest shell('pause');, które niektórzy zawodnicy u¿ywaj± na swoich stanowiskach, a zapominaj± usun±æ (lub zakomentowaæ) wysy³aj±c program do sprawdzenia. W takiej sytuacji, ani dru¿yna nie zostaje zdyskwalifikowana, ani nawet nie zostaje naliczona kara czasowa za wys³anie nieprawid³owego rozwi±zania.