Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

Compile and Execute Java Online

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.List;



public class HelloWorld{
     Double litre = 0D;
     Double duree = 0D;
     int litres = 0;
     private static final Double URBAIN = 3D;
     private static final Double MIXTE = 6D;
     private static final Double AUTOROUTE = 8D;
     private static final int VMIN = 40;
     private static final int VMAX = 110;
     private static final int KMMIN = 30;
     private static final int KMMAX = 60;
     private static final int INCLMIN = -5;
     private static final int INCLMAX = 10;
     
     public static void main(String []args){
        HelloWorld hl = new HelloWorld();
        hl.run();
     }
     
     public void run(){
        
        String str = "5\n9\n37 61 -1 0;35 59 10 1;50 107 -5 1;48 105 9 0;56 50 9 0;49 100 7 0;55 106 3 1;40 49 6 0;\n46 96 9 0;47 101 4 1;34 51 0 1;52 86 9 0;30 60 9 0;54 90 -1 0;40 56 1 1;\n45 99 1 1;41 101 5 0;36 89 -5 0;33 77 -4 0;30 96 -2 1;53 94 2 1;53 79 -1 0;\n31 90 6 1;43 83 -5 0;30 105 7 0;55 91 -4 1;45 106 7 0;44 80 10 1;\n54 61 -4 0;59 48 9 1;36 94 4 1;50 70 -5 1;30 49 9 1;42 52 -1 1;\n59 104 0 0;59 106 1 0;31 62 7 0;49 100 7 1;33 44 -3 0;54 43 5 1;59 72 -4 1;50 60 5 1;\n33 83 -1 0;59 102 0 0;57 96 9 1;39 103 2 1;39 53 2 0;44 58 0 1;\n35 64 -1 0;54 110 -4 0;37 99 2 1;54 80 -1 0;50 109 -1 1;37 100 6 0;38 104 5 0;\n59 86 3 1;49 42 5 0;47 91 -5 1;56 54 6 0;50 100 -5 1;51 109 -2 0;\n44 71 4 1;58 100 -1 0;56 56 -4 0;42 57 3 1;41 73 -2 1;49 43 -5 0;";
        List<String> list = new ArrayList<String>(Arrays.asList(str.split("\n")));
        int i = 0;
        
        int reponse = -1;
        Double dureeRep = 0D;
        ArrayList<ArrayList<ArrayList<Integer>>> listFinal = new ArrayList<ArrayList<ArrayList<Integer>>>();
        for(String st : list){
            if(i==1){
                litres = Integer.parseInt(st);
            }else if(i>1){
                 List<String> listPortion = new ArrayList<String>(Arrays.asList(st.split(";")));
                 listFinal.add(new ArrayList<ArrayList<Integer>>());
                 int j = 0;
                 for(String sta : listPortion){
                     List<String> listRoute = new ArrayList<String>(Arrays.asList(sta.split(" ")));
                    listFinal.get(i-2).add(new ArrayList<Integer>());
                    for(String stb : listRoute){
                         listFinal.get(i-2).get(j).add(Integer.parseInt(stb));
                    }
                    j++;
                 }
            }
            i++; 
        }
        this.calculateBestLine(listFinal);

        
        //ArrayList<ArrayList<ArrayList<Integer>>> array = this.generate();
        //ArrayList<ArrayList<ArrayList<Integer>>> array = listFinal;
        //this.printValues(array);
       // this.calculateLines(array);
        
        
     }
     

     public void calculate(ArrayList<Integer> val){
         Double km = Double.valueOf(val.get(0));
         Double vitesse = Double.valueOf(val.get(1));
         Double incl = Double.valueOf(val.get(2));
         Double virage = Double.valueOf(val.get(3));
         Double conso;
         
         if(virage.equals(1D)){
             vitesse-=20D;
         }
         
         if(vitesse <= 49D){
             conso = URBAIN;
         }else if(vitesse >= 50D && vitesse <= 89){
             conso = MIXTE;
         }else{
             conso = AUTOROUTE;
         }
         
         if(incl<0D){
             conso = 0D;
         }else{
             conso = conso*(1D + incl/100D);
         }
         
        
         
         duree += km/vitesse;
         litre += (km/100D)*conso;
         
        
         
     }
     
    public int randInt(int min, int max) {
        Random rand = new Random();
        int randomNum = rand.nextInt((max - min) + 1) + min;

        return randomNum;
    }
    
    public ArrayList<ArrayList<ArrayList<Integer>>> generate(){
         ArrayList<ArrayList<ArrayList<Integer>>> array = new ArrayList<ArrayList<ArrayList<Integer>>>();
         int j = 0;
         while(j < 10){
              int rand = randInt(6,8);
              int i = 0;
             array.add(new ArrayList<ArrayList<Integer>>()); 
             while(i < rand){
                 array.get(j).add(new ArrayList <Integer>());
                 array.get(j).get(i).add(randInt(KMMIN,KMMAX));
                 array.get(j).get(i).add(randInt(VMIN,VMAX));
                 array.get(j).get(i).add(randInt(INCLMIN,INCLMAX));
                 array.get(j).get(i).add(randInt(0,1));
                 i++;
             }
             j++;
         }
         return array;
     }
     
     
     public void printValues(ArrayList<ArrayList<ArrayList<Integer>>> array){
          for (ArrayList<ArrayList<Integer>> arraya : array) {
             String str = "";
             for (ArrayList<Integer> arraytmp : arraya) {
      for (Integer tmp : arraytmp) {
          str += " " + tmp;
         }
         str += ";";
      }
   System.out.println(str);
         }
         
     }
     
     public void calculateLines(ArrayList<ArrayList<ArrayList<Integer>>> array){
         System.out.println("-------RESULTATS------");
         int i = 0;
         for (ArrayList<ArrayList<Integer>> arraya : array) {
             i++;
             duree = 0D;
             litre = 0D;
             for (ArrayList<Integer> arraytmp : arraya) {
      this.calculate(arraytmp);
      }
      
  System.out.println(i + " - duree : " + duree.toString());
         System.out.println(i + " - litre : " + litre.toString());
         System.out.println("-----------------");
         }
     }
     
      public void calculateBestLine(ArrayList<ArrayList<ArrayList<Integer>>> array){
         int i = 0;
         Double dureeG = 0D;
         int reponse = -1;
         for (ArrayList<ArrayList<Integer>> arraya : array) {
             i++;
             duree = 0D;
             litre = 0D;
             for (ArrayList<Integer> arraytmp : arraya) {
                this.calculate(arraytmp);
            }
            if(litre<=litres){
                if(reponse == -1){
                    reponse = i;
                    dureeG = duree;
                }else if(duree<=dureeG){
                    reponse = i;
                    dureeG = duree;
                }
            
            }

         }
         System.out.println(reponse);
     }
    
     
}

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.