Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
34
Task/24-game-Solve/R/24-game-solve-1.r
Normal file
34
Task/24-game-Solve/R/24-game-solve-1.r
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
library(gtools)
|
||||
|
||||
solve24 <- function(vals=c(8, 4, 2, 1),
|
||||
goal=24,
|
||||
ops=c("+", "-", "*", "/")) {
|
||||
|
||||
val.perms <- as.data.frame(t(
|
||||
permutations(length(vals), length(vals))))
|
||||
|
||||
nop <- length(vals)-1
|
||||
op.perms <- as.data.frame(t(
|
||||
do.call(expand.grid,
|
||||
replicate(nop, list(ops)))))
|
||||
|
||||
ord.perms <- as.data.frame(t(
|
||||
do.call(expand.grid,
|
||||
replicate(n <- nop, 1:((n <<- n-1)+1)))))
|
||||
|
||||
for (val.perm in val.perms)
|
||||
for (op.perm in op.perms)
|
||||
for (ord.perm in ord.perms)
|
||||
{
|
||||
expr <- as.list(vals[val.perm])
|
||||
for (i in 1:nop) {
|
||||
expr[[ ord.perm[i] ]] <- call(as.character(op.perm[i]),
|
||||
expr[[ ord.perm[i] ]],
|
||||
expr[[ ord.perm[i]+1 ]])
|
||||
expr <- expr[ -(ord.perm[i]+1) ]
|
||||
}
|
||||
if (identical(eval(expr[[1]]), goal)) return(expr[[1]])
|
||||
}
|
||||
|
||||
return(NA)
|
||||
}
|
||||
12
Task/24-game-Solve/R/24-game-solve-2.r
Normal file
12
Task/24-game-Solve/R/24-game-solve-2.r
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
> solve24()
|
||||
8 * (4 - 2 + 1)
|
||||
> solve24(c(6,7,9,5))
|
||||
6 + (7 - 5) * 9
|
||||
> solve24(c(8,8,8,8))
|
||||
[1] NA
|
||||
> solve24(goal=49) #different goal value
|
||||
8 * (4 + 2) + 1
|
||||
> solve24(goal=52) #no solution
|
||||
[1] NA
|
||||
> solve24(ops=c('-', '/')) #restricted set of operators
|
||||
(8 - 2)/(1/4)
|
||||
Loading…
Add table
Add a link
Reference in a new issue