# Function takes in counts, returns classifier (4 digits)

from math import exp

def logistic(ey,eyx1,eyx2):
  t0,t3,t4 = 0.,0.,0.
  for i in range(10000):
    dt0 = ey - (exp(t0)/(1+exp(t0)) + exp(t0+t3)/(1+exp(t0+t3))+exp(t0+t4)/(1+exp(t0+t4))+exp(t0+t3+t4)/(1+exp(t0+t3+t4)))
    dt3 = eyx1 - (exp(t0+t3)/(1+exp(t0+t3))+exp(t0+t3+t4)/(1+exp(t0+t3+t4)))
    dt4 = eyx2 - (exp(t0+t4)/(1+exp(t0+t4))+exp(t0+t3+t4)/(1+exp(t0+t3+t4)))
    if i%100==0:
      print 'off by',dt0,dt3,dt4
      print t0, t3, t4
      print evaluate(t0,t3,t4)
    t0+=0.01*dt0
    t3+=0.01*dt3
    t4+=0.01*dt4

# evaluates classifier on all inputs
def evaluate(t0,t3,t4):
  result = []
  # for 00
  if t0>=0:
    result.append(1)
  else:
    result.append(0)
  # for 10
  if t0+t3>=0:
    result.append(1)
  else:
    result.append(0)
  # for 01
  if t0+t4>=0:
    result.append(1)
  else:
    result.append(0)
  # for 11
  if t0+t3+t4>=0:
    result.append(1)
  else:
    result.append(0)
  return result

if __name__=='__main__':
  logistic(0.5, 0.0, 0.5)