day 2 complete

This commit is contained in:
Tanishq Dubey 2022-12-03 00:59:02 -05:00
parent 4ec3d4daaa
commit e4b6e71e0b
5 changed files with 2736 additions and 0 deletions

86
day2/.gitignore vendored Normal file
View 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

File diff suppressed because it is too large Load Diff

5
day2/package.json Normal file
View File

@ -0,0 +1,5 @@
{
"devDependencies": {
"@types/node": "^18.11.10"
}
}

138
day2/solution.ts Normal file
View 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
View File

@ -0,0 +1,7 @@
{
"compilerOptions": {
"types": [
"node"
]
}
}