iris = csvread("iris.csv");

[training, testing] = randomsplit(iris, 2/3)

p = 2
cells = p^(columns(iris)-1)+1

minmax = ranges(iris);
classes = minmax(2,1) - minmax(1,1) + 1;

votes = zeros(cells,classes);

for i=1:rows(training)
  label = training(i,1);
  hashval = hash(training(i,:), minmax, p);
  votes(hashval,label) += 1;
endfor

classification = tally(votes)

correct = 0
for i=1:rows(testing);
  hashval = hash(testing(i,:), minmax, p);
  class=classification(hashval);
  label = testing(i,1);
  if label == class
    correct += 1;
  endif
endfor

display(correct/rows(testing))

