package io.ds.search;

import java.util.Collection;
import java.util.List;

public class SearchThread extends Thread {
    private int id;
    private Collection<Integer> results;
    private List<Integer> numbers;
    private int n;
    private int p;

    public SearchThread(int id, Collection<Integer> results, List<Integer> numbers, int n, int p) {
        this.id=id;
        this.results=results;
        this.numbers=numbers;
        this.n=n;
        this.p=p;
    }

    @Override
    public void run() {
        //calculate range
        int offset = numbers.size()/p;
        int from = id*offset;
        int to = from+offset;
        if (id==p) to+=numbers.size()%p;//the last thread takes the rest, too!

        //search n in range
        System.out.printf("Thread %d: from %d to %d.\n",id, from, to);
        for (int pos=from; pos<to; pos++) {
            if (numbers.get(pos)==n) {
                results.add(pos);//Found p at position pos!
            }
        }        
    }  
}