Skip to content

Instantly share code, notes, and snippets.

@ruescasd
Created October 15, 2016 19:58
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 ruescasd/881a40da8b5f530e61fc249bcd20a022 to your computer and use it in GitHub Desktop.
Save ruescasd/881a40da8b5f530e61fc249bcd20a022 to your computer and use it in GitHub Desktop.
object E extends App {
println(E(args(0).toInt, 1))
def E(vars: Int, minVar: Int) : String = {
if(vars == 1) {
"T"
}
else if(vars == 2) {
s"!(a$minVar && a${minVar + 1})"
}
else if(vars % 2 == 0) {
val n = vars / 2
var ret = "!(("
for(i <- 1 to n) ret = ret + s"a${i + minVar - 1} || "
ret = ret + ") && ("
for(i <- n + 1 to 2*n) ret = ret + s"a${i + minVar - 1} || "
ret = ret + ")) && " + E(n, minVar) + " && " + E(n, minVar + n)
ret.replace(" || )", ")")
}
else {
val n = (vars - 1) / 2
var ret = "!(("
for(i <- 1 to n) ret = ret + s"a${i + minVar - 1} || "
ret = ret + ") && ("
for(i <- n + 1 to (2*n) + 1) ret = ret + s"a${i + minVar - 1} || "
ret = ret + ")) && " + E(n, minVar) + " && " + E(n + 1, minVar + n)
ret = ret.replace(" || )", ")")
ret.replace(" && T", "")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment