Advertisement
Guest User

Madis

a guest
Aug 18th, 2009
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.65 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.io.*;
  3.  
  4. /**
  5.  * 3. �l
  6.  * http://www.teaduskool.ut.ee/orb.aw/class=file/action=preview/id=3072/eda.et.pdf
  7.  */
  8.  
  9. public class Olympiaad {
  10.  
  11.     static String lause;
  12.     static String mumbajumba;
  13.     static String mumbajumbaRev;
  14.     static ArrayList<String> s�nadFinal = new ArrayList<String>();
  15.     static Writer output;
  16.  
  17.     public static void main(String[] args) throws IOException {
  18.         //System.out.println("Programm k�ivitatud.");
  19.  
  20.         try {      
  21.             BufferedReader input = new BufferedReader(new FileReader("mj.sis"));
  22.             lause = input.readLine();
  23.             mumbajumba = input.readLine();
  24.             input.close();
  25.         } catch (FileNotFoundException e) {
  26.             e.printStackTrace();
  27.         } catch (IOException ioe) {
  28.             ioe.printStackTrace();
  29.         }
  30.  
  31.         output = new BufferedWriter(new FileWriter(new File("mj.val")));
  32.  
  33.         //lause = "AA";
  34.         //mumbajumba = "AA";
  35.  
  36.         System.out.println(lause);
  37.         System.out.println(mumbajumba);
  38.        
  39.         teeS�nad();
  40.        
  41.         output.close();
  42.  
  43.         //System.out.println("Programm suletud.");
  44.  
  45.     }
  46.  
  47.     public static String reverse(String s�na) {
  48.         return new StringBuffer(s�na).reverse().toString();
  49.     }
  50.  
  51.     public static void teeS�nad() throws IOException {
  52.  
  53.         mumbajumbaRev = reverse(mumbajumba);
  54.  
  55.         //Rekursioon
  56.         s�nadFinal = leiaJ�rgmineS�na(0);
  57.  
  58.  
  59.         //Tulemused
  60.         int s�nadeArv = s�nadFinal.size();
  61.         output.write(s�nadeArv+"\n");
  62.         System.out.println("\n\n\n\nFinal s�nade arv: "+s�nadeArv);
  63.  
  64.         for (String s�na : s�nadFinal) {
  65.             output.write(s�na+"\n");
  66.             System.out.println(s�na);
  67.         }
  68.  
  69.     }
  70.  
  71.  
  72.     public static ArrayList<String> leiaJ�rgmineS�na(int nihe) {
  73.  
  74.         String ajutine = ""; //Jooksev sisend(t�itub t�hthaaval)
  75.  
  76.         //Hetkel olev v�him s�nade arv
  77.         ArrayList<String> v�himS�nad = new ArrayList<String>();
  78.  
  79.         //Sisend, kus j�tame algusest vahele "nihe" arv t�hte
  80.         String sisend = lause.substring(nihe);
  81.        
  82.         //Vaata sisend l�bi
  83.         for (int i = 0; i < sisend.length(); i++) {
  84.  
  85.             //System.out.println("i: "+i);
  86.             //System.out.println("sisend.length(): "+sisend.length());
  87.  
  88.             char t�ht = sisend.charAt(i); //Jooksev t�ht
  89.             ajutine += t�ht; //Lisame ajutisele stringile t�he
  90.             String ajutineRev = reverse(ajutine); //V�tame ajutise stringi tagurpidi
  91.            
  92.             // Kui leiti sobiv s�na
  93.             // ehk kui mumbajumba tagurpidi(alustades leidmata osadest)
  94.             // algab hetke lause tagurpidi osaga
  95.             if (mumbajumbaRev.startsWith(ajutineRev,nihe)) {
  96.                 ArrayList<String> s�nad = new ArrayList<String>();
  97.                 // Kui sobib, j�tame meelde kui parima sobiva ning uurime siiski edasi
  98.                 // kas veel pikemat sobivat ei tule
  99.                 s�nad.add(ajutine);
  100.  
  101.                 int leitudS�naPikkus = ajutine.length();
  102.                 //System.out.println(nihe);
  103.                 int k�esOlevateS�nadePikkus = leitudS�naPikkus+nihe;
  104.  
  105.                 //Kui terve lause pole veel k�es
  106.                 //System.out.println("k�esOlevateS�nadePikkus: "+k�esOlevateS�nadePikkus);
  107.                 //System.out.println("lause.length(): "+lause.length());
  108.                 if (k�esOlevateS�nadePikkus < lause.length()) {
  109.                     //System.out.println("jah");
  110.                     addToArrayList(s�nad,leiaJ�rgmineS�na(k�esOlevateS�nadePikkus));
  111.                 } else {
  112.                     //System.out.println("ei");    
  113.                 }                              
  114.  
  115.                 // Kui on esimene versioon s�nadest v�i
  116.                 // leitud s�nu on rohkem kui 0 ning v�hem kui ennem
  117.                 if ((v�himS�nad.size() == 0) || (s�nad.size() > 0 && s�nad.size() < v�himS�nad.size())) {
  118.                     v�himS�nad = s�nad;
  119.                     //s�nad = null;
  120.                 }
  121.             }
  122.  
  123.         }
  124.  
  125.         //System.out.println("Tagastan "+v�himS�nad.size()+" s�na.");
  126.         return v�himS�nad;
  127.     }
  128.  
  129.  
  130.     /**
  131.      *
  132.      * @param arrayList1 ArrayList, kuhu lisatakse
  133.      * @param arrayList2 ArrayList, mille elemendid lisatakse
  134.      * @return ArrayListi, kus on m�lemad koos
  135.      */
  136.     public static ArrayList<String> addToArrayList(ArrayList<String> arrayList1, ArrayList<String> arrayList2) {
  137.  
  138.         //Lisa iga teise arrayListi item esimesse
  139.         for (String item : arrayList2) {
  140.             arrayList1.add(item);
  141.         }
  142.         return arrayList1;
  143.     }
  144. }
  145.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement