PHP код:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def _2_and_not(x1, x2):
return 0 if x1 == 1 and x2 == 1 else 1
def _2_and(x1, x2):
return 1 if x1 == 1 and x2 == 1 else 0
def _3_and(x1, x2, x3):
return 1 if x1 == 1 and x2 == 1 and x3 == 1 else 0
def _4_or(x1, x2, x3, x4):
return 1 if x1 == 1 or x2 == 1 or x3 == 1 or x4 == 1 else 0
def _3_or(x1, x2, x3):
return 1 if x1 == 1 or x2 == 1 or x3 == 1 else 0
def _not(x):
return 1 if x == 0 else 0
def dd5(x11, x12, x21, x22, x31, x32, x41, x42, x43):
a1 = _2_and(x11, x12)
a2 = _2_and(x21, x22)
a3 = _2_and(x31, x32)
a4 = _3_and(x41, x42, x43)
return _4_or(a1, a2, a3, a4)
def dd6(x11, x12, x21, x22, x31, x32):
a1 = _2_and(x11, x12)
a2 = _2_and(x21, x22)
a3 = _2_and(x31, x32)
return _not(_3_or(a1, a2, a3))
def im1(a1, a2, _a3, _a4, b1, b2, _b3, _b4, p):
dd1_out = _2_and_not(a1, a2)
dd3_in2 = _2_and(dd1_out, _a4)
dd3_out = _2_and_not(_a3, dd1_out)
dd2_out = _2_and_not(a1, b2)
dd4_in2 = _2_and(dd2_out, _b4)
dd4_out = _2_and_not(_b3, dd2_out)
dd6_out = dd6(dd4_out, p, dd3_out, p, dd4_out, dd3_out)
dd5_out = dd5(dd3_out, dd6_out, dd4_out, dd6_out, dd6_out, p, dd3_out, dd4_out, p)
_5 = '1' if dd5_out == 1 else '0'
_6 = '0' if dd5_out == 1 else '1'
_4 = '0' if dd6_out == 1 else '1'
return _5 + _6 + _4
def _bit(val, mask):
return 1 if (val & mask) != 0 else 0
def print_line(a, b, p):
a1 = _bit(a, 1)
a2 = _bit(a, 2)
a3 = _not(_bit(a, 4))
a4 = _not(_bit(a, 8))
b1 = _bit(b, 1)
b2 = _bit(b, 2)
b3 = _not(_bit(b, 4))
b4 = _not(_bit(b, 8))
in_s = str(a1) + str(a2) + str(a3) + str(a4) + ':' + str(b1) + str(b2) + str(b3) + str(b4) + ':' + str(p)
out_s = im1(a1, a2, a3, a4, b1, b2, b3, b4, p)
print 'TEST: ' + in_s + ' => ' + out_s
for p in range(0, 2):
for a in range(0, 16):
for b in range(0, 16):
print_line(a, b, p)