blob: 9668423d15cc63a739e0369cef2bd4b617f88d05 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
use fmt;
use io;
use os;
use regex;
use strings;
use strconv;
export fn main() void = {
do(os::stdin);
};
fn do(h: io::handle) int = {
const in = io::drain(h)!;
const sin = strings::trim(strings::fromutf8_unsafe(in));
const re = regex::compile(`mul\([0-9]+,[0-9]+\)`)!;
defer regex::finish(&re);
const results = regex::findall(&re, sin);
defer regex::result_freeall(results);
let sum = 0;
for (const result .. results) {
for (let r .. result) {
const idx1 = strings::index(r.content, ',');
const idx2 = strings::index(r.content, ')');
const arg1 = strings::sub(r.content, 4, idx1: size);
const arg2 = strings::sub(r.content, idx1: size + 1, idx2: size);
const a1 = strconv::stoi(arg1)!;
const a2 = strconv::stoi(arg2)!;
sum += a1 * a2;
fmt::printfln("{} * {} = {}", a1, a2, a1 * a2)!;
};
};
fmt::printfln("{}", sum)!;
return sum;
};
|