day 2 complete
This commit is contained in:
		
							
								
								
									
										86
									
								
								day2/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								day2/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,86 @@
 | 
			
		||||
node_modules/
 | 
			
		||||
.node_modules/
 | 
			
		||||
built/*
 | 
			
		||||
tests/cases/rwc/*
 | 
			
		||||
tests/cases/test262/*
 | 
			
		||||
tests/cases/perf/*
 | 
			
		||||
!tests/cases/webharness/compilerToString.js
 | 
			
		||||
test-args.txt
 | 
			
		||||
~*.docx
 | 
			
		||||
\#*\#
 | 
			
		||||
.\#*
 | 
			
		||||
tests/baselines/local/*
 | 
			
		||||
tests/baselines/local.old/*
 | 
			
		||||
tests/services/baselines/local/*
 | 
			
		||||
tests/baselines/prototyping/local/*
 | 
			
		||||
tests/baselines/rwc/*
 | 
			
		||||
tests/baselines/test262/*
 | 
			
		||||
tests/baselines/reference/projectOutput/*
 | 
			
		||||
tests/baselines/local/projectOutput/*
 | 
			
		||||
tests/baselines/reference/testresults.tap
 | 
			
		||||
tests/services/baselines/prototyping/local/*
 | 
			
		||||
tests/services/browser/typescriptServices.js
 | 
			
		||||
src/harness/*.js
 | 
			
		||||
src/compiler/diagnosticInformationMap.generated.ts
 | 
			
		||||
src/compiler/diagnosticMessages.generated.json
 | 
			
		||||
src/parser/diagnosticInformationMap.generated.ts
 | 
			
		||||
src/parser/diagnosticMessages.generated.json
 | 
			
		||||
rwc-report.html
 | 
			
		||||
*.swp
 | 
			
		||||
build.json
 | 
			
		||||
*.actual
 | 
			
		||||
tests/webTestServer.js
 | 
			
		||||
tests/webTestServer.js.map
 | 
			
		||||
tests/webhost/*.d.ts
 | 
			
		||||
tests/webhost/webtsc.js
 | 
			
		||||
tests/cases/**/*.js
 | 
			
		||||
!tests/cases/docker/*.js/
 | 
			
		||||
tests/cases/**/*.js.map
 | 
			
		||||
*.config
 | 
			
		||||
scripts/eslint/built/
 | 
			
		||||
scripts/debug.bat
 | 
			
		||||
scripts/run.bat
 | 
			
		||||
scripts/**/*.js
 | 
			
		||||
scripts/**/*.js.map
 | 
			
		||||
coverage/
 | 
			
		||||
internal/
 | 
			
		||||
**/.DS_Store
 | 
			
		||||
.settings
 | 
			
		||||
**/.vs
 | 
			
		||||
**/.vscode/*
 | 
			
		||||
!**/.vscode/tasks.json
 | 
			
		||||
!**/.vscode/settings.template.json
 | 
			
		||||
!**/.vscode/launch.template.json
 | 
			
		||||
!**/.vscode/extensions.json
 | 
			
		||||
!tests/cases/projects/projectOption/**/node_modules
 | 
			
		||||
!tests/cases/projects/NodeModulesSearch/**/*
 | 
			
		||||
!tests/baselines/reference/project/nodeModules*/**/*
 | 
			
		||||
.idea
 | 
			
		||||
yarn.lock
 | 
			
		||||
yarn-error.log
 | 
			
		||||
.parallelperf.*
 | 
			
		||||
tests/cases/user/*/package-lock.json
 | 
			
		||||
tests/cases/user/*/node_modules/
 | 
			
		||||
tests/cases/user/*/**/*.js
 | 
			
		||||
tests/cases/user/*/**/*.js.map
 | 
			
		||||
tests/cases/user/*/**/*.d.ts
 | 
			
		||||
!tests/cases/user/zone.js/
 | 
			
		||||
!tests/cases/user/bignumber.js/
 | 
			
		||||
!tests/cases/user/discord.js/
 | 
			
		||||
tests/baselines/reference/dt
 | 
			
		||||
.failed-tests
 | 
			
		||||
TEST-results.xml
 | 
			
		||||
package-lock.json
 | 
			
		||||
tests/cases/user/npm/npm
 | 
			
		||||
tests/cases/user/TypeScript-React-Starter/TypeScript-React-Starter
 | 
			
		||||
tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter
 | 
			
		||||
tests/cases/user/TypeScript-React-Native-Starter/TypeScript-React-Native-Starter
 | 
			
		||||
tests/cases/user/TypeScript-Vue-Starter/TypeScript-Vue-Starter
 | 
			
		||||
tests/cases/user/TypeScript-WeChat-Starter/TypeScript-WeChat-Starter
 | 
			
		||||
tests/cases/user/create-react-app/create-react-app
 | 
			
		||||
tests/cases/user/fp-ts/fp-ts
 | 
			
		||||
tests/cases/user/webpack/webpack
 | 
			
		||||
tests/cases/user/puppeteer/puppeteer
 | 
			
		||||
tests/cases/user/axios-src/axios-src
 | 
			
		||||
tests/cases/user/prettier/prettier
 | 
			
		||||
.eslintcache
 | 
			
		||||
							
								
								
									
										2500
									
								
								day2/input
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2500
									
								
								day2/input
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5
									
								
								day2/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								day2/package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@types/node": "^18.11.10"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										138
									
								
								day2/solution.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								day2/solution.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,138 @@
 | 
			
		||||
import { readFileSync } from 'fs';
 | 
			
		||||
import { join } from 'path';
 | 
			
		||||
 | 
			
		||||
enum GameStatus {
 | 
			
		||||
  Win = 1,
 | 
			
		||||
  Lose,
 | 
			
		||||
  Draw,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function didIWinRound(oppoMove: string, myMove: string): GameStatus {
 | 
			
		||||
  if (oppoMove == 'A') {
 | 
			
		||||
    if (myMove == 'X') {
 | 
			
		||||
      return GameStatus.Draw
 | 
			
		||||
    }
 | 
			
		||||
    if (myMove == 'Y') {
 | 
			
		||||
      return GameStatus.Win
 | 
			
		||||
    }
 | 
			
		||||
    if (myMove == 'Z') {
 | 
			
		||||
      return GameStatus.Lose
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (oppoMove == 'B') {
 | 
			
		||||
    if (myMove == 'X') {
 | 
			
		||||
      return GameStatus.Lose
 | 
			
		||||
    }
 | 
			
		||||
    if (myMove == 'Y') {
 | 
			
		||||
      return GameStatus.Draw
 | 
			
		||||
    }
 | 
			
		||||
    if (myMove == 'Z') {
 | 
			
		||||
      return GameStatus.Win
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (oppoMove == 'C') {
 | 
			
		||||
    if (myMove == 'X') {
 | 
			
		||||
      return GameStatus.Win
 | 
			
		||||
    }
 | 
			
		||||
    if (myMove == 'Y') {
 | 
			
		||||
      return GameStatus.Lose
 | 
			
		||||
    }
 | 
			
		||||
    if (myMove == 'Z') {
 | 
			
		||||
      return GameStatus.Draw
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return GameStatus.Lose;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function didIWinRoundPtTwo(opMove: string, myMove: string): {status:GameStatus, move:string} {
 | 
			
		||||
  if (myMove == 'Z') { // Win
 | 
			
		||||
    if (opMove == 'A') { // Rock
 | 
			
		||||
      return {status:GameStatus.Win, move:"Y"}; // Paper
 | 
			
		||||
    }
 | 
			
		||||
    if (opMove == 'B') { // Paper
 | 
			
		||||
      return {status:GameStatus.Win, move:"Z"}; // Sissors
 | 
			
		||||
    }
 | 
			
		||||
    if (opMove == 'C') { // Sissors
 | 
			
		||||
      return {status:GameStatus.Win, move:"X"}; // Rock
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (myMove == 'Y') { // Draw
 | 
			
		||||
    if (opMove == 'A') { // Rock
 | 
			
		||||
      return {status:GameStatus.Draw, move:"X"}; // Rock
 | 
			
		||||
    }
 | 
			
		||||
    if (opMove == 'B') { // Paper
 | 
			
		||||
      return {status:GameStatus.Draw, move:"Y"}; // Paper
 | 
			
		||||
    }
 | 
			
		||||
    if (opMove == 'C') { // Sissors
 | 
			
		||||
      return {status:GameStatus.Draw, move:"Z"}; // Sissors
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (myMove == 'X') { // Lose
 | 
			
		||||
    if (opMove == 'A') { // R
 | 
			
		||||
      return {status:GameStatus.Lose, move:"Z"}; // S
 | 
			
		||||
    }
 | 
			
		||||
    if (opMove == 'B') { // P
 | 
			
		||||
      return {status:GameStatus.Lose, move:"X"}; // R
 | 
			
		||||
    }
 | 
			
		||||
    if (opMove == 'C') { // S
 | 
			
		||||
      return {status:GameStatus.Lose, move:"Y"}; // P
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
let pointsLookup = {};
 | 
			
		||||
pointsLookup["A"] = 1;
 | 
			
		||||
pointsLookup["X"] = 1;
 | 
			
		||||
pointsLookup["B"] = 2;
 | 
			
		||||
pointsLookup["Y"] = 2;
 | 
			
		||||
pointsLookup["C"] = 3;
 | 
			
		||||
pointsLookup["Z"] = 3;
 | 
			
		||||
 | 
			
		||||
const fileString = readFileSync(join(__dirname, "input"), 'utf-8');
 | 
			
		||||
const rounds = fileString.split("\n");
 | 
			
		||||
 | 
			
		||||
var totalScore: number = 0;
 | 
			
		||||
var totalScoreTwo: number = 0;
 | 
			
		||||
 | 
			
		||||
for (const round of rounds){
 | 
			
		||||
  const moves = round.split(" ");
 | 
			
		||||
  if (moves.length != 2) {
 | 
			
		||||
    continue;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const opScore = pointsLookup[moves[0]];
 | 
			
		||||
  const myScore = pointsLookup[moves[1]];
 | 
			
		||||
 | 
			
		||||
  var roundScore: number = 0;
 | 
			
		||||
  const win = didIWinRound(moves[0], moves[1]);
 | 
			
		||||
  roundScore += myScore;
 | 
			
		||||
  if (win == GameStatus.Win) {
 | 
			
		||||
    roundScore += 6;
 | 
			
		||||
  } else if (win == GameStatus.Draw) {
 | 
			
		||||
    roundScore += 3;
 | 
			
		||||
  }
 | 
			
		||||
  totalScore += roundScore;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  var roundScorePt2: number = 0;
 | 
			
		||||
  const {status, move} = didIWinRoundPtTwo(moves[0], moves[1]);
 | 
			
		||||
  const myScorePt2 = pointsLookup[move];
 | 
			
		||||
  roundScorePt2 += myScorePt2;
 | 
			
		||||
  if (status == GameStatus.Win) {
 | 
			
		||||
    roundScorePt2 += 6;
 | 
			
		||||
  } else if (status == GameStatus.Draw) {
 | 
			
		||||
    roundScorePt2 += 3;
 | 
			
		||||
  }
 | 
			
		||||
  totalScoreTwo += roundScorePt2;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
console.log(totalScore);
 | 
			
		||||
console.log(totalScoreTwo);
 | 
			
		||||
							
								
								
									
										7
									
								
								day2/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								day2/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "types": [
 | 
			
		||||
      "node"
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user