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.