Kattis

Kattis är ett Internet-baserat datorprogram som automatiskt kompilerar och testar dina lösningar till vissa av våra träningsuppgifter. Programmet används också i Online-kvalet, dock utan att testa lösningarna vid inskickandet. Kattis är utvecklat av Programmeringstävlingsverksamheten vid KTH.

För att använda Kattis behöver du ett konto. Du får detta genom att fylla i följande formulär. Inom några dagar får du ett mail med dina kontouppgifter. Var vänlig skicka inte formuläret flera gånger. Om du redan har ett konto men glömt ditt lösenord, följ denna länk.

Jag skulle vilja ha ett konto på PO-Kattis:

Namn (för- och efternamn):

E-postadress:

Innan du börjar vill vi göra dig uppmärksam på följande:

  • In- och utdatahantering

    Lösningar som skickas till Kattis ska läsa indata från standard input och skriva utdata till standard output. När du testar ditt program kan du alltså skriva in indatan direkt med tangentbordet eller lägga den i en fil och sedan använda kommandot
    mittprogram < indatafil
    som fungerar i såväl DOS-prompt, Linux eller Mac. Observera att allting du skriver till standard output under programmets gång räknas som utdata. Du kan t.ex. inte låta programmet be användaren skriva in ett tal. Kattis skulle inte uppskatta denna vänlighet, utan tolkar din dialog som felaktig utdata.

    Indata i uppgifterna består av en eller flera rader där varje rad kan innehålla flera tal eller strängar. Dessa åtskiljs alltid med ett blanksteg. Det lättaste sättet att läsa indata är därför att använda funktioner som hanterar indatan som en uppsättning tokens åtskilda av whitespace, som kan vara såväl blanksteg som radbrytningar.

    Vi ger här ett exempel på hur man i de tre språken kan läsa in följande indata:
    4 6
    3.22 Text

    C

       #include <stdio.h>
       ...
       int a1, a2;
       char word[100];
       double d;
       scanf("%d %d", &a1, &a2);
       scanf("%lf %s", &d, word);

    C++

       #include <iostream>
       using namespace std;
       ...
       int a1, a2;
       char word[100];
       double d;
       cin >> a1 >> a2;
       cin >> d >> word;

    Java (J2SE)

       import java.util.Scanner;
       ...
       Scanner sc = new Scanner(System.in);
       int a1=sc.nextInt(), a2=sc.nextInt();
       double d=sc.nextDouble();
       String word=sc.next();

  • Kompilatorer

    Kattis använder gcc, g++ och Sun JDK. Tänk på att dessa inte nödvändigtvis beter sig likadant som dem du brukar använda.
  • Kattis respons

    Det som står i dokumentationen gällande Kattis olika responsmeddelanden gäller inte för våra träningsuppgifter. Så länge programmet går att kompilera kommer du alltid att få meddelandet Accepted i din Submissions-lista. Du kommer också få ett automatgenererat mail där Kattis uttrycker sin glädje över att du klarat uppgiften. Detta är helt irrelevant. Det du ska titta på är dels talet som står inom parantes efter Accepted. Det talar om hur många procent av testfallen ditt program löste. Ett korrekt program ska alltså ge 100. Dessutom kan du i det automatiska mailet se vilka testfall som programmet inte klarade och vilken sorts fel programmet gjorde på varje testfall.

    Detta kommer att vara lite förvirrande i början och beror på att Kattis inte är gjort för den typ av testning som används i PO och IOI. Notera också att i Online-kvalet testas ditt program endast på testexemplet som anges i uppgiften så där betyder Accepted att programmet verkligen klarade testfallet.

För övrigt hänvisar vi till dokumentationen (på engelska). Har du frågor eller problem, vänd dig i första hand till Pär Söderhjelm.

Observera att några problem är rejält utmanande. Vill du börja med de lättaste kan vi rekommendera Fruktsamma kaniner, Kölappar, Lyckotal, Provet, Ramsan och Soldaterna. Eller trivialuppgiften Stupid practice task

Det finns också en rankinglista där varje löst uppgift ger 100 poäng.

Logga in på Kattis!

Sidansvarig: Pär Söderhjelm < par.soderhjelm@teokem.lu.se >
Uppdaterad 2011-01-16