Advertisement
Tecnelm

Untitled

Nov 13th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.18 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Code_analyse_frequence
  4. {
  5.     static ArrayList<Character> text_lettre = new ArrayList<Character>();
  6.     public static Scanner read = new Scanner(System.in);
  7.     // cette fonction va éliminer les doublons d'une arraylist
  8.     public static ArrayList<Character> antidoublon ( ArrayList<Character> newlist)
  9.     {
  10.         ArrayList <Character> List = new ArrayList<Character>();
  11.         for(int i = 0 ; i < newlist.size(); i++)
  12.         {
  13.             Object o =newlist.get(i);
  14.             if(!List.contains(o))
  15.                 List.add(newlist.get(i));
  16.         }
  17.         return List;
  18.     }
  19.     // cette fonction va transformer les majuscule en minuscule
  20.     public static ArrayList<Character> antilettreMaj(ArrayList<Character>newlist)
  21.     {
  22.        
  23.         for (int i =0 ; i < newlist.size(); i++) {
  24.            
  25.             if((int)newlist.get(i)==231 ) // transforme le ç en c
  26.                 newlist.set(i,(char)99);
  27.            
  28.             else if((int)newlist.get(i) >= 65 && (int)newlist.get(i) <=90 )
  29.             {
  30.                 newlist.set(i,(char)((int)newlist.get(i)+32));
  31.             }
  32.         }
  33.         return newlist;
  34.     }
  35.     // cette fonction va décoder le text chiffré en lui donnant le décalage
  36.     public static void decode(ArrayList<Character>newlist , int decalage)
  37.     {
  38.         String text= "";
  39.         char lettre='\0';
  40.         int nb_charact = newlist.size();
  41.        
  42.         for(int i = 0 ; i<nb_charact ; i++)
  43.         {
  44.             lettre = newlist.get(i);
  45.             if (lettre <97||lettre >122) {
  46.                 text+=(char)lettre;
  47.                 continue;
  48.             }
  49.             if (decalage >0)
  50.             {
  51.                 for (int nb = 0;nb<decalage;nb++)
  52.                 {
  53.                     lettre -= 1;
  54.                     if (lettre <97)
  55.                         lettre=122;
  56.                 }
  57.                 text+=(char)lettre;
  58.             }
  59.             else
  60.             {
  61.                 for (int nb = 0;nb<-decalage;nb++)
  62.                 {
  63.                     lettre += 1;
  64.                     if (lettre >122)
  65.                         lettre=97;
  66.                 }
  67.                 text+=(char)lettre;
  68.             }
  69.         }
  70.         System.out.println(text);
  71.  
  72.        
  73.        
  74.     }
  75.     // cette fonction va codé un text decomposé en character dans une arraylist
  76.     // cette fonction va coder le text chiffré en lui donnant le décalage
  77.     public static void code(ArrayList<Character>newlist,int decalage)
  78.     {
  79.         String text= "";
  80.         char lettre='\0';
  81.         int nb_charact = newlist.size();
  82.        
  83.         for(int i = 0 ; i<nb_charact ; i++)
  84.         {
  85.             lettre = newlist.get(i);
  86.             if (lettre <97|| lettre >122) {
  87.                 text+=(char)lettre;
  88.                 continue;
  89.             }
  90.             if (decalage >0)
  91.             {
  92.                 for (int nb = 0;nb<decalage;nb++)
  93.                 {
  94.                     lettre+= 1;
  95.                     if (lettre >122)
  96.                         lettre=97;
  97.                 }
  98.                 text+=(char)lettre;
  99.             }
  100.             else
  101.             {
  102.                 for (int nb = 0;nb<-decalage;nb++)
  103.                 {
  104.                     lettre -= 1;
  105.                     if (lettre <97)
  106.                         lettre=122;
  107.                 }
  108.                 text+=(char)lettre;
  109.             }
  110.         }
  111.         System.out.println(text);
  112.     }
  113.     // cette fonction va stocker dans une ArrayList toute les possibilité de décodage
  114.     // cette fonction va décoder toutes les possibilité de chiffrage
  115.     public static ArrayList<String> afficherTous(ArrayList<Character>newlist) {
  116.  
  117.         ArrayList<String> texteTraduit = new ArrayList<String>();
  118.         String text= "";
  119.         char lettre='\0';
  120.         int nb_charact = newlist.size();
  121.         for(int ii =0 ; ii<=25 ; ii++)
  122.         {
  123.             for(int i = 0 ; i<nb_charact ; i++)
  124.             {
  125.                 lettre = newlist.get(i);
  126.                 if (lettre <90) {
  127.                     text+=(char)lettre;
  128.                     continue;
  129.                 }
  130.                 for (int nb = 0;nb<=ii;nb++)
  131.                 {
  132.                     lettre += 1;
  133.                     if (lettre >90)
  134.                         lettre=65;
  135.                 }
  136.              text+=(char)lettre;
  137.              
  138.             }
  139.             texteTraduit.add(text);
  140.             text="";
  141.         }
  142.         return texteTraduit;
  143.        
  144.     }
  145.    
  146.     /*public static ArrayList<Character>textList(String texte)
  147.     {
  148.         ArrayList<Character> text_lettre = new ArrayList<Character>();
  149.         int nb_charact = texte.length();
  150.          
  151.          for(int i = 0 ; i<nb_charact ; i++)
  152.              text_lettre.add(i,texte.charAt(i));
  153.          antilettreMaj(text_lettre);
  154.          return text_lettre;
  155.     }*/
  156.  
  157.    
  158.    
  159.     // cette fonction va analyser la frequence d'une lettre (peu ensuite return le decalage trouvé a modifier
  160.     // mettre int et rapporter le decalage
  161.    
  162.     public static void AnalyseFreq(ArrayList<Character>newlist)
  163.     {
  164.          int posnbmax=0 , nbmax=0 ,nblettre=0,difference=0;// mot ayant le meme nombre de lettre ;
  165.          char LettreE,lettrefreq;
  166.          boolean test = false ;
  167.          
  168.        
  169.          ArrayList<Character> lettre = new ArrayList<Character>();
  170.        
  171.          lettre.addAll(antidoublon(newlist));
  172.          System.out.println(lettre+"!!!!");
  173.          
  174.         //////////////////////////////////////////////
  175.         //cette partie du code va analiser la frequence des lettre codé
  176.         //////////////////////////////////////////////
  177.          for (int i =0 ;i < lettre.size() ;i++)
  178.           {
  179.              
  180.              for (int ii =0 ;ii<newlist.size() ;ii++)
  181.              {
  182.                 test = lettre.get(i)==newlist.get(ii);
  183.                
  184.                 if(test)
  185.                    nblettre++;
  186.              }
  187.              if(nblettre>nbmax)
  188.              {
  189.                  posnbmax = i;
  190.                  nbmax = nblettre;
  191.              }      
  192.            
  193.             // nb_lettre.add(i,nblettre);
  194.              nblettre = 0;
  195.           }
  196.         //////////////////////////////////////////////
  197.         //cette partie du code va s'occuper de donner la difference avec la lettre la plus commune, et redemander de tenter a chaque fois ou donner l'ordre de tous afficher
  198.         //////////////////////////////////////////////
  199.          
  200.          System.out.println("rentrez la lettre la plus utilisé "+posnbmax);
  201.          lettrefreq= read.nextLine().charAt(0);
  202.          LettreE = lettre.get(posnbmax);
  203.          System.out.println(LettreE+"mlml");
  204.          difference = (int)LettreE-(int)lettrefreq;
  205.          
  206.          System.out.println(difference);
  207.          decode(newlist,difference);
  208.          
  209.     }
  210.    
  211.     // cette partie est la sequence d'initialisation demandant le text et le decomposant en character dans une
  212.     // Array list en transformant les majuscules base pour les autre fonction
  213.     static void init() {
  214.        
  215.         System.out.println("rentrez votre texte a traduire");
  216.         String texte = read.nextLine();
  217.         int nb_charact = texte.length();
  218.          
  219.          for(int i = 0 ; i<nb_charact ; i++)
  220.              text_lettre.add(i,texte.charAt(i));
  221.          antilettreMaj(text_lettre);
  222.     }
  223.    
  224. public static void main(String[] args)
  225.     {
  226.         init();
  227.         code(text_lettre,3);    
  228.         read.close();
  229.     }
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement