27 lines
859 B
Plaintext
27 lines
859 B
Plaintext
var conditions = [
|
|
{ false },
|
|
{|a| a.len == 13 },
|
|
{|a| [a[7..12]].count(true) == 3 },
|
|
{|a| [a[2..12 `by` 2]].count(true) == 2 },
|
|
{|a| a[5] ? (a[6] && a[7]) : true },
|
|
{|a| !a[2] && !a[3] && !a[4] },
|
|
{|a| [a[1..11 `by` 2]].count(true) == 4 },
|
|
{|a| a[2] == true^a[3] },
|
|
{|a| a[7] ? (a[5] && a[6]) : true },
|
|
{|a| [a[1..6]].count(true) == 3 },
|
|
{|a| [a[11,12]].count(true) == 2 },
|
|
{|a| [a[7..9]].count(true) == 1 },
|
|
{|a| [a[1..11]].count(true) == 4 },
|
|
]
|
|
|
|
func miss(args) {
|
|
1..12 -> grep {|i| conditions[i](args) != args[i] }
|
|
}
|
|
|
|
for k in (^(1<<12)) {
|
|
var t = ("0%012b" % k -> chars.map {|bit| bit == '1' })
|
|
var no = miss(t)
|
|
no.len == 0 && say "Solution: true statements are #{1..12->grep{t[_]}.join(' ')}"
|
|
no.len == 1 && say "1 miss (#{no[0]}): true statements are #{1..12->grep{t[_]}.join(' ')}"
|
|
}
|