Palīdzība

Lai labāk saprastu, kā lietot sistēmu ir ieteicams izlasīt sekojošās nodaļas. Ja ir saprotams, kā konkrētas nodaļas strādā, tad var izlaist tās. 

Šī sistēma ir klasiska tiešsaistes sporta programmēšanas uzdevumu vērtēšanas sistēma (Online Judge). Šeit var apskatīt pieejamos uzdevumus, tos atrisināt un iesūtīt novērtēšanai. Bez uzdevumiem ir pieejamas arī sacensības. Lai gan viss ir atkarīgs no tā, cik bieži aktīvajiem cilvēkiem būs vēlme rīkot šādas sacensības, tās noteikti tuvākā vai tālākā nākotnē būs.

1. Uzdevumi

Uzdevumi sistēmā ir pieejami galvenajā panelī. Sistēmas grūtība tiek reiķināta vienkārši - atrisinātāju skaits / iesūtītāju skaitu. Katram uzdevumam ir laika un atmiņas limits, kods, kā arī pieejams vismaz viens testa paraugs. Uzdevuma ievaddati tiek rakstīti STDIN plūsmā un izvaddati tiek lasīti no STDOUT plūsmas.

  • STDIN / STDOUT - standrarta ievaddatu / izvaddatu plūsma. Pārsvarā visas programmas prot lasīt datus no šīm plūsmām, dažreiz to sauc par "lasīšanu no konsoles / rakstīšanu konsolē". Pretstatā lasīšanai no faila, lielākoties programmēšanas valodās nav jāatver fails lasīšanai no STDIN / STDOUT plūsmas. 
  • Tests - iesūtot risinājumu (programmu) uzdevumam, uzdevums tiek novērtēts dodot tam ievaddatus un sagaidot no programmas izvaddatus. Viens tests ir šāds komplekts ar ievaddatiem un izvaddatiem. Piemēram, ja uzdevums ir saskaitīt divus skaitļus A un B, un izvadīt to summu, tad ievaddatos tiks padotas divas integer tipa vērtības A, B un izvaddatos tiks sagaidīta viena integer vērtība A + B.
  • Testa paraugs - tie ir testi, kuri tiek parādīti kā piemēri uzdevuma ievaddatu / izvaddatu aprakstam.
  • Laika limits - vienu testu apstrādājot, programma nedrīkst darboties bezgalīgi ilgi. Pie tam atļaujot risināt uzdevumu neierobežoti ilgi pazūd sacensības jēga. Šo iemeslu dēļ katru testu ir atļauts risināt ierobežotu laika sprīdi, pretējā gadījumā tests tiek uzskatīts par neveiksmīgi izpildītu.
  • Atmiņas limits - visi ir dzirdējuši par RAM atmiņu un cik tā ir svarīga datora darbībai. Ja ir maz RAM atmiņa, tad dators sāk lēni strādāt. Šo iemeslu dēļ neviens uzdevums nedrīkst tikt risināts patērējot vairāk par noteikto RAM atmiņas limitu.
  • Uzdevuma kods - uzdevumam bez nosaukuma ir uzdevuma kods. Nosaukums ir cilvēkiem paredzētais formāts, bet lai dators saprastu, par kādu uzdevumu iet runa to iesūtot, ir nepieciešams uzdevuma kods. Tas identificē katru uzdevumu un ir unikāls katram uzdevumam.

Uzdevums savā aprakstā satur sekojošas daļas.

  • Uzdevuma galvene - informācija par uzdevuma nosaukumu, kodu, grūtību un atmiņas limitiem.
  • Definīcija - satur uzdevuma problēmas aprakstu.
  • Ievaddatu raksturojums - raksturo uzdevuma ievaddatu formātu un limitus. Kas kurā rindā atrodas un cik garas simbolu virknes vai cik lieli/mazi skaitļi ievaddatos tiks doti.
  • Izvaddatu raksturojums - raksturo uzdevuma izvaddatu formātu un limitus. Kas kurā rindā / kolonnā jāizvada.
  • Piezīmes - papildus informācija par uzdevumu, kura īsti neietilpst citās sadaļās. Var saturēt, piemēram, uzdevuma autora vārdu vai sacensības, no kurām uzdevums ir ņemts.
  • Paraugdati - saraksts ar uzdevuma testa paraugiem.

2. Uzdevuma iesūtīšana

Uzdevumu sistēmā var iesūtīt ieejot konkrētā uzdevumā vai izvēloties uzdevumu, lai to iesūtītu no saraksta. Var arī iesūtījuma formā ievadīt manuāli uzdevuma kodu. Iesūtīšanas formā ir jāievada uzdevuma kods, jāizvēlas programmēšanas valoda un jāpievieno koda fails vai jāievada kods koda teksta laukā (prioritāte tiek dota failam).

Koda lauks ir vienlaikus arī interaktīvs teksta redaktors, kurš iekrāsos kodu, kamēr tas tiek ievadīts laukā. 

Iesūtot kodu lietotājs tiks pārvietots uz iesūtījumu sarakstu.

3. Iesūtījumi

Iesūtījumu sarakstā tiek attēloti visi iesūtījumi lappušotā veidā. Par katru iesūtījumu ir zināma informācija - patērētais laiks un atmiņa.

  • Patērētais laiks - laiks, kurā visi izpildītie testi ir beigušies. Ja tests pārsniedz uzdevuma laika limitu, tas tiek pārtraukts un laiks tiek atzīmēts, kā nenosakāms.
  • Patērētā atmiņa - vidējā atmiņa patērēta visos testos. Ja tests pārsniedz uzdevuma atmiņas limitu, tā tiek pārtraukta un atmiņa tiek atzīmēta kā nenosakāma.

Katrs iesūtījums ļauj apskatīt arī detalizētu iesūtījuma skatu, kas satur kompilācijas ziņojumus un testu izpildes informāciju.

  • Kompilācijas informācija - ja koda sintaksē ir kļūda, to kompilējot rodas kļūdu ziņojumi. Tie tiek attēloti šajā skatā. Bez kļūdām tiek attēloti arī brīdinājumi. Brīdinājumus var izmantot, lai uzlabotu savu kodu un mācītos rakstīt labāku kodu.
  • Testu izpildes informācija - sarakstā ar testiem tiek attēlota informācija par katra testa patērēto laiku un atmiņu, kā arī tas, vai tests ir izpildījies veiksmīgi, neveiksmīgi.

4. Reitings

Reitings tiek aprēķināts izmantojot uzdevuma grūtību. Par katru veiksmīgi atrisinātu uzdevumu lietotājs saņem 1 + (1 - grūtība) * 5 punktus. Saskaitot šos punktus lietotājiem tiek piešķirtas vietas un medaļas. Medaļas tiek piešķirtas pēc sistēmas:

  1. 1/12 daļa dabū sarkano medaļu.
  2. 2/12 daļas dabū dzelteno medaļu.
  3. 3/12 daļas dabū zilo medaļu.
  4. 6/12 daļas dabū pelēko medaļu.

5. Teorija

Teorija satur informāciju par dažādām programmēšanas tēmām, lai palīdzētu katram uzsākt programmēt vai iedziļināties dažāda līmeņa algoritmos. Tā satur arī informāciju, kā veiksmīgāk startēt olimpiādēs un profesionāļu rekomendētas stratēģijas treniņiem un sacensībām.

Teorija ir strukturizēta pēc grūtības pakāpes. Sākumā tiek sniegta informācija par programmēšanas uzsākšanu un C++ programmēšanas valodu. Tālāk seko informācija par vieglākiem un sarežģītākiem algoritmiem. Sadaļām var būt pievienoti arī uzdevumi par konkrēto tēmu.

Jāmin, ka teorija tiek pilnveidota un visu pasaules informāciju ar ierobežotiem resursiem nav iespējams apkopot. Bet laika gaitā teorija un gramatikas kļūdas tiks izlabotas.

6. Sacensības

Reizi pa reizei ir plānots ar Latvijas aktīvo un bijušo sporta programmētaju palīdzību izveidot sacensības. Tas īpaši aktuāli būs tieši pirms novada kārtas, LIO, BOI un IOI sacensībām. Konkrēta regularitāte netiek garantēta, bet jo lielāka interese būs, jo vairāk sacensības uzrīkosim.

Sacensības ir redzamas sarakstā pirms to sākšanās (var redzēt laika atskaiti). Kad sacensības sākās, lietotājiem, kuriem ir piekļuve tām, ir iespēja apskatīt uzdevumu sarakstu, savus iesūtījumus un iesūtīt uzdevumu. 

  • Uzdevumu saraksts - uzdevumu saraksts līdzīgs parastajam uzdevumu sarakstam.
  • Iesūtījumu saraksts - iesūtījumu saraksts, kur ir redzami cik testa paraugi ir izpildījušies un vai uzdevums ir pieņemts vērtēšanai.
  • Uzdevuma iesūtīšana - līdzīga parastai uzdevuma iesūtīšanai. Vienīgi uzdevuma koda lauka vietā ir konkrēto sacensību uzdevumu izvēle.

Kad sacensības beidzās, uzdevumus iesūtīt vairs nevar. Pēc sacensībām administrators padarīs redzamus rezultātus. Rezultātos lietotājs parādās (skaitās, ka lietotājs piedalās sacensībās), ja ir veikts kaut viens iesūtījums (veiksmīgs vai neveiksmīgs). Kad izpildītie uzdevumi tiks padarīti redzami, tie skaitīsies atrisināti, ja tie būs atrisināti sacensību laikā. Attiecīgi arī reitings palielināsies.