- h='able to fly' 
- i="(not )?(#{h}|\\w+)" 
- o=->s{n=Regexp.new(i+" (is also|are) "+i).match s 
- [[n[2],!n[1]],[n[5],!n[4]]]} 
- c=e=!z=[] 
- w=->r{z.member?(r)||(z<<(a,b=r) 
- c|=a[0]==b[0]&&a[1]!=b[1] 
- w[[[b[0],!b[1]],[a[0],!a[1]]]] 
- z.map{|q|q[1]==r[0]&&w[[q[0],r[1]]]})} 
- y=->x{z.member?([[p='Pigs',!e],[h,x]])} 
- f=->x{x.split(?.).map{|s|w[o[s]]} 
- c|y[!e]?'Yes':y[e]?'No':'Maybe'} 
-   
-   
- def assert_equal(x, y) 
-   fail "Not equal: <#{x.inspect}> != <#{y.inspect}>" if x != y 
-   puts "OK." 
- end 
- test=->(text, exp){ 
-   c=!z=[] # (re) initialization needed for multiple test runs 
-   assert_equal(f[text], exp) 
- } 
-   
- test['Pigs are green. Everything that is green is also intelligent. Everything that is able to fly is also not intelligent.', 'No'] 
- test['Pigs are old. Everything that is not able to fly is also not old.', 'Yes'] 
- test['Everything that is sweet is also not old. Everything that is intelligent is also blue.', 'Maybe'] 
- test['Pigs are not able to fly. Everything that is red is also sweet. Everything that is sweet is also not red.', 'Yes'] 
- test['Pigs are very smart. Pigs are able to fly.', 'Yes'] # <-- any answer accepted here 
-   
				aD0nYWJsZSB0byBmbHknCmk9Iihub3QgKT8oI3tofXxcXHcrKSIKbz0tPnN7bj1SZWdleHAubmV3KGkrIiAoaXMgYWxzb3xhcmUpICIraSkubWF0Y2ggcwpbW25bMl0sIW5bMV1dLFtuWzVdLCFuWzRdXV19CmM9ZT0hej1bXQp3PS0+cnt6Lm1lbWJlcj8ocil8fCh6PDwoYSxiPXIpCmN8PWFbMF09PWJbMF0mJmFbMV0hPWJbMV0Kd1tbW2JbMF0sIWJbMV1dLFthWzBdLCFhWzFdXV1dCnoubWFwe3xxfHFbMV09PXJbMF0mJndbW3FbMF0sclsxXV1dfSl9Cnk9LT54e3oubWVtYmVyPyhbW3A9J1BpZ3MnLCFlXSxbaCx4XV0pfQpmPS0+eHt4LnNwbGl0KD8uKS5tYXB7fHN8d1tvW3NdXX0KY3x5WyFlXT8nWWVzJzp5W2VdPydObyc6J01heWJlJ30KCgpkZWYgYXNzZXJ0X2VxdWFsKHgsIHkpCiAgZmFpbCAiTm90IGVxdWFsOiA8I3t4Lmluc3BlY3R9PiAhPSA8I3t5Lmluc3BlY3R9PiIgaWYgeCAhPSB5CiAgcHV0cyAiT0suIgplbmQKdGVzdD0tPih0ZXh0LCBleHApewogIGM9IXo9W10gIyAocmUpIGluaXRpYWxpemF0aW9uIG5lZWRlZCBmb3IgbXVsdGlwbGUgdGVzdCBydW5zCiAgYXNzZXJ0X2VxdWFsKGZbdGV4dF0sIGV4cCkKfQoKdGVzdFsnUGlncyBhcmUgZ3JlZW4uIEV2ZXJ5dGhpbmcgdGhhdCBpcyBncmVlbiBpcyBhbHNvIGludGVsbGlnZW50LiBFdmVyeXRoaW5nIHRoYXQgaXMgYWJsZSB0byBmbHkgaXMgYWxzbyBub3QgaW50ZWxsaWdlbnQuJywgJ05vJ10KdGVzdFsnUGlncyBhcmUgb2xkLiBFdmVyeXRoaW5nIHRoYXQgaXMgbm90IGFibGUgdG8gZmx5IGlzIGFsc28gbm90IG9sZC4nLCAnWWVzJ10KdGVzdFsnRXZlcnl0aGluZyB0aGF0IGlzIHN3ZWV0IGlzIGFsc28gbm90IG9sZC4gRXZlcnl0aGluZyB0aGF0IGlzIGludGVsbGlnZW50IGlzIGFsc28gYmx1ZS4nLCAnTWF5YmUnXQp0ZXN0WydQaWdzIGFyZSBub3QgYWJsZSB0byBmbHkuIEV2ZXJ5dGhpbmcgdGhhdCBpcyByZWQgaXMgYWxzbyBzd2VldC4gRXZlcnl0aGluZyB0aGF0IGlzIHN3ZWV0IGlzIGFsc28gbm90IHJlZC4nLCAnWWVzJ10KdGVzdFsnUGlncyBhcmUgdmVyeSBzbWFydC4gUGlncyBhcmUgYWJsZSB0byBmbHkuJywgJ1llcyddICMgPC0tIGFueSBhbnN3ZXIgYWNjZXB0ZWQgaGVyZQo=