Skip to content

Instantly share code, notes, and snippets.

@paralax
Last active August 29, 2015 14:21
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 paralax/61c2cc72625bfd6f0d26 to your computer and use it in GitHub Desktop.
Save paralax/61c2cc72625bfd6f0d26 to your computer and use it in GitHub Desktop.
20150522_challenge_215_hard_metaprogramming
def parseTable(input:String): Boolean = {
val StringList = """(\[.+])""".r
val StringDouble = """(\d+\.\d+)""".r
val StringInteger = """(\d+)""".r
val StringBoolean = """(True|False)""".r
val StringStringorChar = """(.*)""".r
input match {
case StringList(n) => n.replace(" ", "").split(",").length > 0
case StringDouble(d) => d.toDouble != 0.0
case StringInteger(i) => i.toInt != 0
case StringBoolean(b) => b == "True"
case StringStringorChar(s) => s.length > 0
case _ => false
}
}
def truthTable() = {
val inputs = List("Hello, world!", "", "0", "1", "0", "0.0", "[]", "[1,2,3]", "True", "False")
for (i <- inputs) {
for (j <- inputs) {
println(i + " && " + j + " = " + (parseTable(i) && parseTable(j)))
println(i + " || " + j + " = " + (parseTable(i) && parseTable(j)))
println("Not " + i + " = " + !(parseTable(i)))
}
}
}
output
scala> truthTable()
Hello, world! && Hello, world! = true
Hello, world! || Hello, world! = true
Not Hello, world! = false
Hello, world! && = false
Hello, world! || = false
Not Hello, world! = false
Hello, world! && 0 = false
Hello, world! || 0 = false
Not Hello, world! = false
Hello, world! && 1 = true
Hello, world! || 1 = true
Not Hello, world! = false
Hello, world! && 0 = false
Hello, world! || 0 = false
Not Hello, world! = false
Hello, world! && 0.0 = false
Hello, world! || 0.0 = false
Not Hello, world! = false
Hello, world! && [] = true
Hello, world! || [] = true
Not Hello, world! = false
Hello, world! && [1,2,3] = true
Hello, world! || [1,2,3] = true
Not Hello, world! = false
Hello, world! && True = true
Hello, world! || True = true
Not Hello, world! = false
Hello, world! && False = false
Hello, world! || False = false
Not Hello, world! = false
&& Hello, world! = false
|| Hello, world! = false
Not = true
&& = false
|| = false
Not = true
&& 0 = false
|| 0 = false
Not = true
&& 1 = false
|| 1 = false
Not = true
&& 0 = false
|| 0 = false
Not = true
&& 0.0 = false
|| 0.0 = false
Not = true
&& [] = false
|| [] = false
Not = true
&& [1,2,3] = false
|| [1,2,3] = false
Not = true
&& True = false
|| True = false
Not = true
&& False = false
|| False = false
Not = true
0 && Hello, world! = false
0 || Hello, world! = false
Not 0 = true
0 && = false
0 || = false
Not 0 = true
0 && 0 = false
0 || 0 = false
Not 0 = true
0 && 1 = false
0 || 1 = false
Not 0 = true
0 && 0 = false
0 || 0 = false
Not 0 = true
0 && 0.0 = false
0 || 0.0 = false
Not 0 = true
0 && [] = false
0 || [] = false
Not 0 = true
0 && [1,2,3] = false
0 || [1,2,3] = false
Not 0 = true
0 && True = false
0 || True = false
Not 0 = true
0 && False = false
0 || False = false
Not 0 = true
1 && Hello, world! = true
1 || Hello, world! = true
Not 1 = false
1 && = false
1 || = false
Not 1 = false
1 && 0 = false
1 || 0 = false
Not 1 = false
1 && 1 = true
1 || 1 = true
Not 1 = false
1 && 0 = false
1 || 0 = false
Not 1 = false
1 && 0.0 = false
1 || 0.0 = false
Not 1 = false
1 && [] = true
1 || [] = true
Not 1 = false
1 && [1,2,3] = true
1 || [1,2,3] = true
Not 1 = false
1 && True = true
1 || True = true
Not 1 = false
1 && False = false
1 || False = false
Not 1 = false
0 && Hello, world! = false
0 || Hello, world! = false
Not 0 = true
0 && = false
0 || = false
Not 0 = true
0 && 0 = false
0 || 0 = false
Not 0 = true
0 && 1 = false
0 || 1 = false
Not 0 = true
0 && 0 = false
0 || 0 = false
Not 0 = true
0 && 0.0 = false
0 || 0.0 = false
Not 0 = true
0 && [] = false
0 || [] = false
Not 0 = true
0 && [1,2,3] = false
0 || [1,2,3] = false
Not 0 = true
0 && True = false
0 || True = false
Not 0 = true
0 && False = false
0 || False = false
Not 0 = true
0.0 && Hello, world! = false
0.0 || Hello, world! = false
Not 0.0 = true
0.0 && = false
0.0 || = false
Not 0.0 = true
0.0 && 0 = false
0.0 || 0 = false
Not 0.0 = true
0.0 && 1 = false
0.0 || 1 = false
Not 0.0 = true
0.0 && 0 = false
0.0 || 0 = false
Not 0.0 = true
0.0 && 0.0 = false
0.0 || 0.0 = false
Not 0.0 = true
0.0 && [] = false
0.0 || [] = false
Not 0.0 = true
0.0 && [1,2,3] = false
0.0 || [1,2,3] = false
Not 0.0 = true
0.0 && True = false
0.0 || True = false
Not 0.0 = true
0.0 && False = false
0.0 || False = false
Not 0.0 = true
[] && Hello, world! = true
[] || Hello, world! = true
Not [] = false
[] && = false
[] || = false
Not [] = false
[] && 0 = false
[] || 0 = false
Not [] = false
[] && 1 = true
[] || 1 = true
Not [] = false
[] && 0 = false
[] || 0 = false
Not [] = false
[] && 0.0 = false
[] || 0.0 = false
Not [] = false
[] && [] = true
[] || [] = true
Not [] = false
[] && [1,2,3] = true
[] || [1,2,3] = true
Not [] = false
[] && True = true
[] || True = true
Not [] = false
[] && False = false
[] || False = false
Not [] = false
[1,2,3] && Hello, world! = true
[1,2,3] || Hello, world! = true
Not [1,2,3] = false
[1,2,3] && = false
[1,2,3] || = false
Not [1,2,3] = false
[1,2,3] && 0 = false
[1,2,3] || 0 = false
Not [1,2,3] = false
[1,2,3] && 1 = true
[1,2,3] || 1 = true
Not [1,2,3] = false
[1,2,3] && 0 = false
[1,2,3] || 0 = false
Not [1,2,3] = false
[1,2,3] && 0.0 = false
[1,2,3] || 0.0 = false
Not [1,2,3] = false
[1,2,3] && [] = true
[1,2,3] || [] = true
Not [1,2,3] = false
[1,2,3] && [1,2,3] = true
[1,2,3] || [1,2,3] = true
Not [1,2,3] = false
[1,2,3] && True = true
[1,2,3] || True = true
Not [1,2,3] = false
[1,2,3] && False = false
[1,2,3] || False = false
Not [1,2,3] = false
True && Hello, world! = true
True || Hello, world! = true
Not True = false
True && = false
True || = false
Not True = false
True && 0 = false
True || 0 = false
Not True = false
True && 1 = true
True || 1 = true
Not True = false
True && 0 = false
True || 0 = false
Not True = false
True && 0.0 = false
True || 0.0 = false
Not True = false
True && [] = true
True || [] = true
Not True = false
True && [1,2,3] = true
True || [1,2,3] = true
Not True = false
True && True = true
True || True = true
Not True = false
True && False = false
True || False = false
Not True = false
False && Hello, world! = false
False || Hello, world! = false
Not False = true
False && = false
False || = false
Not False = true
False && 0 = false
False || 0 = false
Not False = true
False && 1 = false
False || 1 = false
Not False = true
False && 0 = false
False || 0 = false
Not False = true
False && 0.0 = false
False || 0.0 = false
Not False = true
False && [] = false
False || [] = false
Not False = true
False && [1,2,3] = false
False || [1,2,3] = false
Not False = true
False && True = false
False || True = false
Not False = true
False && False = false
False || False = false
Not False = true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment