day 2 complete
This commit is contained in:
parent
4ec3d4daaa
commit
e4b6e71e0b
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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user