Skip to content

Instantly share code, notes, and snippets.

@trinker
Created May 26, 2015 18:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trinker/4340f11f08f90707a26d to your computer and use it in GitHub Desktop.
Save trinker/4340f11f08f90707a26d to your computer and use it in GitHub Desktop.
safecracker
L1 <- list(
a = c(2, 15, 23, 19, 3, 2, 3, 27, 20, 11, 27, 10, 19, 10, 13, 10),
b1 = c(22, 9, 5, 10, 5, 1, 24, 2, 10, 9, 7, 3, 12, 24, 10, 9)
)
L2 <- list(
i = c(16, NA, 17, NA, 2, NA, 2, NA, 10, NA, 15, NA, 6, NA, 9, NA),
b2 = c(11, 27, 14, 5, 5, 7, 8, 24, 8, 3, 6, 15, 22, 6, 1, 1)
)
#L3 <- list( #bad wheel
# j = c(3, NA, 8, NA, 10, NA, 14, NA, 11, NA, 8, NA, 12, NA, 11, NA),
# b3 = c(10, 17, 10, 5, 6, 18, 8, 17, 4, 20, 4, 14, 4, 5, 1, 14)
#)
L3 <- list(
j = c(10, NA, 2, NA, 22, NA, 2, NA, 17, NA, 15, NA, 14, NA, 5, NA),
b3 = c( 1, 6, 10, 6, 10, 2, 6, 10, 4, 1, 5, 5, 4, 8, 6, 3 )
)
L4 <- list(
k = c(6, NA, 13, NA, 3, NA, 3, NA, 6, NA, 10, NA, 10, NA, 10, NA)
)
shift <- function(x, n){
if (n == 0) return(x)
c(x[(n+1):length(x)], x[1:n])
}
dat <- NULL
m <- FALSE
for (i in 0:15){
for (j in 0:15){
for (k in 0:15){
c1 <- L1[[1]]
c2 <- L1[[2]]
c2b <- shift(L2[[1]], i)
c2[!is.na(c2b)]<- na.omit(c2b)
c3 <- shift(L2[[2]], i)
c3b <- shift(L3[[1]], j)
c3[!is.na(c3b)]<- na.omit(c3b)
c4 <- shift(L3[[2]], j)
c4b <- shift(L4[[1]], k)
c4[!is.na(c4b)]<- na.omit(c4b)
m <- all(rowSums(data.frame(c1, c2, c3, c4)) %in% 40)
if (m){
assign("dat", data.frame(c1, c2, c3, c4), envir=.GlobalEnv)
print(data.frame(c1, c2, c3, c4))
break
}
if (m) break
}
if (m) break
}
if (m) break
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment