# Homework 0
Välkommen till ++ gruppen! På fredag kommer vi ha vår första övning, men fram till dess så har ni förljande läxa som ska vara färdiga innan övningen kl 15.00.
## Läxa
### Förberedelse
1. Skapa ett github-konto (public github, *inte* kth:s github enterprise), om ni inte redan har ett
2. Skicka erat github användarnamn till oss på discord så lägger vi till er i github organisationen INDA23PlusPlus.
3. Installera [Rust](https://www.rust-lang.org/tools/install)
4. Installera en utvecklings miljö (tex VSCode + [Rust Analyzer](https://rust-analyzer.github.io/))
### Läsning
- Läs kapitel 1-10 i [rust boken](https://doc.rust-lang.org/book/)
### Lös uppgifter
- Lös följande kattis uppgifter:
1. [A Different Problem](https://open.kattis.com/problems/different)
2. [Avstånd till kanten](https://kth.kattis.com/courses/DD2016/plusplus23/assignments/nx4ezb/problems/kth.javap.kant)
3. [Summera tal](https://kth.kattis.com/courses/DD2016/plusplus23/assignments/nx4ezb/problems/kth.javap.sumsort)
4. Frivillig uppgift: [Cyber-Clara och anmälningslistorna](https://kth.kattis.com/courses/DD2016/plusplus23/assignments/nx4ezb/problems/kth.grupdat.anmalningslistorna)
Lägg upp lösningarna i ett **privat** gitrepo i GitHub organisationen INDA23PlusPlus med namnet “_[ditt-kth-id]_-hw0”, till exempel: antlilja-hw0
## Om Rust
I DD1337 kommer vi primärt att använda Rust. Inför nästa veckas läxa är det viktigt att ni har någulunda koll på grunderna, så använd dessa uppgifter för att bekanta er med språket.
## I/O i Rust och Kattis
Kattis rättar era uppgifter automatisk, er kod ska ge output via standard output (dvs ```print!``` och ```println!```) och ta input vid Standard input.
Att ta input från kattis i Rust kan vara lite förvirrande i början, om ni kör fast kan ni använda kodsnuttarna nedan:
```rust
use std::io;
use std::io::prelude::*;
fn main() {
let mut buffer = String::new();
// Reads the entierty of standard input into a String
io::stdin().read_to_string(&mut buffer).unwrap();
...
}
```
För att konvertera en String till en lista med numeriska värden:
```rust
let nums: Vec<i32> = my_string.split_whitespace().map(|w| w.parse().unwrap()).collect::Vec<i32>();
let a = nums[0];
let b = nums[1];
```
För att iterera över rader i inputen i en loop kan
```rust
for line in buffer.lines().iter() {
...
}
```
Kattis har även mer hjälp för att använda rust: https://kth.kattis.com/help/rust.