35 lines
893 B
Raku
35 lines
893 B
Raku
sub infix:<→> ($protasis, $apodosis) { !$protasis or $apodosis }
|
|
|
|
my @tests =
|
|
{ .end == 12 and all(.[1..12]) === any(True, False) },
|
|
{ 3 == [+] .[7..12] },
|
|
{ 2 == [+] .[2,4...12] },
|
|
{ .[5] → all .[6,7] },
|
|
{ none .[2,3,4] },
|
|
{ 4 == [+] .[1,3...11] },
|
|
{ one .[2,3] },
|
|
{ .[7] → all .[5,6] },
|
|
{ 3 == [+] .[1..6] },
|
|
{ all .[11,12] },
|
|
{ one .[7,8,9] },
|
|
{ 4 == [+] .[1..11] },
|
|
;
|
|
|
|
my @solutions;
|
|
my @misses;
|
|
|
|
for [X] (True, False) xx 12 {
|
|
my @assert = Nil, |$_;
|
|
my @result = Nil, |@tests.map({ ?.(@assert) });
|
|
my @true = @assert.grep(?*, :k);
|
|
my @cons = (@assert Z=== @result).grep(!*, :k);
|
|
given @cons {
|
|
when 0 { push @solutions, "<{@true}> is consistent."; }
|
|
when 1 { push @misses, "<{@true}> implies { "¬" if !@result[~$_] }$_." }
|
|
}
|
|
}
|
|
|
|
.say for @solutions;
|
|
say "";
|
|
say "Near misses:";
|
|
.say for @misses;
|