zsoltizbekk

csavar

May 23rd, 2016
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.26 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileReader;
  4. import java.io.IOException;
  5.  
  6. public class Csavarkeszlet {
  7.  
  8.     public static void main(String[] args) throws FileNotFoundException, IOException {
  9.         BufferedReader br = new BufferedReader(new FileReader(args[0]));
  10.         String line;
  11.         while((line = br.readLine()) != null){  
  12.        
  13.         String[] tokens = line.split(" ");
  14.         int sor = Integer.parseInt(tokens[0]);
  15.         int oszlop = Integer.parseInt(tokens[1]);
  16.         int anya = 0;
  17.         String[] t = new String[sor];
  18.        
  19.         int[] szamok = new int[100000];
  20.  
  21.         for (int i = 0; i < sor; i++){
  22.             t[i]=br.readLine();
  23.         }
  24.        
  25.         for (int i = 0; i < sor; i++){
  26.             for (int j = 0; j < oszlop; j++){
  27.                 if ((t[i].charAt(j)) == 'O'){
  28.                     anya++;
  29.                     String temp = t[i].substring(0,j)+'.'+t[i].substring(j+1);
  30.                     t[i] = temp;
  31.                 }
  32.                 if ((t[i].charAt(j)) == '*'){
  33.                     String temp = t[i].substring(0,j)+'.'+t[i].substring(j+1);
  34.                     t[i] = temp;
  35.                     int k = i;
  36.                     int l = j;
  37.                     int hossz = 0;
  38.                        
  39.                         //bal
  40.                      
  41.                         while (l > 0 && t[k].charAt(l-1) == '-'){
  42.                             l--;
  43.                             hossz++;
  44.                             String tmp = t[k].substring(0,l)+'.'+t[k].substring(l+1);
  45.                             t[k] = tmp;
  46.                             if (hossz > 0 && (l == 0 || t[k].charAt(l-1) != '-')){
  47.                                 szamok[hossz]++;
  48.                                 //System.out.println("bal:"+hossz);
  49.                                 hossz = 0;
  50.                                 k = i;
  51.                                 l = j;
  52.                                 break;
  53.                             }
  54.                         }                
  55.                        
  56.                         //jobb
  57.                                  
  58.                         while (l < oszlop-1 && t[k].charAt(l+1) == '-'){    
  59.                             l++;
  60.                             hossz++;
  61.                             String tmp = t[k].substring(0,l)+'.'+t[k].substring(l+1);
  62.                             t[k] = tmp;
  63.                             if (hossz > 0 && (l == oszlop-1 || t[k].charAt(l+1) != '-')){
  64.                                 szamok[hossz]++;
  65.                                 //System.out.println("jobb:"+hossz);
  66.                                 hossz = 0;
  67.                                 k = i;
  68.                                 l = j;
  69.                                 break;
  70.                             }
  71.                         }      
  72.                        
  73.                         //fel
  74.                        
  75.                         while (k > 0 && t[k-1].charAt(l) == '|'){
  76.                             k--;
  77.                             hossz++;
  78.                             String tmp = t[k].substring(0,l)+'.'+t[k].substring(l+1);
  79.                             t[k] = tmp;
  80.                             if (hossz > 0 && (k == 0 || t[k-1].charAt(l) != '|')){
  81.                                 szamok[hossz]++;
  82.                                 //System.out.println("fel:"+hossz);
  83.                                 hossz = 0;
  84.                                 k = i;
  85.                                 l = j;                                
  86.                                 break;
  87.                             }
  88.                         }
  89.                        
  90.                         //le
  91.                        
  92.                         while (k < sor-1 && t[k+1].charAt(l) == '|'){
  93.                             k++;
  94.                             hossz++;
  95.                             String tmp = t[k].substring(0,l)+'.'+t[k].substring(l+1);
  96.                             t[k] = tmp;
  97.                             if (hossz > 0 && (k == sor-1 || t[k+1].charAt(l) != '|')){
  98.                                 szamok[hossz]++;
  99.                                 //System.out.println("le:"+hossz);
  100.                                 hossz = 0;
  101.                                 k = i;
  102.                                 l = j;                                
  103.                                 break;
  104.                             }
  105.                         }                        
  106.                        
  107.                         //bal fel atlo
  108.                        
  109.                         while ((l > 0 && k > 0) && t[k-1].charAt(l-1) == '\\'){
  110.                             l--;
  111.                             k--;
  112.                             hossz++;
  113.                             String tmp = t[k].substring(0,l)+'.'+t[k].substring(l+1);
  114.                             t[k] = tmp;
  115.                             if (hossz > 0 && (l == 0 || k == 0 || t[k-1].charAt(l-1) != '\\')){
  116.                                 szamok[hossz]++;
  117.                                 //System.out.println("balfel:"+hossz);
  118.                                 hossz = 0;
  119.                                 k = i;
  120.                                 l = j;                                
  121.                                 break;
  122.                             }
  123.                         }
  124.                        
  125.                         //bal le atlo
  126.                        
  127.                         while ((l > 0 && k < sor-1) && t[k+1].charAt(l-1) == '/'){
  128.                             l--;
  129.                             k++;
  130.                             hossz++;
  131.                             String tmp = t[k].substring(0,l)+'.'+t[k].substring(l+1);
  132.                             t[k] = tmp;
  133.                             if (hossz > 0 && (l == 0 || k == sor-1 || t[k+1].charAt(l-1) != '/')){    
  134.                                 szamok[hossz]++;                                
  135.                                 //System.out.println("balle:"+hossz);
  136.                                 hossz = 0;
  137.                                 k = i;
  138.                                 l = j;                                
  139.                                 break;
  140.                             }
  141.  
  142.                         }                  
  143.                        
  144.                         //jobb fel atlo
  145.                        
  146.                         while ((l < oszlop-1 && k > 0) && t[k-1].charAt(l+1) == '/'){
  147.                             l++;
  148.                             k--;
  149.                             hossz++;
  150.                             String tmp = t[k].substring(0,l)+'.'+t[k].substring(l+1);
  151.                             t[k] = tmp;
  152.                             if (hossz > 0 && ((l == oszlop-1 || k == 0)|| t[k-1].charAt(l+1) != '/')){
  153.                                 szamok[hossz]++;
  154.                                 //System.out.println("jobbfel:"+hossz);
  155.                                 hossz = 0;
  156.                                 k = i;
  157.                                 l = j;                                
  158.                                 break;
  159.                             }
  160.                         }
  161.                        
  162.                         //jobb le atlo
  163.                        
  164.                         while ((l < oszlop-1 && k < sor-1) && t[k+1].charAt(l+1) == '\\'){
  165.                             l++;
  166.                             k++;
  167.                             hossz++;
  168.                             String tmp = t[k].substring(0,l)+'.'+t[k].substring(l+1);
  169.                             t[k] = tmp;
  170.                             if (hossz > 0 && ((l == oszlop-1 || k == sor-1)|| t[k+1].charAt(l+1) != '\\')){
  171.                                 szamok[hossz]++;
  172.                                 //System.out.println("jobble:"+hossz);
  173.                                 hossz = 0;
  174.                                 k = i;
  175.                                 l = j;                                
  176.                                 break;
  177.                             }
  178.                         }
  179.                 }
  180.             }
  181.         }
  182.        
  183.         System.out.print(anya);
  184.         for (int i = 0; i < szamok.length; i++)
  185.             if (szamok[i] > 0)
  186.             System.out.print(" " + i + ":" + szamok[i]);
  187.         System.out.println("");
  188.     }  
  189.     }
  190. }
Add Comment
Please, Sign In to add comment