{"version":3,"sources":["assets/images/meteor-blue.svg","components/button.js","redux/basic4/reducer.js","pages/Basic4/single.js","assets/images/star.svg","pages/Dashboard/index.js","pages/Basic4/index.js","pages/MasterMind/index.js","redux/mastermind/reducer.js","pages/MasterMind/single.js","pages/Game24/index.js","components/timer.js","redux/game24/reducer.js","pages/Game24/single.js","routes/allRoutes.js","routes/middleware/Authmiddleware.js","assets/images/alphastar-academy-logo.svg","assets/images/alphastar-academy-icon.svg","components/Layout/index.js","App.js","reportWebVitals.js","redux/user/reducer.js","redux/store.js","index.js","assets/images/star-empty.svg","components/alert.js"],"names":["Button","to","color","children","onClick","className","title","disabled","id","basic4Slice","createSlice","name","initialState","score","showIntroJs","reducers","setScore","state","action","payload","setShowIntroJs","actions","operators","correctAnswerScore","gameStatuses","PLAYING","CORRECT_ANSWER","CLOSE_ANSWER","WRONG_ANSWER","FAIL","TIMEOUT","INVALID_INPUT","gameResultDefaults","status","starCount","answer","gameDurationDefault","multiKeyInputs","multiKeySecondInputs","_steps","element","intro","position","src","star","width","height","alt","Single","props","dispatch","useDispatch","inputRef","useRef","useSelector","basic4","useState","userInput","setUserInput","smallNumbers","setSmallNumbers","bigNumbers","setBigNumbers","targetNumber","setTargetNumber","gameResult","setGameResult","gameDuration","setGameDuration","timerKey","setTimerKey","multiKeyInput","setMultiKeyInput","introJsSteps","setIntroJsSteps","showRules","setShowRules","handleToggleRules","newGame","handleShowIntroJs","handleHideIntroJs","handleExampleUserInputs","type","input","index","useEffect","length","generateSmallNumbers","numbers","i","push","Math","floor","random","sort","a","b","generateBigNumbers","_bigNumbers","splice","generateTargetNumber","handleCheckUserInputOrder","lastInput","handleSetUserInput","event","currentTarget","blur","resetGame","continueToPlay","handleClearUserInput","handleRemoveLastUserInput","_userInput","pop","validateUserInputs","valid","forEach","indexOf","handleCheckUserInput","userInputText","map","join","replace","userResult","eval","diff","round","abs","handleButtonDisabled","number","find","handleTimerIsPlaying","handleTimeout","prevState","validateKeyPress","parseInt","key","isPossibleBigNumber","bigNumber","String","charAt","isSingleKeyInput","filter","isMultiKeyInput","findIndexInSmall","findIndexInBig","createInputType","indexInSmall","indexInBig","indexInMulti","indexInOperator","findIndex","handleWindowKeyDown","preventDefault","myEvent","keyCode","inputType","multiInputType","window","addEventListener","removeEventListener","style","textAlign","display","meteorBlue","ref","isPlaying","duration","size","strokeWidth","colors","onComplete","remainingTime","operator","show","text","buttons","subText","html","maxWidth","enabled","steps","initialStep","onExit","options","hidePrev","hideNext","doneLabel","nextToDone","withRouter","GameCard","Dashboard","step","setStep","timer","setTimeout","clearTimeout","Basic4","MasterMind","mastermindSlice","allowedDigits","mastermind","userGuesses","setUserGuesses","generateNumber","split","digits","digitIndex","digit","_targetNumber","userGuess","guess","correctPlace","wrongPlace","userScore","userGuessesCount","calculateScore","handleAnswer","UserGuess","Game24","Timer","counter","onChange","changeColorSeconds","seconds","setSeconds","myInterval","setMyInterval","interval","setInterval","prevData","clearInterval","game24Slice","data","_24","_48","_72","_96","setData","targetNumbers","CHOOSE_TARGET","game24","userInputHistory","setUserInputHistory","activeUserInputHistory","setActiveUserInputHistory","setNumbers","introJsInitialStep","setIntroJsInitialStep","timerIsPlaying","setTimerIsPlaying","timerSeconds","setTimerSeconds","timerCounter","setTimerCounter","handleSetTarget","generateNumbers","unsolvedData","d","solved","dataIndex","value","toString","checkUserAnswer","_numbers","num","_data","solvedIndex","isEqual","oldNumbers","newValue","data24","require","data48","data72","data96","loadData","handleNumberText","_evalUserInput","newInput","Number","isInteger","evalUserInput","newNumbers","nextActive","newUserInputHistory","slice","isSelected","selected","history","nextHistory","onBeforeChange","nextStepIndex","nextElement","userRoutes","path","component","Basic4Single","MasterMindSingle","Game24Single","exact","authRoutes","Authmiddleware","Component","isAuthProtected","Layout","layout","rest","render","ReactGA","pageview","location","pathname","from","Container","href","target","rel","Logo","Icon","App","Fragment","route","idx","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","userSlice","user","setUser","rootReducer","combineReducers","userReducer","basic4Reducer","mastermindReducer","game24Reducer","persistConfig","version","storage","persistedReducer","persistReducer","store","configureStore","reducer","middleware","getDefaultMiddleware","serializableCheck","ignoredActions","FLUSH","REHYDRATE","PAUSE","PERSIST","PURGE","REGISTER","persistor","persistStore","initialize","ReactDOM","StrictMode","loading","document","getElementById","Stars","starEmpty","Alert","button"],"mappings":"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","file":"static/js/main.4154a560.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/meteor-blue.d1044e39.svg\";","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nconst Button = ({\n to,\n color,\n children,\n onClick,\n className,\n title,\n disabled,\n id\n}) => {\n if (to)\n return (\n \n {children}\n \n )\n else\n return (\n \n {children}\n \n )\n}\n\nexport default Button\n","import { createSlice } from '@reduxjs/toolkit'\n\nexport const basic4Slice = createSlice({\n name: 'basic4',\n initialState: {\n score: 0,\n showIntroJs: true\n },\n reducers: {\n setScore: (state, action) => {\n state.score = action.payload\n },\n setShowIntroJs: (state, action) => {\n state.showIntroJs = action.payload\n }\n }\n})\n\n// Action creators are generated for each case reducer function\nexport const { setScore, setShowIntroJs } = basic4Slice.actions\n\nexport default basic4Slice.reducer\n","import React, { useState, useEffect, useRef } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport Button from '../../components/button'\nimport meteorBlue from '../../assets/images/meteor-blue.svg'\nimport star from '../../assets/images/star.svg'\nimport Alert from '../../components/alert'\nimport { setShowIntroJs, setScore } from '../../redux/basic4/reducer'\nimport { withRouter } from 'react-router-dom'\nimport { CountdownCircleTimer } from 'react-countdown-circle-timer'\nimport { Steps } from 'intro.js-react'\nimport 'intro.js/introjs.css'\n\nconst operators = ['+', '-', 'x', '÷', '(', ')']\nconst correctAnswerScore = 10\nconst gameStatuses = {\n PLAYING: 'playing',\n CORRECT_ANSWER: 'correctAnswer',\n CLOSE_ANSWER: 'closeAnswer',\n WRONG_ANSWER: 'wrongAnswer',\n FAIL: 'fail',\n TIMEOUT: 'timeout',\n INVALID_INPUT: 'invalidInput'\n}\nconst gameResultDefaults = {\n status: gameStatuses.PLAYING,\n starCount: 0,\n score: 0,\n answer: 0\n}\nconst gameDurationDefault = 90\nconst multiKeyInputs = ['1', '2', '5', '7']\nconst multiKeySecondInputs = ['0', '5']\n\nconst _steps = [\n {\n element: '.timer',\n intro:\n 'You have a limited time for each round and the remaining time is shown on the top right section of the window.',\n position: 'left'\n },\n {\n element: '.user-input-buttons',\n intro:\n 'You can use the keyboard or mouse to write an arithmetic expression in the input box.',\n position: 'top'\n },\n {\n element: '#ClearUserInput',\n intro:\n 'You can click on the button to clear the entire input',\n position: 'left'\n },\n {\n element: '#RemoveLastUserInput',\n intro:\n 'You can press \"Backspace\" or click on the button to erase the last operator or the number in your input.',\n position: 'left'\n },\n {\n element: '#CheckResults',\n intro:\n 'When you are done with the input, you can press \"Enter\" or click on the Check Result button',\n position: 'top'\n },\n {\n intro: (\n <>\n Stars:\n
\n If your score is 9 or 10, you will see{' '}\n star\n star\n star\n
\n If your score is 6,7 or 8, you will see{' '}\n star\n star\n
\n If your score is 1 through 5, you will see{' '}\n star\n \n )\n }\n]\n\nconst Single = props => {\n const dispatch = useDispatch()\n const inputRef = useRef()\n const { score, showIntroJs } = useSelector(state => state.basic4)\n const [userInput, setUserInput] = useState([])\n const [smallNumbers, setSmallNumbers] = useState([])\n const [bigNumbers, setBigNumbers] = useState([])\n const [targetNumber, setTargetNumber] = useState(null)\n const [gameResult, setGameResult] = useState(gameResultDefaults)\n const [gameDuration, setGameDuration] = useState(gameDurationDefault)\n const [timerKey, setTimerKey] = useState(0)\n const [multiKeyInput, setMultiKeyInput] = useState(null)\n const [introJsSteps, setIntroJsSteps] = useState(null)\n const [showRules, setShowRules] = useState(false)\n\n const handleToggleRules = () => {\n if (showRules) newGame()\n setShowRules(!showRules)\n }\n\n const handleShowIntroJs = () => {\n dispatch(setShowIntroJs(true))\n }\n\n const handleHideIntroJs = () => {\n dispatch(setShowIntroJs(false))\n setIntroJsSteps(null)\n newGame()\n }\n\n const handleExampleUserInputs = () => {\n setUserInput([\n {\n type: 'small',\n input: smallNumbers[0],\n index: 0\n },\n {\n type: 'operator',\n input: 'x',\n index: 0\n },\n {\n type: 'small',\n input: smallNumbers[1],\n index: 1\n }\n ])\n }\n\n useEffect(() => {\n if (showIntroJs && smallNumbers.length > 0 && userInput.length === 0) {\n handleExampleUserInputs()\n setIntroJsSteps(_steps)\n }\n // eslint-disable-next-line\n }, [showIntroJs, smallNumbers, userInput])\n\n const generateSmallNumbers = () => {\n let numbers = []\n for (let i = 0; i < 4; i++) numbers.push(Math.floor(Math.random() * 9) + 1)\n numbers.sort(function (a, b) {\n return a - b\n })\n setSmallNumbers(numbers)\n }\n\n const generateBigNumbers = () => {\n const _bigNumbers = [25, 50, 75, 100]\n let numbers = []\n for (let i = 0; i < 2; i++)\n numbers.push(\n _bigNumbers.splice(Math.floor(Math.random() * _bigNumbers.length), 1)[0]\n )\n numbers.sort(function (a, b) {\n return a - b\n })\n setBigNumbers(numbers)\n }\n\n const generateTargetNumber = () => {\n setTargetNumber(Math.floor(Math.random() * 898) + 101)\n }\n\n const handleCheckUserInputOrder = (input, type) => {\n if (userInput.length === 0 && type === 'operator' && input !== '(')\n return false\n else if (userInput.length > 0) {\n const lastInput = userInput[userInput.length - 1]\n if (\n (lastInput.type === 'small' || lastInput.type === 'big') &&\n (type === 'small' || type === 'big')\n )\n return false\n else if (\n lastInput.type === 'operator' &&\n type === 'operator' &&\n lastInput.input !== ')' &&\n lastInput.input !== '(' &&\n input !== '('\n )\n return false\n else if (lastInput.input === ')' && (type === 'small' || type === 'big'))\n return false\n else if (lastInput.input === '(' && type === 'operator' && input !== '(')\n return false\n else if (lastInput.input === ')' && input === '(') return false\n }\n return true\n }\n\n const handleSetUserInput = (input, type, index) => event => {\n if (handleCheckUserInputOrder(input, type)) {\n setUserInput([\n ...userInput,\n {\n type,\n input,\n index: index || 0\n }\n ])\n }\n event.currentTarget.blur()\n }\n\n const newGame = () => {\n if (\n //gameResult.status === gameStatuses.CORRECT_ANSWER ||\n gameResult.status === gameStatuses.CLOSE_ANSWER\n ) {\n dispatch(setScore(score + gameResult.score))\n }\n resetGame()\n }\n\n const continueToPlay = () => {\n if (\n gameResult.status === gameStatuses.CLOSE_ANSWER ||\n gameResult.status === gameStatuses.WRONG_ANSWER ||\n gameResult.status === gameStatuses.INVALID_INPUT\n ) {\n setGameResult({\n ...gameResult,\n status: gameStatuses.PLAYING\n })\n }\n }\n\n const resetGame = () => {\n setGameResult(gameResultDefaults)\n setUserInput([])\n generateSmallNumbers()\n generateBigNumbers()\n generateTargetNumber()\n setGameDuration(gameDurationDefault)\n setTimerKey(timerKey + 1)\n }\n\n const handleClearUserInput = () => {\n setUserInput([])\n }\n\n const handleRemoveLastUserInput = () => {\n if (userInput.length > 0) {\n let _userInput = [...userInput]\n _userInput.pop()\n setUserInput(_userInput)\n }\n }\n\n const validateUserInputs = () => {\n let valid = true\n userInput.forEach(input => {\n if (\n smallNumbers.indexOf(input.input) === -1 &&\n bigNumbers.indexOf(input.input) === -1 &&\n operators.indexOf(input.input) === -1\n )\n valid = false\n })\n return valid\n }\n\n const handleCheckUserInput = () => {\n if (validateUserInputs()) {\n let userInputText = userInput.map(input => input.input).join('')\n userInputText = userInputText.replace(/x/g, '*')\n userInputText = userInputText.replace(/÷/g, '/')\n try {\n // eslint-disable-next-line\n const userResult = eval(userInputText)\n\n if (userResult === targetNumber) {\n setGameResult({\n status: gameStatuses.CORRECT_ANSWER,\n score: 10,\n starCount: 3\n })\n dispatch(setScore(score + 10))\n } else {\n const diff = Math.round(Math.abs(targetNumber - userResult))\n let score = correctAnswerScore - diff\n if (score <= 0) {\n setGameResult({\n status: gameStatuses.WRONG_ANSWER,\n score: 0,\n starCount: 0,\n answer: userResult\n })\n } else {\n const starCount = score > 8 ? 3 : score > 5 ? 2 : 1\n setGameResult({\n status: gameStatuses.CLOSE_ANSWER,\n score,\n starCount,\n answer: userResult\n })\n }\n }\n } catch {\n setGameResult({\n status: gameStatuses.INVALID_INPUT\n })\n }\n } else {\n setGameResult({\n status: gameStatuses.INVALID_INPUT\n })\n }\n }\n\n const handleButtonDisabled = (number, type, index) => {\n const isExists = userInput.find(\n input =>\n input.input === number && input.type === type && input.index === index\n )\n if (isExists) return true\n return false\n }\n\n const handleTimerIsPlaying = () => {\n if (\n gameResult.status === gameStatuses.CORRECT_ANSWER ||\n gameResult.status === gameStatuses.TIMEOUT ||\n showIntroJs ||\n showRules\n )\n return false\n return true\n }\n\n const handleTimeout = () => {\n setGameResult(prevState => {\n if (prevState.score > 0) dispatch(setScore(score + prevState.score))\n return {\n ...prevState,\n status: gameStatuses.TIMEOUT\n }\n })\n return [true, 250]\n }\n\n const validateKeyPress = event => {\n if (\n smallNumbers.indexOf(parseInt(event.key)) === -1 &&\n multiKeyInputs.indexOf(event.key) === -1 &&\n operators.indexOf(event.key) === -1\n )\n return false\n return true\n }\n\n const isPossibleBigNumber = key => {\n if (multiKeyInputs.indexOf(key) !== -1) {\n const bigNumber = bigNumbers.find(\n number => String(number).charAt(0) === key\n )\n if (\n bigNumber &&\n !userInput.find(\n input => input.type === 'big' && input.input === bigNumber\n )\n )\n return true\n }\n return false\n }\n\n const isSingleKeyInput = event => {\n const smallNumberCount = smallNumbers.filter(\n number => number === parseInt(event.key)\n ).length\n const userInputCount = userInput.filter(\n input => input.type === 'small' && input.input === parseInt(event.key)\n ).length\n\n if (smallNumberCount > userInputCount && !isPossibleBigNumber(event.key))\n return true\n return false\n }\n\n const isMultiKeyInput = event => {\n if (multiKeyInputs.indexOf(event.key) !== -1) return true\n return false\n }\n\n const findIndexInSmall = key => {\n for (let i = 0; i < smallNumbers.length; i++) {\n if (\n parseInt(key) === smallNumbers[i] &&\n !userInput.find(\n input =>\n input.type === 'small' &&\n input.input === smallNumbers[i] &&\n input.index === i\n )\n ) {\n return i\n }\n }\n return -1\n }\n\n const findIndexInBig = key => {\n for (let i = 0; i < bigNumbers.length; i++) {\n if (\n parseInt(key) === bigNumbers[i] &&\n !userInput.find(\n input =>\n input.type === 'big' &&\n input.input === bigNumbers[i] &&\n input.index === i\n )\n ) {\n return i\n }\n }\n return -1\n }\n\n const createInputType = event => {\n const indexInSmall = findIndexInSmall(event.key)\n const indexInBig = findIndexInBig(event.key)\n const indexInMulti = multiKeyInputs.indexOf(event.key)\n const indexInOperator = operators.indexOf(event.key)\n if (indexInSmall !== -1) {\n return {\n type: 'small',\n input: parseInt(event.key),\n index: indexInSmall\n }\n } else if (indexInBig !== -1)\n return {\n type: 'big',\n input: parseInt(event.key),\n index: indexInBig\n }\n else if (indexInMulti !== -1)\n return {\n type: 'big',\n input: parseInt(event.key),\n index: indexInMulti\n }\n else if (event.key === '10') {\n if (!bigNumbers.find(number => number === 100)) return false\n else if (\n userInput.find(input => input.type === 'big' && input.input === 100)\n )\n return false\n return {\n type: 'big',\n input: 100,\n index: bigNumbers.findIndex(number => number === 100)\n }\n } else if (indexInOperator !== -1)\n return {\n type: 'operator',\n input: event.key,\n index: indexInOperator\n }\n return false\n }\n\n const handleWindowKeyDown = event => {\n event.preventDefault()\n\n let myEvent = { key: event.key, keyCode: event.keyCode }\n if (myEvent.key === '*') myEvent.key = 'x'\n if (myEvent.key === '/') myEvent.key = '÷'\n\n if (myEvent.keyCode === 27) handleClearUserInput()\n else if (myEvent.keyCode === 13 && userInput.length > 2) {\n if (gameResult.status === gameStatuses.PLAYING) handleCheckUserInput()\n else if (\n gameResult.status === gameStatuses.CORRECT_ANSWER ||\n gameResult.status === gameStatuses.FAIL ||\n gameResult.status === gameStatuses.TIMEOUT\n )\n newGame()\n else if (\n gameResult.status === gameStatuses.CLOSE_ANSWER ||\n gameResult.status === gameStatuses.WRONG_ANSWER ||\n gameResult.status === gameStatuses.INVALID_INPUT\n )\n continueToPlay()\n } else if (myEvent.keyCode === 8) {\n handleRemoveLastUserInput()\n if (multiKeyInput !== null) setMultiKeyInput(null)\n } else if (\n multiKeyInput !== null &&\n multiKeySecondInputs.indexOf(myEvent.key) !== -1\n ) {\n myEvent.key = multiKeyInput + myEvent.key\n const inputType = createInputType(myEvent)\n if (\n inputType !== false &&\n handleCheckUserInputOrder(myEvent.key, inputType.type)\n ) {\n setUserInput([...userInput, inputType])\n setMultiKeyInput(null)\n } else if (inputType === false) {\n setMultiKeyInput(null)\n } else {\n setMultiKeyInput(myEvent.key)\n }\n } else if (multiKeyInput !== null) {\n const inputType = createInputType(myEvent)\n const multiInputType = createInputType({ key: multiKeyInput })\n if (\n inputType !== false &&\n multiInputType !== false &&\n inputType.type === 'operator' &&\n isSingleKeyInput({ key: multiInputType.input })\n ) {\n setUserInput([...userInput, multiInputType, inputType])\n setMultiKeyInput(null)\n } else if (inputType !== false && isSingleKeyInput(myEvent)) {\n setUserInput([...userInput, inputType])\n setMultiKeyInput(null)\n }\n } else if (validateKeyPress(myEvent)) {\n const inputType = createInputType(myEvent)\n if (\n inputType !== false &&\n handleCheckUserInputOrder(myEvent.key, inputType.type)\n ) {\n if (isSingleKeyInput(myEvent)) {\n setUserInput([...userInput, inputType])\n } else if (isMultiKeyInput(myEvent)) {\n setMultiKeyInput(myEvent.key)\n } else if (inputType.type === 'operator') {\n setUserInput([...userInput, inputType])\n }\n }\n }\n }\n\n useEffect(() => {\n resetGame()\n return () => {}\n // eslint-disable-next-line\n }, [])\n\n useEffect(() => {\n window.addEventListener('keydown', handleWindowKeyDown)\n return () => {\n window.removeEventListener('keydown', handleWindowKeyDown)\n }\n // eslint-disable-next-line\n }, [userInput, multiKeyInput, gameResult])\n\n return (\n
\n
\n
\n
\n star\n {score}\n
\n
\n
\n meteor\n

Basic 4

\n
\n
\n {/* */}\n \n \n \n \n \n \n \n
\n
\n\n
\n

Target Number

\n
{targetNumber}
\n\n
\n \n {({ remainingTime }) => remainingTime}\n \n
\n\n
\n \n {userInput.map(input => input.input)}\n \n {userInput.length > 0 && (\n
\n \n \n \n \n
\n )}\n
\n\n
\n
\n {smallNumbers.map((number, index) => (\n \n {number}\n \n ))}\n {bigNumbers.map((number, index) => (\n \n {number}\n \n ))}\n
\n\n
\n {operators.map((operator, index) => {\n return (\n \n {operator}\n \n )\n })}\n
\n
\n\n {userInput.length > 2 && (\n
\n \n
\n )}\n\n \n \n \n \n \n \n \n
Objective
\n

\n Your goal is to reach or get close to the given \"target number\"\n using four basic operations and given numbers.\n

\n
Rules
\n

\n You are given limited time.\n
\n You can use each number at most once\n
\n You can only use the given operations +, -, x, /, and\n parentheses\n
\n

\n
Scoring
\n

\n 10 pts to reach the target number\n
\n You will get points if you are within 9 away from the target\n number; 9 points if you are 1 away, 8 points if you are 2 away,\n etc.\n

\n

\n If your first attempt is not the target number and you still\n have time, you can try again until the time is up. You will be\n scored based on your last attempt.\n
\n

\n
\n }\n buttons={[\n {\n text: 'Close',\n onClick: handleToggleRules,\n color: 'primary'\n }\n ]}\n />\n
\n\n {showIntroJs && introJsSteps !== null && (\n \n )}\n \n )\n}\n\nexport default withRouter(Single)\n","export default __webpack_public_path__ + \"static/media/star.5d3c5640.svg\";","import React, { useState, useEffect } from 'react'\nimport Button from '../../components/button'\nimport meteorBlue from '../../assets/images/meteor-blue.svg'\n\nconst GameCard = ({ title, to }) => {\n return (\n
\n meteor\n

{title}

\n {to ? (\n \n ) : (\n
Under Construction
\n )}\n
\n )\n}\n\nconst Dashboard = () => {\n const [step, setStep] = useState(0)\n\n useEffect(() => {\n const timer = setTimeout(() => {\n if (step < 3) setStep(step + 1)\n }, 200)\n\n return () => {\n clearTimeout(timer)\n }\n })\n\n return (\n
\n {step >= 1 && }\n {step >= 2 && }\n {step >= 3 && }\n
\n )\n}\n\nexport default Dashboard\n","import React from 'react'\nimport Button from '../../components/button'\nimport meteorBlue from '../../assets/images/meteor-blue.svg'\n\nconst Basic4 = () => {\n return (\n
\n
\n \n meteor\n

Basic 4

\n \n {/*
\n */}\n
\n
\n )\n}\n\nexport default Basic4\n","import React from 'react'\nimport Button from '../../components/button'\nimport meteorBlue from '../../assets/images/meteor-blue.svg'\n\nconst MasterMind = () => {\n return (\n
\n
\n \n meteor\n

MasterMind

\n \n {/*
\n */}\n
\n
\n )\n}\n\nexport default MasterMind\n","import { createSlice } from '@reduxjs/toolkit'\n\nexport const mastermindSlice = createSlice({\n name: 'mastermind',\n initialState: {\n score: 0,\n showIntroJs: true\n },\n reducers: {\n setScore: (state, action) => {\n state.score = action.payload\n },\n setShowIntroJs: (state, action) => {\n state.showIntroJs = action.payload\n }\n }\n})\n\n// Action creators are generated for each case reducer function\nexport const { setScore, setShowIntroJs } = mastermindSlice.actions\n\nexport default mastermindSlice.reducer\n","import React, { useState, useEffect, useRef } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport Button from '../../components/button'\nimport meteorBlue from '../../assets/images/meteor-blue.svg'\nimport star from '../../assets/images/star.svg'\nimport Alert from '../../components/alert'\nimport { setShowIntroJs, setScore } from '../../redux/mastermind/reducer'\nimport { withRouter } from 'react-router-dom'\nimport { Steps } from 'intro.js-react'\nimport 'intro.js/introjs.css'\n\nconst allowedDigits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]\nconst targetNumberDigitCount = 4\nconst correctAnswerScore = 10\nconst gameStatuses = {\n PLAYING: 'playing',\n CORRECT_ANSWER: 'correctAnswer',\n GIVE_UP: 'giveUp',\n INVALID_INPUT: 'invalidInput',\n END_GAME_SUMMARY: 'endGameSummary'\n}\nconst gameResultDefaults = {\n status: gameStatuses.PLAYING,\n starCount: 0,\n score: 0,\n answer: 0\n}\nconst _steps = [\n {\n element: '.user-input-buttons',\n intro:\n 'You can use the keyboard or mouse to write an arithmetic expression in the input box.',\n position: 'top'\n },\n {\n element: '#ClearUserInput',\n intro:\n 'You can click on the button to clear the entire input',\n position: 'left'\n },\n {\n element: '#RemoveLastUserInput',\n intro:\n 'You can press \"Backspace\" or click on the button to erase the last operator or the number in your input.',\n position: 'left'\n },\n {\n element: '#CheckResults',\n intro:\n 'When you are done with the input, you can press \"Enter\" or click on the Check Result button',\n position: 'top'\n },\n {\n intro: (\n <>\n Stars:\n
\n If your score is 9 or 10, you will see{' '}\n star\n star\n star\n
\n If your score is 6,7 or 8, you will see{' '}\n star\n star\n
\n If your score is 1 through 5, you will see{' '}\n star\n \n )\n }\n]\n\nconst Single = props => {\n const dispatch = useDispatch()\n const inputRef = useRef()\n const { score, showIntroJs } = useSelector(state => state.mastermind)\n const [userInput, setUserInput] = useState([])\n const [userGuesses, setUserGuesses] = useState([])\n const [targetNumber, setTargetNumber] = useState(null)\n const [gameResult, setGameResult] = useState(gameResultDefaults)\n const [introJsSteps, setIntroJsSteps] = useState(null)\n const [showRules, setShowRules] = useState(false)\n\n const handleToggleRules = () => {\n setShowRules(!showRules)\n }\n\n const handleShowIntroJs = () => {\n dispatch(setShowIntroJs(true))\n }\n\n const handleHideIntroJs = () => {\n dispatch(setShowIntroJs(false))\n setIntroJsSteps(null)\n }\n\n const handleExampleUserInputs = () => {\n const _userInput = generateNumber()\n setUserInput(_userInput.split(''))\n }\n\n useEffect(() => {\n if (showIntroJs) {\n if (userInput.length === 0 && userGuesses.length === 0)\n handleExampleUserInputs()\n setIntroJsSteps(_steps)\n }\n // eslint-disable-next-line\n }, [showIntroJs, userInput])\n\n const generateNumber = () => {\n let digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n let number = ''\n for (let i = 0; i < targetNumberDigitCount; i++) {\n let digit = null\n let digitIndex\n if (i === 0)\n digitIndex = Math.floor(Math.random() * (digits.length - 1)) + 1\n else digitIndex = Math.floor(Math.random() * (digits.length - 1))\n\n digit = digits.splice(digitIndex, 1)\n number += digit\n }\n return number\n }\n\n const generateTargetNumber = () => {\n const _targetNumber = generateNumber()\n setTargetNumber(_targetNumber)\n }\n\n const handleSetUserInput = digit => event => {\n if (userInput.length < 4) {\n setUserInput([...userInput, digit])\n }\n\n event.currentTarget.blur()\n }\n\n const newGame = () => {\n resetGame()\n }\n\n const continueToPlay = () => {\n if (gameResult.status === gameStatuses.INVALID_INPUT) {\n setGameResult({\n ...gameResult,\n status: gameStatuses.PLAYING\n })\n }\n }\n\n const resetGame = () => {\n setGameResult(gameResultDefaults)\n setUserInput([])\n setUserGuesses([])\n generateTargetNumber()\n }\n\n const handleClearUserInput = () => {\n setUserInput([])\n }\n\n const handleRemoveLastUserInput = () => {\n if (userInput.length > 0) {\n let _userInput = [...userInput]\n _userInput.pop()\n setUserInput(_userInput)\n }\n }\n\n const validateUserInputs = () => {\n let valid = true\n userInput.forEach(input => {\n if (!(input >= 0 && input <= 9)) valid = false\n })\n return valid\n }\n\n const handleAnswer = guess => {\n let correctPlace = []\n let wrongPlace = 0\n for (let i = 0; i < 4; i++) {\n if (guess[i] === targetNumber[i]) correctPlace.push(guess[i])\n }\n for (let i = 0; i < 4; i++) {\n if (\n correctPlace.indexOf(guess[i]) === -1 &&\n targetNumber.indexOf(guess[i]) !== -1\n )\n wrongPlace++\n }\n return {\n correctPlace: correctPlace.length,\n wrongPlace\n }\n }\n\n const calculateScore = () => {\n const userGuessesCount = userGuesses.length + 1\n if (userGuessesCount <= 7) return correctAnswerScore\n else if (userGuessesCount >= 16) return 1\n else return correctAnswerScore - (userGuessesCount - 7)\n }\n\n const handleCheckUserInput = () => {\n if (validateUserInputs()) {\n const userGuess = userInput.join('')\n if (userGuess === targetNumber) {\n setUserGuesses([\n {\n guess: userGuess,\n correctPlace: 4,\n wrongPlace: 0\n },\n ...userGuesses\n ])\n const userScore = calculateScore()\n const starCount = userScore > 8 ? 3 : userScore > 5 ? 2 : 1\n setGameResult({\n status: gameStatuses.CORRECT_ANSWER,\n score: userScore,\n starCount: starCount\n })\n dispatch(setScore(score + userScore))\n } else {\n const answer = handleAnswer(userGuess)\n setUserGuesses([\n {\n guess: userGuess,\n ...answer\n },\n ...userGuesses\n ])\n setUserInput([])\n }\n } else {\n setGameResult({\n status: gameStatuses.INVALID_INPUT\n })\n }\n }\n\n const handleGiveUp = () => {\n setGameResult({\n ...gameResultDefaults,\n status: gameStatuses.GIVE_UP\n })\n }\n\n const endGameSummary = () => {\n setGameResult({\n ...gameResultDefaults,\n status: gameStatuses.END_GAME_SUMMARY\n })\n setUserInput([])\n }\n\n const handleButtonDisabled = digit => {\n if (gameResult.status === gameStatuses.END_GAME_SUMMARY) return true\n if (userInput.length === 0 && digit === 0) return true\n const isExists = userInput.findIndex(input => input === digit)\n if (isExists !== -1) return true\n return false\n }\n\n const validateKeyPress = event => {\n const key = parseInt(event.key)\n\n if (\n userInput.length < 4 &&\n !handleButtonDisabled(key) &&\n key >= 0 &&\n key <= 9\n )\n return true\n return false\n }\n\n const handleWindowKeyDown = event => {\n event.preventDefault()\n\n if (event.keyCode === 27) handleClearUserInput()\n else if (event.keyCode === 13 && userInput.length === 4) {\n handleCheckUserInput()\n } else if (event.keyCode === 8) handleRemoveLastUserInput()\n else if (validateKeyPress(event)) {\n setUserInput([...userInput, parseInt(event.key)])\n }\n }\n\n useEffect(() => {\n resetGame()\n return () => {}\n // eslint-disable-next-line\n }, [])\n\n useEffect(() => {\n window.addEventListener('keydown', handleWindowKeyDown)\n return () => {\n window.removeEventListener('keydown', handleWindowKeyDown)\n }\n // eslint-disable-next-line\n }, [userInput, gameResult])\n\n const UserGuess = ({ userGuess }) => {\n return (\n
\n {userGuess.guess}\n \n {userGuess.correctPlace > 0 && (\n \n +{userGuess.correctPlace}\n \n )}\n {userGuess.wrongPlace > 0 && (\n \n -{userGuess.wrongPlace}\n \n )}\n {userGuess.correctPlace === 0 && userGuess.wrongPlace === 0 && (\n 0\n )}\n \n
\n )\n }\n\n return (\n
\n
\n
\n
\n star\n {score}\n
\n
\n
\n meteor\n

MasterMind

\n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n
\n

Your Guess

\n
\n {userGuesses.length > 0 && }\n
\n
\n {userInput.map(input => input)}\n {userInput.length > 0 && (\n
\n \n \n \n \n
\n )}\n
\n\n
\n {allowedDigits.map((digit, index) => (\n \n {digit}\n \n ))}\n
\n
\n {userInput.length === 4 && (\n \n )}\n {userGuesses.length > 20 &&\n !gameResult.status !== gameStatuses.END_GAME_SUMMARY && (\n \n )}\n\n {gameResult.status === gameStatuses.END_GAME_SUMMARY && (\n \n )}\n
\n
\n\n
\n

Guesses ({userGuesses.length})

\n
    \n {userGuesses.map((userGuess, index) => {\n return (\n
  1. \n \n
  2. \n )\n })}\n
\n
\n\n \n \n \n \n
Objective
\n

Find the hidden number in as few tries as you can

\n
Rules
\n

\n In each try, you guess a number and you will get clues\n
\n The feedback tells you the number of matching digits and if they\n have been used in correct places or not. For example, +2 -1\n means 3 digits of your guess appear in the hidden number, 2 of\n them in the correct places and 1 of them in a wrong place.\n
\n

\n
Scoring
\n

\n 10 pts for finding in up to 7 guesses\n
\n 9 pts for finding in 8 guesses\n
\n 8 pts for finding in 9 guesses\n
\n ...\n
\n 1 pt for finding in 16 or more guesses\n
\n No points if “give up”\n
\n

\n
\n }\n buttons={[\n {\n text: 'Close',\n onClick: handleToggleRules,\n color: 'primary'\n }\n ]}\n />\n
\n\n {showIntroJs && introJsSteps !== null && (\n \n )}\n \n )\n}\n\nexport default withRouter(Single)\n","import React from 'react'\nimport Button from '../../components/button'\nimport meteorBlue from '../../assets/images/meteor-blue.svg'\n\nconst Game24 = () => {\n return (\n
\n
\n \n meteor\n

24k Game

\n \n {/*
\n */}\n
\n
\n )\n}\n\nexport default Game24\n","import React, { useEffect, useState } from 'react'\n\nconst Timer = ({ counter, isPlaying, onChange, changeColorSeconds }) => {\n const [seconds, setSeconds] = useState(0)\n const [myInterval, setMyInterval] = useState(null)\n\n useEffect(() => {\n if (isPlaying && myInterval === null) {\n const interval = setInterval(() => {\n setSeconds(prevData => {\n return prevData + 1\n })\n }, 1000)\n setMyInterval(interval)\n } else if (!isPlaying && myInterval !== null) {\n clearInterval(myInterval)\n setMyInterval(null)\n }\n\n return () => {\n //clearInterval(myInterval)\n //setMyInterval(null)\n }\n }, [isPlaying, myInterval])\n\n useEffect(() => {\n onChange(seconds)\n }, [seconds, onChange])\n\n useEffect(() => {\n setSeconds(0)\n }, [counter])\n\n return (\n changeColorSeconds ? ' danger' : '')\n }\n >\n {seconds}\n \n )\n}\n\nexport default Timer\n","import { createSlice } from '@reduxjs/toolkit'\n\nexport const game24Slice = createSlice({\n name: 'game24',\n initialState: {\n score: 0,\n showIntroJs: true,\n data: {\n _24: [],\n _48: [],\n _72: [],\n _96: []\n }\n },\n reducers: {\n setScore: (state, action) => {\n state.score = action.payload\n },\n setShowIntroJs: (state, action) => {\n state.showIntroJs = action.payload\n },\n setData: (state, action) => {\n state.data = action.payload\n }\n }\n})\n\n// Action creators are generated for each case reducer function\nexport const { setScore, setShowIntroJs, setData } = game24Slice.actions\n\nexport default game24Slice.reducer\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Button from \"../../components/button\";\nimport Timer from \"../../components/timer\";\nimport meteorBlue from \"../../assets/images/meteor-blue.svg\";\nimport star from \"../../assets/images/star.svg\";\nimport Alert from \"../../components/alert\";\nimport { setShowIntroJs, setScore, setData } from \"../../redux/game24/reducer\";\nimport { withRouter } from \"react-router-dom\";\nimport { Steps } from \"intro.js-react\";\nimport \"intro.js/introjs.css\";\nimport { isEqual } from \"lodash\";\n\nconst targetNumbers = [24, 48, 72, 96];\nconst operators = [\"+\", \"-\", \"x\", \"÷\"];\nconst correctAnswerScore = 10;\nconst scoreInterval = 15;\nconst changeColorSeconds = 90;\nconst gameStatuses = {\n CHOOSE_TARGET: \"chooseTarget\",\n PLAYING: \"playing\",\n CORRECT_ANSWER: \"correctAnswer\",\n INVALID_INPUT: \"invalidInput\",\n};\nconst gameResultDefaults = {\n status: gameStatuses.CHOOSE_TARGET,\n starCount: 0,\n score: 0,\n answer: 0,\n};\n\nconst _steps = [\n {\n element: \".chooseTargetNumber\",\n intro: \"You can choose the target number from the list.\",\n position: \"top\",\n },\n {\n element: \".timer\",\n intro:\n \"You have unlimited time for each round and your score will be calculated depending on your solving time.\",\n position: \"left\",\n },\n {\n element: \".user-input-buttons\",\n intro:\n \"You can use the mouse to make arithmetic operations with given numbers and operators.\",\n position: \"top\",\n },\n {\n element: \".user-history-buttons\",\n intro: \"You can undo and redo your processes with the navigation buttons.\",\n position: \"top\",\n },\n {\n element: \".unsolvedCount\",\n intro: \"You can see the number of remaining unsolved puzzles.\",\n position: \"bottom\",\n },\n {\n intro: (\n <>\n Stars:\n
\n If your score is 9 or 10, you will see{\" \"}\n \"star\"\n \"star\"\n \"star\"\n
\n If your score is 6,7 or 8, you will see{\" \"}\n \"star\"\n \"star\"\n
\n If your score is 1 through 5, you will see{\" \"}\n \"star\"\n \n ),\n },\n];\n\nconst Single = (props) => {\n const dispatch = useDispatch();\n const inputRef = useRef();\n const { score, showIntroJs, data } = useSelector((state) => state.game24);\n const [userInput, setUserInput] = useState([]);\n const [userInputHistory, setUserInputHistory] = useState([]);\n const [activeUserInputHistory, setActiveUserInputHistory] = useState(-1);\n const [numbers, setNumbers] = useState([]);\n const [targetNumber, setTargetNumber] = useState(null);\n const [gameResult, setGameResult] = useState(gameResultDefaults);\n const [introJsSteps, setIntroJsSteps] = useState(null);\n const [introJsInitialStep, setIntroJsInitialStep] = useState(0);\n const [showRules, setShowRules] = useState(false);\n const [timerIsPlaying, setTimerIsPlaying] = useState(false);\n const [timerSeconds, setTimerSeconds] = useState(0);\n const [timerCounter, setTimerCounter] = useState(0);\n\n const handleToggleRules = () => {\n if (showRules) newGame();\n setShowRules(!showRules);\n };\n\n const handleShowIntroJs = () => {\n dispatch(setShowIntroJs(true));\n };\n\n const handleHideIntroJs = () => {\n dispatch(setShowIntroJs(false));\n setIntroJsSteps(null);\n newGame();\n };\n\n const introJsOnChange = (nextStepIndex, nextElement) => {\n if (nextStepIndex === 1 && targetNumber === null) {\n handleSetTarget(24)();\n }\n };\n\n const handleSetTarget = (number) => () => {\n setTargetNumber(number);\n setGameResult({\n ...gameResult,\n status: gameStatuses.PLAYING,\n });\n };\n\n useEffect(() => {\n if (showIntroJs && targetNumber === null) {\n setIntroJsInitialStep(0);\n setIntroJsSteps(_steps);\n } else if (\n showIntroJs &&\n numbers.length !== 0 &&\n targetNumber !== null &&\n userInput.length === 0\n ) {\n setTimerIsPlaying(false);\n setIntroJsInitialStep(1);\n setIntroJsSteps(_steps);\n }\n // eslint-disable-next-line\n }, [showIntroJs, numbers, userInput, targetNumber]);\n\n const generateNumbers = () => {\n if (targetNumber) {\n let _data = data[\"_\" + targetNumber];\n let unsolvedData = _data.filter((d) => !d.solved);\n const dataIndex = Math.floor(Math.random() * unsolvedData.length);\n setNumbers(\n unsolvedData[dataIndex].numbers.map((number) => {\n return {\n value: number,\n text: number.toString(),\n };\n })\n );\n }\n };\n\n useEffect(() => {\n generateNumbers();\n // eslint-disable-next-line\n }, [targetNumber, data]);\n\n const newGame = () => {\n resetGame();\n };\n\n const continueToPlay = () => {\n if (\n gameResult.status === gameStatuses.INVALID_INPUT ||\n gameResult.status === gameStatuses.WRONG_ANSWER\n ) {\n setGameResult({\n ...gameResult,\n status: gameStatuses.PLAYING,\n });\n }\n };\n\n const resetGame = () => {\n if (targetNumber)\n setGameResult({\n ...gameResultDefaults,\n status: gameStatuses.PLAYING,\n });\n else setGameResult(gameResultDefaults);\n setUserInput([]);\n setUserInputHistory([]);\n setActiveUserInputHistory(-1);\n generateNumbers();\n setTimerCounter(timerCounter + 1);\n setTimerIsPlaying(true);\n };\n\n const solved = () => {\n let _data = [...data[\"_\" + targetNumber]];\n const solvedIndex = _data.findIndex((d) =>\n isEqual(d.numbers, userInputHistory[0].oldNumbers)\n );\n const newValue = {\n ..._data[solvedIndex],\n solved: true,\n };\n _data.splice(solvedIndex, 1, newValue);\n dispatch(\n setData({\n ...data,\n [\"_\" + targetNumber]: _data,\n })\n );\n };\n\n const calculateScore = () => {\n const dif = Math.floor(timerSeconds / scoreInterval);\n const score = correctAnswerScore - dif;\n if (score < 1) return 1;\n return score;\n };\n\n const checkUserAnswer = (numbers) => {\n const _numbers = numbers.filter((num) => num.value > 0);\n if (_numbers.length === 1) {\n const userResult = _numbers[0].value;\n if (userResult === targetNumber) {\n solved();\n setTimerIsPlaying(false);\n const userScore = calculateScore();\n const starCount = userScore > 8 ? 3 : userScore > 5 ? 2 : 1;\n setGameResult({\n status: gameStatuses.CORRECT_ANSWER,\n score: userScore,\n starCount: starCount,\n });\n dispatch(setScore(score + userScore));\n }\n }\n };\n\n const loadData = () => {\n if (!data || data._24.length === 0) {\n const data24 = require(\"./data/24.json\");\n const data48 = require(\"./data/48.json\");\n const data72 = require(\"./data/72.json\");\n const data96 = require(\"./data/96.json\");\n dispatch(\n setData({\n _24: data24,\n _48: data48,\n _72: data72,\n _96: data96,\n })\n );\n }\n };\n\n useEffect(() => {\n resetGame();\n loadData();\n return () => {};\n // eslint-disable-next-line\n }, []);\n\n const timerOnChange = (seconds) => {\n setTimerSeconds(seconds);\n };\n\n const handleRemainingPuzzles = () => {\n if (targetNumber !== null) {\n return data[\"_\" + targetNumber].filter((d) => !d.solved).length;\n }\n return \"-\";\n };\n\n const evalUserInput = (newInput) => {\n switch (userInput[1].input) {\n case \"+\":\n return userInput[0].input.value + newInput.input.value;\n case \"-\":\n return userInput[0].input.value - newInput.input.value;\n case \"x\":\n return userInput[0].input.value * newInput.input.value;\n case \"÷\":\n return userInput[0].input.value / newInput.input.value;\n default:\n return false;\n }\n };\n\n const handleNumberText = (_evalUserInput, newInput) => {\n if (Number.isInteger(_evalUserInput)) return _evalUserInput.toString();\n\n switch (userInput[1].input) {\n case \"+\":\n return `${userInput[0].input.text}+${newInput.input.text}`;\n case \"-\":\n return `${userInput[0].input.text}-${newInput.input.text}`;\n case \"x\":\n return `${userInput[0].input.text}*${newInput.input.text}`;\n case \"÷\":\n return `${userInput[0].input.text}/${newInput.input.text}`;\n default:\n return false;\n }\n };\n\n const handleSetUserInput = (input, inputType, index) => () => {\n const newInput = {\n input,\n inputType,\n index,\n };\n if (inputType === \"number\") {\n if (userInput.length <= 1) setUserInput([newInput]);\n else if (userInput.length === 2) {\n const _evalUserInput = evalUserInput(newInput);\n if (_evalUserInput !== false) {\n let newNumbers = [...numbers];\n newNumbers[userInput[0].index] = { value: 0, text: \"0\" };\n newNumbers[newInput.index] = {\n value: _evalUserInput,\n text: handleNumberText(_evalUserInput, newInput),\n };\n const nextActive = activeUserInputHistory + 1;\n let newUserInputHistory = userInputHistory.slice(0, nextActive);\n setUserInput([]);\n setUserInputHistory([\n ...newUserInputHistory,\n {\n oldNumbers: numbers,\n newNumbers,\n },\n ]);\n setActiveUserInputHistory(nextActive);\n setNumbers(newNumbers);\n checkUserAnswer(newNumbers);\n }\n }\n } else if (inputType === \"operator\") {\n if (userInput.length === 1) {\n setUserInput([...userInput, newInput]);\n } else if (userInput.length === 2) {\n let _userInput = [...userInput];\n _userInput.splice(1, 1);\n setUserInput([..._userInput, newInput]);\n }\n }\n };\n\n const isSelected = (input, inputType, index) => {\n if (\n userInput.find(\n (userInput) =>\n (userInput.input === input || userInput.input.value === input) &&\n userInput.inputType === inputType &&\n userInput.index === index\n )\n )\n return true;\n return false;\n };\n\n const handleUndo = () => {\n if (userInput.length === 2) {\n let _userInput = [...userInput];\n _userInput.splice(1, 1);\n setUserInput(_userInput);\n } else if (userInputHistory.length > 0 && activeUserInputHistory !== -1) {\n const history = userInputHistory[activeUserInputHistory];\n setNumbers(history.oldNumbers);\n setActiveUserInputHistory(activeUserInputHistory - 1);\n }\n };\n\n const handleRedo = () => {\n if (activeUserInputHistory < userInputHistory.length - 1) {\n const nextHistory = activeUserInputHistory + 1;\n const history = userInputHistory[nextHistory];\n setNumbers(history.newNumbers);\n setActiveUserInputHistory(nextHistory);\n }\n };\n\n const handleUndoDisabled = () => {\n if (userInput.length === 2) return false;\n else if (userInputHistory.length > 0 && activeUserInputHistory !== -1)\n return false;\n return true;\n };\n\n const handleRedoDisabled = () => {\n if (activeUserInputHistory < userInputHistory.length - 1) return false;\n return true;\n };\n\n return (\n
\n
\n
\n
\n \"star\"\n {score}\n
\n \n \n {handleRemainingPuzzles()}\n
\n
\n
\n \"meteor\"\n

24k Game

\n
\n
\n {/* */}\n \n \n \n \n \n \n \n
\n
\n\n
\n {targetNumber ? (\n <>\n

Target Number

\n
{targetNumber}
\n\n
\n \n
\n\n
\n
\n {numbers.map((number, index) => {\n const selected = isSelected(number.value, \"number\", index);\n return (\n \n {number.text}\n \n );\n })}\n
\n\n
\n {operators.map((operator, index) => {\n const selected = isSelected(operator, \"operator\", index);\n return (\n \n {operator}\n \n );\n })}\n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n ) : (\n
\n
\n

Choose Target Number

\n
\n {targetNumbers.map((number) => (\n \n ))}\n
\n
\n
\n )}\n\n \n \n \n \n
Objective
\n

\n Your goal is to reach the \"target number\" using four basic\n operations and given numbers.\n

\n
Rules
\n

\n Use each number exactly once\n
\n You can only use the given operations +, -, x, /, and\n parentheses\n
\n

\n
Scoring
\n

\n 10 pts if you can reach the target number in 15 seconds.\n
\n 9 pts if you can reach the target number in 30 seconds etc.\n
\n You will get 1 point if you can get to the target number\n anytime.\n

\n
\n }\n buttons={[\n {\n text: \"Close\",\n onClick: handleToggleRules,\n color: \"primary\",\n },\n ]}\n />\n \n\n {showIntroJs && introJsSteps !== null && (\n \n )}\n \n );\n};\n\nexport default withRouter(Single);\n","import React from 'react'\nimport { Redirect } from 'react-router-dom'\n\nimport Dashboard from '../pages/Dashboard/index'\n\nimport Basic4 from '../pages/Basic4/index'\nimport Basic4Single from '../pages/Basic4/single'\n\nimport MasterMind from '../pages/MasterMind/index'\nimport MasterMindSingle from '../pages/MasterMind/single'\n\nimport Game24 from '../pages/Game24/index'\nimport Game24Single from '../pages/Game24/single'\n\nconst userRoutes = [\n { path: '/dashboard', component: Dashboard },\n { path: '/basic4', component: Basic4 },\n { path: '/basic4/single', component: Basic4Single },\n { path: '/mastermind', component: MasterMind },\n { path: '/mastermind/single', component: MasterMindSingle },\n { path: '/24-game', component: Game24 },\n { path: '/24-game/single', component: Game24Single },\n\n // this route should be at the end of all other routes\n { path: '/', exact: true, component: () => }\n]\n\nconst authRoutes = []\n\nexport { userRoutes, authRoutes }\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Route, Redirect } from 'react-router-dom'\nimport ReactGA from 'react-ga'\n\nconst Authmiddleware = ({\n component: Component,\n isAuthProtected,\n layout: Layout,\n ...rest\n}) => {\n return (\n {\n ReactGA.pageview(props.location.pathname)\n if (isAuthProtected) {\n return (\n \n )\n }\n\n return (\n \n \n \n )\n }}\n />\n )\n}\n\nAuthmiddleware.propTypes = {\n isAuthProtected: PropTypes.bool,\n component: PropTypes.any,\n location: PropTypes.object,\n layout: PropTypes.any\n}\n\nexport default Authmiddleware\n","export default __webpack_public_path__ + \"static/media/alphastar-academy-logo.4404c797.svg\";","export default __webpack_public_path__ + \"static/media/alphastar-academy-icon.d73db11b.svg\";","import React from 'react'\nimport { Container } from 'react-bootstrap'\nimport Logo from '../../assets/images/alphastar-academy-logo.svg'\nimport Icon from '../../assets/images/alphastar-academy-icon.svg'\n\nconst Layout = ({ children }) => {\n return (\n
\n \n
\n \n AlphaStar Academy\n \n
\n {children}\n
\n AlphaStar Academy\n © 2021 - AlphaStar Academy\n \n Leave Us Feedback\n \n
\n
\n
\n )\n}\n\nexport default Layout\n","import React from 'react'\nimport { Switch, BrowserRouter as Router } from 'react-router-dom'\nimport { userRoutes, authRoutes } from './routes/allRoutes'\nimport Authmiddleware from './routes/middleware/Authmiddleware'\nimport Layout from './components/Layout/index'\nimport './assets/scss/App.scss'\n\nfunction App () {\n return (\n \n \n \n {authRoutes.map((route, idx) => (\n \n ))}\n\n {userRoutes.map((route, idx) => (\n \n ))}\n \n \n \n )\n}\n\nexport default App\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import { createSlice } from '@reduxjs/toolkit'\n\nexport const userSlice = createSlice({\n name: 'user',\n initialState: {\n user: {}\n },\n reducers: {\n setUser: (state, action) => {\n state.user = action.payload\n }\n }\n})\n\n// Action creators are generated for each case reducer function\nexport const { setUser } = userSlice.actions\n\nexport default userSlice.reducer\n","import { configureStore, combineReducers } from '@reduxjs/toolkit'\nimport {\n persistStore,\n persistReducer,\n FLUSH,\n REHYDRATE,\n PAUSE,\n PERSIST,\n PURGE,\n REGISTER\n} from 'redux-persist'\nimport storage from 'redux-persist/lib/storage'\nimport userReducer from './user/reducer'\nimport basic4Reducer from './basic4/reducer'\nimport mastermindReducer from './mastermind/reducer'\nimport game24Reducer from './game24/reducer'\n\nconst rootReducer = combineReducers({\n user: userReducer,\n basic4: basic4Reducer,\n mastermind: mastermindReducer,\n game24: game24Reducer\n})\n\nconst persistConfig = {\n key: 'root',\n version: 1,\n storage\n}\n\nconst persistedReducer = persistReducer(persistConfig, rootReducer)\n\nexport const store = configureStore({\n reducer: persistedReducer,\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware({\n serializableCheck: {\n ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER]\n }\n })\n})\n\nexport const persistor = persistStore(store)\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport './index.css'\nimport App from './App'\nimport reportWebVitals from './reportWebVitals'\nimport { Provider } from 'react-redux'\nimport { store, persistor } from './redux/store'\nimport { PersistGate } from 'redux-persist/integration/react'\nimport ReactGA from 'react-ga'\n\nReactGA.initialize('UA-101117260-3')\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n","export default __webpack_public_path__ + \"static/media/star-empty.50f6a341.svg\";","import React from 'react'\nimport star from '../assets/images/star.svg'\nimport starEmpty from '../assets/images/star-empty.svg'\nimport Button from './button'\n\nconst Stars = ({ starCount }) => {\n if (starCount >= 0) {\n return (\n
\n \n 1 ? star : starEmpty}\n alt='Star'\n width='64'\n height='64'\n />\n 2 ? star : starEmpty}\n alt='Star'\n width='48'\n height='48'\n />\n
\n )\n }\n return <>\n}\n\nconst Alert = ({ text, subText, show, starCount, score, buttons, html }) => {\n if (!show) return <>\n\n return (\n
\n \n
\n {text &&

{text}

}\n {subText &&

{subText}

}\n {html &&

{html}

}\n {score >= 0 && (\n \n star\n Score: {score}\n \n )}\n {buttons?.length > 0 && (\n
\n {buttons.map((button, index) => {\n return (\n \n {button.text}\n \n )\n })}\n
\n )}\n
\n
\n )\n}\n\nexport default Alert\n"],"sourceRoot":""}