package fr.uge.concurrence;

import java.util.ArrayDeque;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class TheLastOfUs {
	private final HashMap<Thread, Integer> numbersByThread = new HashMap<>();
	private final int numberOfteams;
	private final int teamSize;
	private final ArrayDeque<Integer> numbers;

	public TheLastOfUs(int numberOfteams, int teamSize) {
		this.numberOfteams = numberOfteams;
		this.teamSize = teamSize;
		numbers = IntStream.range(0, numberOfteams).flatMap(team -> IntStream.range(0, teamSize).map(_ -> team)).boxed()
				.collect(Collectors.toCollection(ArrayDeque::new));
	}

	private List<Thread> team(int number) {
		return numbersByThread.entrySet().stream().filter(e -> e.getValue() == number).map(e -> e.getKey()).toList();
	}
	
	private List<String> teamNames(int number) {
		return numbersByThread.entrySet().stream().filter(e -> e.getValue() == number).map(e -> e.getKey().getName())
				.toList();
	}


	public record Score(int team, String names, int score) {
	};

	public int getNumber() {
		// TODO
		return 0;
	}

	public Map<Thread, Integer> numbersByThread() {
		// TODO
		return null;
	}
	
	public List<Score> finish(){
		// TODO
		return null;
	}
}