a mini implementation perceptron