67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { calculateMinimumCubePowers, calculatePossibleGames, parseGame } from "./day_two";
 | 
						|
 | 
						|
const partOneInput = `Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
 | 
						|
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
 | 
						|
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
 | 
						|
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
 | 
						|
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green`
 | 
						|
 | 
						|
describe('Day Two', () => {
 | 
						|
    it('should parse a game', () => {
 | 
						|
        const games = partOneInput.split('\n').map(parseGame);
 | 
						|
        expect(games).toEqual([
 | 
						|
            {
 | 
						|
                id: 1,
 | 
						|
                rounds: [
 | 
						|
                    { blue: 3, green: 0, red: 4 },
 | 
						|
                    { blue: 6, red: 1, green: 2 },
 | 
						|
                    { blue: 0, red: 0, green: 2 } 
 | 
						|
                ]
 | 
						|
            },
 | 
						|
            {
 | 
						|
                id: 2,
 | 
						|
                rounds: [
 | 
						|
                    { blue: 1, green: 2, red: 0 },
 | 
						|
                    { blue: 4, red: 1, green: 3 },
 | 
						|
                    { blue: 1, red: 0, green: 1 } 
 | 
						|
                ]
 | 
						|
            },
 | 
						|
            {
 | 
						|
                id: 3,
 | 
						|
                rounds: [
 | 
						|
                    { blue: 6, green: 8, red: 20 },
 | 
						|
                    { blue: 5, red: 4, green: 13 },
 | 
						|
                    { blue: 0, red: 1, green: 5 } 
 | 
						|
                ]
 | 
						|
            },
 | 
						|
            {
 | 
						|
                id: 4,
 | 
						|
                rounds: [
 | 
						|
                    { blue: 6, green: 1, red: 3 },
 | 
						|
                    { blue: 0, red: 6, green: 3 },
 | 
						|
                    { blue: 15, red: 14, green: 3 } 
 | 
						|
                ]
 | 
						|
            },
 | 
						|
            {
 | 
						|
                id: 5,
 | 
						|
                rounds: [
 | 
						|
                    { blue: 1, green: 3, red: 6 },
 | 
						|
                    { blue: 2, red: 1, green: 2 },
 | 
						|
                ]
 | 
						|
            }
 | 
						|
        ]);
 | 
						|
    });
 | 
						|
 | 
						|
    it('should calculate which games should only have been possible with the number of cubes', () => {
 | 
						|
        const games = partOneInput.split('\n').map(parseGame);
 | 
						|
        expect(calculatePossibleGames(games, {
 | 
						|
            blue: 14,
 | 
						|
            red: 12,
 | 
						|
            green: 13
 | 
						|
        })).toEqual(8);
 | 
						|
    });
 | 
						|
    it('should find the minimum cubes in a set and sum the powers of the cubes', () => {
 | 
						|
        const games = partOneInput.split('\n').map(parseGame);
 | 
						|
        expect(calculateMinimumCubePowers(games)).toEqual(2286);
 | 
						|
    });
 | 
						|
}); |