Some algo tweaks for interesting daily challenges

This commit is contained in:
Simon Cambier 2022-02-24 22:42:47 +01:00
parent dcc6a696fc
commit 6edc8a8232
3 changed files with 16 additions and 16 deletions

View File

@ -4,6 +4,10 @@ import { shuffle } from './utils'
type HistoryType = { a: number; b: number; op: OperatorType }[]
export function isHardEnough(num: number): boolean {
return num % 100 > 0
}
export function isOperationResultValid(op: Operation): boolean {
return (
!!op.operator &&

View File

@ -10,6 +10,7 @@ export const operators = ['+', '-', '*', '/'] as const
export const pools = {
1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25],
2: [2, 2, 3, 3, 5, 5, 7, 11, 13, 17, 19, 23],
3: [5, 5, 5, 5, 5, 2, 2, 2, 2, 2],
} as const
export enum GameState {

View File

@ -78,6 +78,7 @@ import { useRoute, useRouter } from 'vue-router'
import {
getEmptyOperation,
isHardEnough,
isOperationReady,
isOperationResultValid,
isSolvable,
@ -117,7 +118,7 @@ const { t } = useI18n() // call `useI18n`, and spread `t` from `useI18n` return
* Computed & refs
*/
const difficultyLevel = ref<1 | 2>(1)
const pool = ref<1 | 2 | 3>(1)
const cmpPlaquettes = ref<InstanceType<typeof PlaquettesList> | null>(null)
const isDaily = computed(() => useRoute()?.name === 'daily')
@ -192,22 +193,15 @@ function reboot(): void {
do {
// Find a problem
// result.value = randRange(101, 1000)
difficultyLevel.value = randItem([1, 1, 1, 1, 2])
result.value = (() => {
switch (difficultyLevel.value) {
case 1:
return randRange(minValue, 1000)
case 2:
return randRange(minValue, 1000)
}
})()
pool.value = randItem([1, 1, 1, 1, 1, 2, 3])
result.value = randRange(minValue, 1000)
// result.value = 29
// Reset Operations list
clearOperationsList()
// Generate result and plaquettes
plaquettes.value = []
const poolCopy = [...pools[difficultyLevel.value]]
const poolCopy = [...pools[pool.value]]
for (let i = 0; i < 6; ++i) {
const rndItem = Math.floor(random() * poolCopy.length)
const el = poolCopy.splice(rndItem, 1)[0]
@ -219,6 +213,7 @@ function reboot(): void {
// }))
// Solve it
} while (
(isDaily.value ? !isHardEnough(result.value) : false) ||
!isSolvable(
result.value,
plaquettes.value.map(p => p.value),
@ -232,11 +227,11 @@ function reboot(): void {
*/
onMounted(() => {
if (!isDaily.value && !hasPlayed(getCurrentSessionKey())) {
const router = useRouter()
router.replace({ name: 'home' })
return
}
// if (!isDaily.value && !hasPlayed(getCurrentSessionKey())) {
// const router = useRouter()
// router.replace({ name: 'home' })
// return
// }
if (isDaily.value) {
console.log('daily rng')