/**
 * On autorise M.Kirgizov a partagé ce fichier pour les étudiants sur son site Internet
 * Made by Lucas Massot & Sam Maroun (4A IE SQR)
 * Date: 2020-2021
 * Promotion : Quantum (NRV)
 */

 import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.ListIterator;
import java.util.Set;
import java.util.regex.Pattern;

class arbalet_v1_MM {
    static ArrayList<String> name = new ArrayList<String>();
    static ArrayList<Double> note = new ArrayList<Double>();
    static ListIterator<String> list = name.listIterator();

    //Change the path here to test another .txt file
    static String pathss = "notes.txt";
    public static void main(String[] args) throws Exception {

        long start = System.currentTimeMillis();
        Double somme = 0.0;
        int i=0, count = 0;
        System.out.println( "\n\n" +"Nom du fichier : "+pathss);


        for (String ligne : Files.readAllLines(Paths.get(pathss))) {
            
            String[] chaine = ligne.split(Pattern.quote(";"));
            name.add(chaine[0]);
            note.add(Double.valueOf(chaine[1]));
        }
        long stop = System.currentTimeMillis();
        long resultat = stop - start;
        System.out.println("Chargement : " + resultat + "ms");
        

        start = System.currentTimeMillis();
        for(String element : name){
            if(element.contains("Margaret Smith")){
                somme += note.get(i);
                count++;
            }
            i++;
        } 
        somme = somme/count;
        stop = System.currentTimeMillis();
        System.out.println("Moyenne : " + somme);
        System.out.println(stop-start+" ms");


        Set<String> nameNote18 = new HashSet<String>();
        i=0;
        start = System.currentTimeMillis();
        for(Double element : note){
            if(element > 18.0){
                nameNote18.add(name.get(i));               
            }
            i++;
        } 
        stop = System.currentTimeMillis();
        System.out.println("Note 18 : " + nameNote18.size());
        System.out.println(stop-start+" ms");


        start = System.currentTimeMillis();
        Set<String> nameNote0 = new HashSet<String>();
        i=0;
        for(Double element : note){
            if(element == 0){
                nameNote0.add(name.get(i));               
            }
            i++;
        }
        stop = System.currentTimeMillis();
        System.out.println("Note 0 : " + nameNote0.size());
        System.out.println(stop-start+" ms");

        
        Set<String> set = new HashSet<String>();
        Set<String> doublonName = new HashSet<String>();
        start = System.currentTimeMillis();
        for(String element : name){
            {
                if(set.contains(element)){
                    doublonName.add(element);
                }
                else{
                    set.add(element);
                }
            }
        }
        stop = System.currentTimeMillis();
        System.out.println("Doublon : " + doublonName.size());
        System.out.println(stop-start+" ms");

    }


}
