Kattis

Gå till Kattis

Kattis är ett web-baserat datorprogram som automatiskt kompilerar och testar dina lösningar. Det används för att tävla i online-kvalet, PO-finalen och KATT, men även för att träna på gamla uppgifter. Kattis används i lite olika versioner till bl.a. KTH:s datakurser och den stora universitetstävlingen ICPC. I vår egen version, po.kattis.com, kommer vi på sikt integrera vårt övriga träningsmaterial.

Du kan se vilka språk som är tillgängliga på Kattis här.

Indata- och utdata-hantering

Vi rekommenderar dokumentationen inne på Kattis som steg för steg visar hur du ska skriva program som kan rättas av Kattis. I sammanfattning gäller att programmet 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 Windows kommandoprompt, 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, eftersom Kattis tolkar din vänliga 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 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 fem olika språk 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>
#include <string>
using namespace std;
...
int a1, a2;
string word;
double d;
cin >> a1 >> a2;
cin >> d >> word;

Java

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();

Python

from sys import stdin
tokens = stdin.readline().split()
a1 = int(tokens[0])
a2 = int(tokens[1])
tokens = stdin.readline().split()
d = float(tokens[0])
word = tokens[1]

C#

var tokens = System.Console.ReadLine().Split();
int a1 = int.Parse(tokens[0]);
int a2 = int.Parse(tokens[1]);
tokens = System.Console.ReadLine().Split();
double d = double.Parse(tokens[0]);
string word = tokens[1];

Träningstips för tävlingar på Kattis

Sponsorer