diff --git a/examples/abc054-c.rs b/examples/abc054-c.rs new file mode 100644 index 0000000..63d8f99 --- /dev/null +++ b/examples/abc054-c.rs @@ -0,0 +1,55 @@ +// https://atcoder.jp/contests/abc054/tasks/abc054_c + +use petgraph::csr::Csr; +use petgraph::Undirected; + +fn main() { + // use std::io::{self, Read as _}; + // + // let mut input = "".to_owned(); + // io::stdin().read_to_string(&mut input).unwrap(); + // let mut input = input.split_whitespace(); + // macro_rules! read { + // ([$t:tt; $n:expr]) => { + // (0..$n).map(|_| read!($t)).collect::>() + // }; + // (($($t:tt),+)) => { + // ($(read!($t)),*) + // }; + // (_1based) => { + // read!(usize) - 1 + // }; + // (_bytes) => { + // read!(String).into_bytes() + // }; + // ($ty:ty) => { + // input.next().unwrap().parse::<$ty>().unwrap() + // }; + // } + // + // let (n, m) = read!((usize, usize)); + // let mut abs = read!([(_1based, _1based); m]); + + use proconio::input; + use proconio::marker::Usize1; + + input! { + n: usize, + m: usize, + mut abs: [(Usize1, Usize1); m], + } + + abs.sort(); + let mut g = Csr::<(), (), Undirected, usize>::with_nodes(n); + for (a, b) in abs { + g.add_edge(a, b, ()); + } + let mut ans = 0; + let mut es = (0..n).collect::>(); + permutohedron::heap_recursive(&mut es, |es| { + if es[0] == 0 && es.windows(2).all(|w| g.contains_edge(w[0], w[1])) { + ans += 1; + } + }); + println!("{}", ans); +} diff --git a/examples/abc084-d.rs b/examples/abc084-d.rs new file mode 100644 index 0000000..2a06584 --- /dev/null +++ b/examples/abc084-d.rs @@ -0,0 +1,52 @@ +// https://atcoder.jp/contests/abc084/tasks/abc084_d + +use itertools_num::ItertoolsNum as _; +use primal::Sieve; + +#[proconio::fastout] +fn main() { + // use std::io::{self, Read as _}; + // + // let mut input = "".to_owned(); + // io::stdin().read_to_string(&mut input).unwrap(); + // let mut input = input.split_whitespace(); + // macro_rules! read { + // ([$t:tt; $n:expr]) => { + // (0..$n).map(|_| read!($t)).collect::>() + // }; + // (($($t:tt),+)) => { + // ($(read!($t)),*) + // }; + // (_1based) => { + // read!(usize) - 1 + // }; + // (_bytes) => { + // read!(String).into_bytes() + // }; + // ($ty:ty) => { + // input.next().unwrap().parse::<$ty>().unwrap() + // }; + // } + // + // let q = read!(usize); + // let lrs = read!([(usize, usize); q]); + + use proconio::input; + + input! { + q: usize, + lrs: [(usize, usize); q], + } + + // サンプルケースでしか試してないので嘘かもしれない。 + + let hi = lrs.iter().map(|&(_, r)| r).max().unwrap(); + let sieve = Sieve::new(hi); + let nums = (0..=hi) + .map(|k| u32::from(sieve.is_prime(k) && sieve.is_prime((k + 1) / 2))) + .cumsum() + .collect::>(); + for (l, r) in lrs { + println!("{}", nums[r] - nums[l - 1]); + } +} diff --git a/examples/abc142-d.rs b/examples/abc142-d.rs new file mode 100644 index 0000000..a8fdb4e --- /dev/null +++ b/examples/abc142-d.rs @@ -0,0 +1,53 @@ +// https://atcoder.jp/contests/abc142/tasks/abc142_d + +use primal::Sieve; + +use std::cmp::max; +use std::collections::HashSet; + +fn main() { + // use std::io::{self, Read as _}; + // + // let mut input = "".to_owned(); + // io::stdin().read_to_string(&mut input).unwrap(); + // let mut input = input.split_whitespace(); + // macro_rules! read { + // ([$t:tt; $n:expr]) => { + // (0..$n).map(|_| read!($t)).collect::>() + // }; + // (($($t:tt),+)) => { + // ($(read!($t)),*) + // }; + // (_1based) => { + // read!(usize) - 1 + // }; + // (_bytes) => { + // read!(String).into_bytes() + // }; + // ($ty:ty) => { + // input.next().unwrap().parse::<$ty>().unwrap() + // }; + // } + // + // let (n, m) = read!((usize, usize)); + + use proconio::input; + + input! { + a: usize, + b: usize, + } + + // サンプルケースでしか試してないので嘘かもしれない。 + + let sieve = Sieve::new(num_integer::sqrt(max(a, b))); + let bases = |k| -> HashSet<_> { + sieve + .factor(k) + .unwrap() + .into_iter() + .map(|(p, _)| p) + .collect() + }; + println!("{}", (&bases(a) & &bases(b)).len() + 1); +} diff --git a/examples/apg4b-ex25.rs b/examples/apg4b-ex25.rs new file mode 100644 index 0000000..a19484e --- /dev/null +++ b/examples/apg4b-ex25.rs @@ -0,0 +1,89 @@ +// https://atcoder.jp/contests/APG4b/tasks/APG4b_bx + +use fixedbitset::FixedBitSet; +use itertools::Itertools as _; + +fn main() { + // use std::io::{self, Read as _}; + // + // let mut input = "".to_owned(); + // io::stdin().read_to_string(&mut input).unwrap(); + // let mut input = input.split_whitespace(); + // macro_rules! read { + // ([$t:tt; $n:expr]) => { + // (0..$n).map(|_| read!($t)).collect::>() + // }; + // (($($t:tt),+)) => { + // ($(read!($t)),*) + // }; + // (_1based) => { + // read!(usize) - 1 + // }; + // (_bytes) => { + // read!(String).into_bytes() + // }; + // ($ty:ty) => { + // input.next().unwrap().parse::<$ty>().unwrap() + // }; + // } + // + // let n = read!(usize); + // let a = read!([usize; n]); + // let m = read!(usize); + // let b = read!([usize; m]); + // let arg0 = read!(String); + // let args = read!([usize; if arg0 == "subtract" { 1 } else { 0 }]); + + use proconio::input; + + input! { + n: usize, + a: [usize; n], + m: usize, + b: [usize; m], + arg0: String, + args: [usize; if arg0 == "subtract" { 1 } else { 0 }], + } + + let (a, b) = (a.into_iter().collect(), b.into_iter().collect()); + + print_set(&match (&*arg0, &*args) { + ("intersection", []) => intersection(&a, &b), + ("union_set", []) => union_set(&a, &b), + ("symmetric_diff", []) => symmetric_diff(&a, &b), + ("subtract", &[x]) => subtract(a, x), + ("increment", []) => increment(&a), + ("decrement", []) => decrement(&a), + _ => unreachable!(), + }); +} + +fn print_set(set: &FixedBitSet) { + println!("{}", (0..50).filter(|&i| set[i]).format(" ")); +} + +fn intersection(a: &FixedBitSet, b: &FixedBitSet) -> FixedBitSet { + a & b +} + +fn union_set(a: &FixedBitSet, b: &FixedBitSet) -> FixedBitSet { + a | b +} + +fn symmetric_diff(a: &FixedBitSet, b: &FixedBitSet) -> FixedBitSet { + a ^ b +} + +fn subtract(mut a: FixedBitSet, x: usize) -> FixedBitSet { + // > xは存在することが保証される。 + a.set(x, false); + a +} + +fn increment(a: &FixedBitSet) -> FixedBitSet { + a.ones().map(|x| (x + 1) % 50).collect() +} + +fn decrement(a: &FixedBitSet) -> FixedBitSet { + a.ones().map(|x| (x + 49) % 50).collect() +} diff --git a/examples/apg4b-ex26.rs b/examples/apg4b-ex26.rs new file mode 100644 index 0000000..ecc0c9a --- /dev/null +++ b/examples/apg4b-ex26.rs @@ -0,0 +1,235 @@ +// https://atcoder.jp/contests/APG4b/tasks/APG4b_bw + +use itertools::Itertools as _; +use maplit::hashmap; +use matches::matches; + +use std::collections::HashMap; +use std::io::{self, Read as _}; +use std::str::FromStr; + +fn main() { + let mut input = "".to_owned(); + io::stdin().read_to_string(&mut input).unwrap(); + let mut env = hashmap!(); + for line in input.lines().skip(1) { + line.parse::().unwrap().eval(&mut env); + } +} + +#[derive(Debug)] +enum Stmt { + DeclInt(char, IntExpr), + PrintInt(IntExpr), + DeclVec(char, VecExpr), + PrintVec(VecExpr), +} + +impl Stmt { + fn eval(&self, env: &mut HashMap) { + match self { + Self::DeclInt(name, expr) => { + env.insert(*name, Val::Int(expr.eval(env))); + } + Self::PrintInt(expr) => println!("{}", expr.eval(env)), + Self::DeclVec(name, expr) => { + env.insert(*name, Val::Vec(expr.eval(env))); + } + Self::PrintVec(expr) => println!("[ {} ]", expr.eval(env).iter().format(" ")), + } + } +} + +impl FromStr for Stmt { + type Err = (String, usize, nom::error::ErrorKind); + + fn from_str(input: &str) -> Result { + use nom::branch::alt; + use nom::bytes::complete::{tag, take_while_m_n}; + use nom::character::complete::{char, one_of, space0, space1}; + use nom::combinator::{map, map_res}; + use nom::multi::{fold_many0, separated_list}; + use nom::sequence::{pair, preceded, tuple}; + use nom::IResult; + + fn decl_int(input: &str) -> IResult<&str, Stmt> { + let (input, _) = space0(input)?; + let (input, _) = tag("int")(input)?; + let (input, _) = space1(input)?; + let (input, name) = var_name(input)?; + let (input, _) = space0(input)?; + let (input, _) = tag("=")(input)?; + let (input, _) = space0(input)?; + let (input, expr) = int_expr(input)?; + let (input, _) = space0(input)?; + let (input, _) = char(';')(input)?; + Ok((input, Stmt::DeclInt(name, expr))) + } + + fn print_int(input: &str) -> IResult<&str, Stmt> { + let (input, _) = space0(input)?; + let (input, _) = tag("print_int")(input)?; + let (input, _) = space1(input)?; + let (input, expr) = int_expr(input)?; + let (input, _) = space0(input)?; + let (input, _) = tag(";")(input)?; + Ok((input, Stmt::PrintInt(expr))) + } + + fn decl_vec(input: &str) -> IResult<&str, Stmt> { + let (input, _) = space0(input)?; + let (input, _) = tag("vec")(input)?; + let (input, _) = space1(input)?; + let (input, name) = var_name(input)?; + let (input, _) = space0(input)?; + let (input, _) = char('=')(input)?; + let (input, _) = space0(input)?; + let (input, val) = vec_expr(input)?; + let (input, _) = space0(input)?; + let (input, _) = char(';')(input)?; + Ok((input, Stmt::DeclVec(name, val))) + } + + fn print_vec(input: &str) -> IResult<&str, Stmt> { + let (input, _) = space0(input)?; + let (input, _) = tag("print_vec")(input)?; + let (input, _) = space1(input)?; + let (input, val) = vec_expr(input)?; + let (input, _) = space0(input)?; + let (input, _) = char(';')(input)?; + Ok((input, Stmt::PrintVec(val))) + } + + fn int_expr(input: &str) -> IResult<&str, IntExpr> { + let (input, expr) = int_term(input)?; + fold_many0( + preceded(space0, pair(one_of("+-"), preceded(space0, int_term))), + expr, + |expr, (op, term)| match op { + '+' => IntExpr::Add(Box::new(expr), Box::new(term)), + '-' => IntExpr::Sub(Box::new(expr), Box::new(term)), + _ => unreachable!(), + }, + )(input) + } + + fn int_term(input: &str) -> IResult<&str, IntExpr> { + let (input, _) = space0(input)?; + alt(( + map(var_name, IntExpr::Var), + map( + take_while_m_n::<_, &str, _>(1, 1, |c| matches!(c, '0'..='9')), + |s| IntExpr::Lit(s.parse().unwrap()), + ), + ))(input) + } + + fn vec_expr(input: &str) -> IResult<&str, VecExpr> { + let (input, expr) = vec_term(input)?; + fold_many0( + preceded(space0, pair(one_of("+-"), preceded(space0, vec_term))), + expr, + |expr, (op, term)| match op { + '+' => VecExpr::Add(Box::new(expr), Box::new(term)), + '-' => VecExpr::Sub(Box::new(expr), Box::new(term)), + _ => unreachable!(), + }, + )(input) + } + + fn vec_term(input: &str) -> IResult<&str, VecExpr> { + let (input, _) = space0(input)?; + alt((map(var_name, VecExpr::Var), |input| { + let (input, _) = char('[')(input)?; + let (input, _) = space0(input)?; + let (input, vec) = + separated_list(tuple((space0, char(','), space0)), int_expr)(input)?; + let (input, _) = space0(input)?; + let (input, _) = char(']')(input)?; + Ok((input, VecExpr::Lit(vec))) + }))(input) + } + + fn var_name(input: &str) -> IResult<&str, char> { + map_res(take_while_m_n(1, 1, |c| matches!(c, 'a'..='z')), str::parse)(input) + } + + decl_int(input) + .or_else(|_| print_int(input)) + .or_else(|_| decl_vec(input)) + .or_else(|_| print_vec(input)) + .map(|(_, stmt)| stmt) + .map_err(|err| match err { + nom::Err::Incomplete(_) => unreachable!(), + nom::Err::Error((s, k)) | nom::Err::Failure((s, k)) => { + (input.to_owned(), input.len() - s.len(), k) + } + }) + } +} + +#[derive(Debug)] +enum Val { + Int(i32), + Vec(Vec), +} + +impl Val { + fn unwrap_int(&self) -> i32 { + match self { + Self::Int(n) => *n, + Self::Vec(_) => panic!(), + } + } + + fn unwrap_vec(&self) -> &[i32] { + match self { + Self::Int(_) => panic!(), + Self::Vec(vec) => vec, + } + } +} + +#[derive(Debug, Clone)] +enum IntExpr { + Lit(i32), + Var(char), + Add(Box, Box), + Sub(Box, Box), +} + +impl IntExpr { + fn eval(&self, env: &HashMap) -> i32 { + match self { + Self::Lit(n) => *n, + Self::Var(s) => env[s].unwrap_int(), + Self::Add(l, r) => l.eval(env) + r.eval(env), + Self::Sub(l, r) => l.eval(env) - r.eval(env), + } + } +} + +#[derive(Debug, Clone)] +enum VecExpr { + Lit(Vec), + Var(char), + Add(Box, Box), + Sub(Box, Box), +} + +impl VecExpr { + fn eval(&self, env: &HashMap) -> Vec { + match self { + Self::Lit(v) => v.iter().map(|x| x.eval(env)).collect(), + Self::Var(s) => env[s].unwrap_vec().to_owned(), + Self::Add(l, r) => { + let (l, r) = (l.eval(env), r.eval(env)); + l.into_iter().zip_eq(r).map(|(l, r)| l + r).collect() + } + Self::Sub(l, r) => { + let (l, r) = (l.eval(env), r.eval(env)); + l.into_iter().zip_eq(r).map(|(l, r)| l - r).collect() + } + } + } +} diff --git a/examples/tests.ron b/examples/tests.ron index e86cc49..c96e7e5 100644 --- a/examples/tests.ron +++ b/examples/tests.ron @@ -7,6 +7,14 @@ name: "APG4b: A - 1.00.はじめに", matching: ExactWhole, ), + "apg4b-ex25": ( + name: "APG4b: EX25 - 集合の操作 / 3.05", + matching: ExactWords, + ), + "apg4b-ex26": ( + name: "APG4b: EX26 - 電卓を作ろう3 / 3.06", + matching: ExactWords, + ), "practice-a": ( name: "practice contest: A - Welcome to AtCoder", matching: ExactWords, @@ -23,8 +31,20 @@ name: "ABC049 / ARC065: C - 白昼夢 / Daydream", matching: ExactWords, ), + "abc054-c": ( + name: "ABC045: C - One-stroke Path", + matching: ExactWords, + ), + "abc084-d": ( + name: "ABC084: D - 2017-like Number", + matching: ExactWords, + ), "abc120-d": ( - name: "ABC120: D - Decayed Bridges ", + name: "ABC120: D - Decayed Bridges", + matching: ExactWords, + ), + "abc142-d": ( + name: "ABC124: D - Disjoint Set of Common Divisors", matching: ExactWords, ), } diff --git a/examples/testsets/abc054-c/in/sample_01.txt b/examples/testsets/abc054-c/in/sample_01.txt new file mode 100644 index 0000000..bc88773 --- /dev/null +++ b/examples/testsets/abc054-c/in/sample_01.txt @@ -0,0 +1,4 @@ +3 3 +1 2 +1 3 +2 3 diff --git a/examples/testsets/abc054-c/in/sample_02.txt b/examples/testsets/abc054-c/in/sample_02.txt new file mode 100644 index 0000000..052f07a --- /dev/null +++ b/examples/testsets/abc054-c/in/sample_02.txt @@ -0,0 +1,8 @@ +7 7 +1 3 +2 7 +3 4 +4 5 +4 6 +5 6 +6 7 diff --git a/examples/testsets/abc054-c/out/sample_01.txt b/examples/testsets/abc054-c/out/sample_01.txt new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/examples/testsets/abc054-c/out/sample_01.txt @@ -0,0 +1 @@ +2 diff --git a/examples/testsets/abc054-c/out/sample_02.txt b/examples/testsets/abc054-c/out/sample_02.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/examples/testsets/abc054-c/out/sample_02.txt @@ -0,0 +1 @@ +1 diff --git a/examples/testsets/abc084-d/in/sample_01.txt b/examples/testsets/abc084-d/in/sample_01.txt new file mode 100644 index 0000000..6990404 --- /dev/null +++ b/examples/testsets/abc084-d/in/sample_01.txt @@ -0,0 +1,2 @@ +1 +3 7 diff --git a/examples/testsets/abc084-d/in/sample_02.txt b/examples/testsets/abc084-d/in/sample_02.txt new file mode 100644 index 0000000..988378b --- /dev/null +++ b/examples/testsets/abc084-d/in/sample_02.txt @@ -0,0 +1,5 @@ +4 +13 13 +7 11 +7 11 +2017 2017 diff --git a/examples/testsets/abc084-d/in/sample_03.txt b/examples/testsets/abc084-d/in/sample_03.txt new file mode 100644 index 0000000..da66f27 --- /dev/null +++ b/examples/testsets/abc084-d/in/sample_03.txt @@ -0,0 +1,7 @@ +6 +1 53 +13 91 +37 55 +19 51 +73 91 +13 49 diff --git a/examples/testsets/abc084-d/out/sample_01.txt b/examples/testsets/abc084-d/out/sample_01.txt new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/examples/testsets/abc084-d/out/sample_01.txt @@ -0,0 +1 @@ +2 diff --git a/examples/testsets/abc084-d/out/sample_02.txt b/examples/testsets/abc084-d/out/sample_02.txt new file mode 100644 index 0000000..680eb50 --- /dev/null +++ b/examples/testsets/abc084-d/out/sample_02.txt @@ -0,0 +1,4 @@ +1 +0 +0 +1 diff --git a/examples/testsets/abc084-d/out/sample_03.txt b/examples/testsets/abc084-d/out/sample_03.txt new file mode 100644 index 0000000..10cd9ca --- /dev/null +++ b/examples/testsets/abc084-d/out/sample_03.txt @@ -0,0 +1,6 @@ +4 +4 +1 +1 +1 +2 diff --git a/examples/testsets/abc142-d/in/sample_01.txt b/examples/testsets/abc142-d/in/sample_01.txt new file mode 100644 index 0000000..f86db24 --- /dev/null +++ b/examples/testsets/abc142-d/in/sample_01.txt @@ -0,0 +1 @@ +12 18 diff --git a/examples/testsets/abc142-d/in/sample_02.txt b/examples/testsets/abc142-d/in/sample_02.txt new file mode 100644 index 0000000..2b55e52 --- /dev/null +++ b/examples/testsets/abc142-d/in/sample_02.txt @@ -0,0 +1 @@ +420 660 diff --git a/examples/testsets/abc142-d/in/sample_03.txt b/examples/testsets/abc142-d/in/sample_03.txt new file mode 100644 index 0000000..381ada1 --- /dev/null +++ b/examples/testsets/abc142-d/in/sample_03.txt @@ -0,0 +1 @@ +1 2019 diff --git a/examples/testsets/abc142-d/out/sample_01.txt b/examples/testsets/abc142-d/out/sample_01.txt new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/examples/testsets/abc142-d/out/sample_01.txt @@ -0,0 +1 @@ +3 diff --git a/examples/testsets/abc142-d/out/sample_02.txt b/examples/testsets/abc142-d/out/sample_02.txt new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/examples/testsets/abc142-d/out/sample_02.txt @@ -0,0 +1 @@ +4 diff --git a/examples/testsets/abc142-d/out/sample_03.txt b/examples/testsets/abc142-d/out/sample_03.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/examples/testsets/abc142-d/out/sample_03.txt @@ -0,0 +1 @@ +1 diff --git a/examples/testsets/apg4b-ex25/in/sample_01.txt b/examples/testsets/apg4b-ex25/in/sample_01.txt new file mode 100644 index 0000000..72d1a5d --- /dev/null +++ b/examples/testsets/apg4b-ex25/in/sample_01.txt @@ -0,0 +1,5 @@ +3 +0 1 2 +3 +1 2 3 +intersection diff --git a/examples/testsets/apg4b-ex25/in/sample_02.txt b/examples/testsets/apg4b-ex25/in/sample_02.txt new file mode 100644 index 0000000..975f08a --- /dev/null +++ b/examples/testsets/apg4b-ex25/in/sample_02.txt @@ -0,0 +1,5 @@ +3 +0 1 2 +3 +1 2 3 +union_set diff --git a/examples/testsets/apg4b-ex25/in/sample_03.txt b/examples/testsets/apg4b-ex25/in/sample_03.txt new file mode 100644 index 0000000..cc0e508 --- /dev/null +++ b/examples/testsets/apg4b-ex25/in/sample_03.txt @@ -0,0 +1,5 @@ +3 +0 1 2 +3 +1 2 3 +symmetric_diff diff --git a/examples/testsets/apg4b-ex25/in/sample_04.txt b/examples/testsets/apg4b-ex25/in/sample_04.txt new file mode 100644 index 0000000..c5ee91b --- /dev/null +++ b/examples/testsets/apg4b-ex25/in/sample_04.txt @@ -0,0 +1,5 @@ +3 +0 1 2 +3 +1 2 3 +subtract 2 diff --git a/examples/testsets/apg4b-ex25/in/sample_05.txt b/examples/testsets/apg4b-ex25/in/sample_05.txt new file mode 100644 index 0000000..354e615 --- /dev/null +++ b/examples/testsets/apg4b-ex25/in/sample_05.txt @@ -0,0 +1,5 @@ +3 +0 1 49 +3 +1 2 3 +increment diff --git a/examples/testsets/apg4b-ex25/in/sample_06.txt b/examples/testsets/apg4b-ex25/in/sample_06.txt new file mode 100644 index 0000000..8d4d22c --- /dev/null +++ b/examples/testsets/apg4b-ex25/in/sample_06.txt @@ -0,0 +1,5 @@ +3 +0 1 49 +3 +1 2 3 +decrement diff --git a/examples/testsets/apg4b-ex25/out/sample_01.txt b/examples/testsets/apg4b-ex25/out/sample_01.txt new file mode 100644 index 0000000..8d04f96 --- /dev/null +++ b/examples/testsets/apg4b-ex25/out/sample_01.txt @@ -0,0 +1 @@ +1 2 diff --git a/examples/testsets/apg4b-ex25/out/sample_02.txt b/examples/testsets/apg4b-ex25/out/sample_02.txt new file mode 100644 index 0000000..fd15fe1 --- /dev/null +++ b/examples/testsets/apg4b-ex25/out/sample_02.txt @@ -0,0 +1 @@ +0 1 2 3 diff --git a/examples/testsets/apg4b-ex25/out/sample_03.txt b/examples/testsets/apg4b-ex25/out/sample_03.txt new file mode 100644 index 0000000..65c9b94 --- /dev/null +++ b/examples/testsets/apg4b-ex25/out/sample_03.txt @@ -0,0 +1 @@ +0 3 diff --git a/examples/testsets/apg4b-ex25/out/sample_04.txt b/examples/testsets/apg4b-ex25/out/sample_04.txt new file mode 100644 index 0000000..6e8183b --- /dev/null +++ b/examples/testsets/apg4b-ex25/out/sample_04.txt @@ -0,0 +1 @@ +0 1 diff --git a/examples/testsets/apg4b-ex25/out/sample_05.txt b/examples/testsets/apg4b-ex25/out/sample_05.txt new file mode 100644 index 0000000..63fb4bf --- /dev/null +++ b/examples/testsets/apg4b-ex25/out/sample_05.txt @@ -0,0 +1 @@ +0 1 2 diff --git a/examples/testsets/apg4b-ex25/out/sample_06.txt b/examples/testsets/apg4b-ex25/out/sample_06.txt new file mode 100644 index 0000000..03ebe79 --- /dev/null +++ b/examples/testsets/apg4b-ex25/out/sample_06.txt @@ -0,0 +1 @@ +0 48 49 diff --git a/examples/testsets/apg4b-ex26/in/sample_01.txt b/examples/testsets/apg4b-ex26/in/sample_01.txt new file mode 100644 index 0000000..c73dcea --- /dev/null +++ b/examples/testsets/apg4b-ex26/in/sample_01.txt @@ -0,0 +1,5 @@ +4 +int x = 1 + 2 ; +print_int x + 3 ; +vec a = [ 1 , 2 , x ] ; +print_vec a + [ 4 , 5 , 6 ] ; diff --git a/examples/testsets/apg4b-ex26/in/sample_02.txt b/examples/testsets/apg4b-ex26/in/sample_02.txt new file mode 100644 index 0000000..52f5052 --- /dev/null +++ b/examples/testsets/apg4b-ex26/in/sample_02.txt @@ -0,0 +1,3 @@ +2 +print_int 1 - 2 ; +print_vec [ 1 , 2 , 3 ] - [ 3 , 2 , 1 ] ; diff --git a/examples/testsets/apg4b-ex26/in/sample_03.txt b/examples/testsets/apg4b-ex26/in/sample_03.txt new file mode 100644 index 0000000..9698270 --- /dev/null +++ b/examples/testsets/apg4b-ex26/in/sample_03.txt @@ -0,0 +1,2 @@ +1 +print_int 5 ; diff --git a/examples/testsets/apg4b-ex26/in/sample_04.txt b/examples/testsets/apg4b-ex26/in/sample_04.txt new file mode 100644 index 0000000..58ee2d6 --- /dev/null +++ b/examples/testsets/apg4b-ex26/in/sample_04.txt @@ -0,0 +1,2 @@ +1 +print_vec [ 1 , 2 ] ; diff --git a/examples/testsets/apg4b-ex26/in/sample_05.txt b/examples/testsets/apg4b-ex26/in/sample_05.txt new file mode 100644 index 0000000..0f3f7a4 --- /dev/null +++ b/examples/testsets/apg4b-ex26/in/sample_05.txt @@ -0,0 +1,3 @@ +2 +int x = 1 ; +print_int x ; diff --git a/examples/testsets/apg4b-ex26/in/sample_06.txt b/examples/testsets/apg4b-ex26/in/sample_06.txt new file mode 100644 index 0000000..bca6173 --- /dev/null +++ b/examples/testsets/apg4b-ex26/in/sample_06.txt @@ -0,0 +1,3 @@ +2 +vec a = [ 3 , 4 ] ; +print_vec a ; diff --git a/examples/testsets/apg4b-ex26/in/sample_07.txt b/examples/testsets/apg4b-ex26/in/sample_07.txt new file mode 100644 index 0000000..edbcbb1 --- /dev/null +++ b/examples/testsets/apg4b-ex26/in/sample_07.txt @@ -0,0 +1,5 @@ +4 +int x = 1 ; +int y = 2 ; +int z = 3 ; +print_int x + y + z ; diff --git a/examples/testsets/apg4b-ex26/in/sample_08.txt b/examples/testsets/apg4b-ex26/in/sample_08.txt new file mode 100644 index 0000000..62b13df --- /dev/null +++ b/examples/testsets/apg4b-ex26/in/sample_08.txt @@ -0,0 +1,5 @@ +4 +vec a = [ 1 , 2 , 3 ] ; +vec b = [ 4 , 5 , 6 ] ; +vec c = [ 7 , 8 , 9 ] ; +print_vec a + b + c ; diff --git a/examples/testsets/apg4b-ex26/in/sample_09.txt b/examples/testsets/apg4b-ex26/in/sample_09.txt new file mode 100644 index 0000000..ba24ea5 --- /dev/null +++ b/examples/testsets/apg4b-ex26/in/sample_09.txt @@ -0,0 +1,7 @@ +6 +vec a = [ 1 , 2 ] ; +vec b = a + [ 3 , 4 ] ; +vec c = a - [ 5 , 6 ] ; +print_vec a ; +print_vec b ; +print_vec c ; diff --git a/examples/testsets/apg4b-ex26/out/sample_01.txt b/examples/testsets/apg4b-ex26/out/sample_01.txt new file mode 100644 index 0000000..e21af7e --- /dev/null +++ b/examples/testsets/apg4b-ex26/out/sample_01.txt @@ -0,0 +1,2 @@ +6 +[ 5 7 9 ] diff --git a/examples/testsets/apg4b-ex26/out/sample_02.txt b/examples/testsets/apg4b-ex26/out/sample_02.txt new file mode 100644 index 0000000..22e4cf0 --- /dev/null +++ b/examples/testsets/apg4b-ex26/out/sample_02.txt @@ -0,0 +1,2 @@ +-1 +[ -2 0 2 ] diff --git a/examples/testsets/apg4b-ex26/out/sample_03.txt b/examples/testsets/apg4b-ex26/out/sample_03.txt new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/examples/testsets/apg4b-ex26/out/sample_03.txt @@ -0,0 +1 @@ +5 diff --git a/examples/testsets/apg4b-ex26/out/sample_04.txt b/examples/testsets/apg4b-ex26/out/sample_04.txt new file mode 100644 index 0000000..b4a1e66 --- /dev/null +++ b/examples/testsets/apg4b-ex26/out/sample_04.txt @@ -0,0 +1 @@ +[ 1 2 ] diff --git a/examples/testsets/apg4b-ex26/out/sample_05.txt b/examples/testsets/apg4b-ex26/out/sample_05.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/examples/testsets/apg4b-ex26/out/sample_05.txt @@ -0,0 +1 @@ +1 diff --git a/examples/testsets/apg4b-ex26/out/sample_06.txt b/examples/testsets/apg4b-ex26/out/sample_06.txt new file mode 100644 index 0000000..b6f6fec --- /dev/null +++ b/examples/testsets/apg4b-ex26/out/sample_06.txt @@ -0,0 +1 @@ +[ 3 4 ] diff --git a/examples/testsets/apg4b-ex26/out/sample_07.txt b/examples/testsets/apg4b-ex26/out/sample_07.txt new file mode 100644 index 0000000..1e8b314 --- /dev/null +++ b/examples/testsets/apg4b-ex26/out/sample_07.txt @@ -0,0 +1 @@ +6 diff --git a/examples/testsets/apg4b-ex26/out/sample_08.txt b/examples/testsets/apg4b-ex26/out/sample_08.txt new file mode 100644 index 0000000..b77f265 --- /dev/null +++ b/examples/testsets/apg4b-ex26/out/sample_08.txt @@ -0,0 +1 @@ +[ 12 15 18 ] diff --git a/examples/testsets/apg4b-ex26/out/sample_09.txt b/examples/testsets/apg4b-ex26/out/sample_09.txt new file mode 100644 index 0000000..20db499 --- /dev/null +++ b/examples/testsets/apg4b-ex26/out/sample_09.txt @@ -0,0 +1,3 @@ +[ 1 2 ] +[ 4 6 ] +[ -4 -4 ] pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy