Last active
August 29, 2015 14:21
-
-
Save paralax/61c2cc72625bfd6f0d26 to your computer and use it in GitHub Desktop.
20150522_challenge_215_hard_metaprogramming
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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