Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(+1)

The later levels are too hard so I write this program to calculate them   XD


use std::{collections::VecDeque, io};

fn main() {

    let target = {

        let mut line = String::new();

        io::stdin().read_line(&mut line).unwrap();

        line.trim().parse::<u8>().unwrap()

    };

    let mut q: VecDeque<(u8, Vec<char>)> = VecDeque::new();

    q.push_back((0, vec![]));

    while !q.is_empty() {

        let (cur, mut cur_ops) = q.pop_front().unwrap();

        if cur == target {

            println!("{:?}", cur_ops);

            break;

        }

        cur_ops.push('+');

        q.push_back((cur.wrapping_add(1), cur_ops.clone()));

        cur_ops.pop();

        cur_ops.push('-');

        q.push_back((cur.wrapping_sub(1), cur_ops.clone()));

        cur_ops.pop();

        cur_ops.push('<');

        q.push_back((cur.wrapping_shl(1), cur_ops.clone()));

        cur_ops.pop();

        cur_ops.push('>');

        q.push_back((cur.wrapping_shr(1), cur_ops.clone()));

        cur_ops.pop();

    }

}