Day 25
This commit is contained in:
		
							parent
							
								
									b4aaa46c5c
								
							
						
					
					
						commit
						715d6752dc
					
				
							
								
								
									
										116
									
								
								25/input
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								25/input
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,116 @@
 | 
			
		||||
1=-=2=-1000=0
 | 
			
		||||
11=001122
 | 
			
		||||
120-
 | 
			
		||||
1-0
 | 
			
		||||
202-0==-2-
 | 
			
		||||
2-1010=2-2=01
 | 
			
		||||
112=-2
 | 
			
		||||
2-0=
 | 
			
		||||
1-=2-=-1-0--0=1=0000
 | 
			
		||||
1=0=0--021-0
 | 
			
		||||
11000101=210
 | 
			
		||||
21-111=2112=2==-
 | 
			
		||||
111010-2
 | 
			
		||||
2=10=-101-=--0
 | 
			
		||||
2-=-2000012=0022=
 | 
			
		||||
1-=11-01--2100
 | 
			
		||||
1=2211-2-===
 | 
			
		||||
2=--2-==-1
 | 
			
		||||
1=12---02=2
 | 
			
		||||
1==0=--11=01-1-
 | 
			
		||||
121-21021
 | 
			
		||||
12=1001=2=-=22
 | 
			
		||||
1=2-212=2-0211
 | 
			
		||||
20----11=
 | 
			
		||||
10=100=0=0
 | 
			
		||||
111
 | 
			
		||||
1=--011==2--212121=
 | 
			
		||||
2=-10=210200-2-=0
 | 
			
		||||
1=-122=001-1
 | 
			
		||||
2-0=0121=-0=0
 | 
			
		||||
2-=20--1-=21-22=1=
 | 
			
		||||
20011
 | 
			
		||||
12=1--=-0--10-0=1-=
 | 
			
		||||
2002=100=-00-
 | 
			
		||||
202
 | 
			
		||||
1=2==21-
 | 
			
		||||
1=221--01=00-10=
 | 
			
		||||
1--0-1=
 | 
			
		||||
2-==11=222---
 | 
			
		||||
21-10-=22
 | 
			
		||||
1=--22-0-
 | 
			
		||||
2-0-
 | 
			
		||||
1-0=-2
 | 
			
		||||
20-02102
 | 
			
		||||
1=0=20----21=12=-
 | 
			
		||||
20=111-12=21101=
 | 
			
		||||
111=1=-2=0=--21
 | 
			
		||||
11-
 | 
			
		||||
10-1=01=-
 | 
			
		||||
1222-10
 | 
			
		||||
1=2-1
 | 
			
		||||
20
 | 
			
		||||
101==12-1-0
 | 
			
		||||
1-=22=--=22=1=22
 | 
			
		||||
1200-010-10=021
 | 
			
		||||
1=2-10=-02--=-
 | 
			
		||||
12-0=000=0
 | 
			
		||||
1==10=00===1--
 | 
			
		||||
2-1=-=1===1=-0=---
 | 
			
		||||
1=11=120
 | 
			
		||||
2===002010=-=0
 | 
			
		||||
1==00212=01-002=221
 | 
			
		||||
10020221===-
 | 
			
		||||
1--01=-=0-20-101-=-
 | 
			
		||||
112=101
 | 
			
		||||
10-
 | 
			
		||||
1220=1
 | 
			
		||||
2=
 | 
			
		||||
1=1120=--0
 | 
			
		||||
11-21200=
 | 
			
		||||
2==011-10-0==0=0=
 | 
			
		||||
12-=102
 | 
			
		||||
100-022
 | 
			
		||||
1=1
 | 
			
		||||
201-0--=-
 | 
			
		||||
2-02
 | 
			
		||||
21=11=00020
 | 
			
		||||
12=20-
 | 
			
		||||
1101=00-1
 | 
			
		||||
1=0=-11--=-010-==1
 | 
			
		||||
1-2-0=00=-=220=11-
 | 
			
		||||
2-2
 | 
			
		||||
12-2
 | 
			
		||||
12=10=2-=
 | 
			
		||||
20222110-10002
 | 
			
		||||
1002=0
 | 
			
		||||
12=11-=012
 | 
			
		||||
1==
 | 
			
		||||
1=00-01
 | 
			
		||||
110101222-020--111
 | 
			
		||||
2-0
 | 
			
		||||
1-12=1
 | 
			
		||||
222-10-12=00
 | 
			
		||||
11=1=1
 | 
			
		||||
10=2-00-121-2-=2
 | 
			
		||||
1---22-1-0=00-1220
 | 
			
		||||
2-=2210=-==2=010=
 | 
			
		||||
12201-111-220
 | 
			
		||||
2=122=022=22=12-1
 | 
			
		||||
211===2=020
 | 
			
		||||
121-2-0-=0==2=1
 | 
			
		||||
1-0221200-21100-
 | 
			
		||||
10
 | 
			
		||||
1-11
 | 
			
		||||
2===2=-2-
 | 
			
		||||
1-0-2021-21==
 | 
			
		||||
1==-00-=2-21===1200
 | 
			
		||||
22
 | 
			
		||||
1222=20=120=1-
 | 
			
		||||
11=120001012==01-1
 | 
			
		||||
2=-1--00
 | 
			
		||||
10==121--221
 | 
			
		||||
1=2100102=20012
 | 
			
		||||
2==1-
 | 
			
		||||
1-
 | 
			
		||||
10-2--0
 | 
			
		||||
							
								
								
									
										42
									
								
								25/solution.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								25/solution.mjs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,42 @@
 | 
			
		||||
import { readFileSync } from 'node:fs';
 | 
			
		||||
 | 
			
		||||
const input = readFileSync('input', 'utf-8');
 | 
			
		||||
 | 
			
		||||
function decToSnafu(num) {
 | 
			
		||||
  const maxP = Math.floor(Math.log(num * 2) / Math.log(5));
 | 
			
		||||
 | 
			
		||||
  return new Array(maxP + 1)
 | 
			
		||||
    .fill()
 | 
			
		||||
    .map((_, i) => i)
 | 
			
		||||
    .reverse()
 | 
			
		||||
    .reduce(([snafu, remainder], p) => {
 | 
			
		||||
      const sign = remainder < 0 ? -1 : 1;
 | 
			
		||||
      const mult = Math.floor(Math.abs(remainder) / Math.pow(5, p) + 0.5);
 | 
			
		||||
 | 
			
		||||
      const val = sign * Math.pow(5, p) * mult;
 | 
			
		||||
      const char = ['=', '-', '0', '1', '2'][sign * mult + 2];
 | 
			
		||||
      
 | 
			
		||||
      return [snafu + char, remainder - val];
 | 
			
		||||
    }, ['', num])[0];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function snafuToDec(snafu) {
 | 
			
		||||
  return snafu
 | 
			
		||||
    .split('')
 | 
			
		||||
    .reverse()
 | 
			
		||||
    .map((d, p) =>
 | 
			
		||||
      Math.pow(5, p) *
 | 
			
		||||
      (['=', '-', '0', '1', '2'].indexOf(d) - 2)
 | 
			
		||||
    )
 | 
			
		||||
    .reduce((total, num) => total + num);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const total = input
 | 
			
		||||
  .split('\n')
 | 
			
		||||
  .filter(line => !!line.trim())
 | 
			
		||||
  .map(line => snafuToDec(line))
 | 
			
		||||
  .reduce((total, value) => total + value);
 | 
			
		||||
 | 
			
		||||
const totalSnafu = decToSnafu(total);
 | 
			
		||||
 | 
			
		||||
console.log('The sum of all fuel requirements in SNAFU is:', totalSnafu);
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user