Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn main(){
- let input=std::fs::read_to_string("code.txt").unwrap();
- let part2=true;
- let mut rot_left=true;
- let mut state=50;
- let mut result;
- let mut output:i32=0;
- for val in input.lines(){
- let (letter,number)=val.split_at(1);
- let number:i32=number.parse().unwrap();
- rot_left=letter=="L" ;
- if part2==false{
- result=counter(number,state,rot_left);
- state=result;
- if result==0{
- output=output+1;
- }
- }
- if part2==true{
- result=counter_part2(number, &mut state, rot_left);
- output=output+result;
- }
- }
- println!("output:{}",output);
- }
- fn counter(val:i32,state: i32,rot_left:bool)->i32{
- let mut result=if rot_left==true{
- (state-val)
- }
- else{
- (state+val)
- };
- result =result.rem_euclid(100);
- return result;
- }
- fn counter_part2(val:i32,state:&mut i32,rot_left:bool)->i32{
- let mut counter=0;
- let mut result=if rot_left==true{
- *state-val
- }
- else{
- *state+val
- };
- let old_state=*state;
- counter=(old_state.div_euclid(100)-result.div_euclid(100)).abs();
- if result.div_euclid(100)==old_state.div_euclid(100) && result==0{
- counter=counter+1;
- }
- *state=result.rem_euclid(100);
- println!("{}",counter);
- return counter;
- }
Advertisement
Add Comment
Please, Sign In to add comment