Source code for submission s1209

Go to diff to previous submission

Bugs.java

  1.  
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.*;
  6.  
  7. class Chyba {
  8. public String ret;
  9. public int line;
  10. public int toLine;
  11.  
  12. }
  13.  
  14. public class Bugs {
  15. static List<Chyba> chyby = new LinkedList<Chyba>();
  16.  
  17. public static String[] getErrors(int radka) {
  18. int pocet = 0;
  19. for(Chyba a : chyby) {
  20. if (a.line <= radka && radka <= a.toLine) {
  21. pocet++;
  22. }
  23. }
  24.  
  25. String [] ret = new String[pocet];
  26. int x = 0;
  27. for(Chyba a : chyby) {
  28. if (a.line <= radka && radka <= a.toLine) {
  29. ret[x] = a.ret;
  30. x++;
  31. }
  32. }
  33. return ret;
  34. }
  35.  
  36.  
  37. public static void main(String [] args) throws IOException {
  38.  
  39.  
  40. int radek = 1;
  41.  
  42. while(is.ready()) {
  43.  
  44. String line = is.readLine();
  45. //System.out.println(line);
  46.  
  47. // Test na bug case?
  48. int pozicePrvniMezery = line.indexOf(" ");
  49.  
  50. if (pozicePrvniMezery > 0) {
  51. int poziceDruheMezery = line.indexOf(" ", pozicePrvniMezery+1);
  52. if (poziceDruheMezery < 0) {
  53. try {
  54. int pocet = Integer.parseInt(line.substring(0, pozicePrvniMezery));
  55. String ret = line.substring(pozicePrvniMezery+1, line.length());
  56. Chyba a = new Chyba();
  57. a.ret = "("+ret+")*";
  58. a.line = radek+1;
  59. a.toLine = radek+pocet;
  60. chyby.add(a);
  61. radek++;
  62. continue;
  63. } catch (Exception e) {
  64.  
  65. }
  66. }
  67. }
  68.  
  69. // Replace na data
  70. String [] chyby = getErrors(radek);
  71. int pocet = chyby.length;
  72. int i = 0;
  73. int puvodni = line.length();
  74. int novaDelka = 0;
  75. boolean nalezeno = false;
  76. //System.out.println(chyby.toString());
  77. do {
  78. nalezeno = false;
  79. for (i = 0; i < pocet; i++) {
  80. line = line.replaceAll(chyby[i], "");
  81. novaDelka = line.length();
  82. if (novaDelka != puvodni) {
  83. nalezeno = true;
  84. puvodni = novaDelka;
  85. }
  86. }
  87. } while(nalezeno);
  88.  
  89. System.out.println(line);
  90.  
  91. radek++;
  92. }
  93. }
  94. }
  95.  

Diff to submission s1195

Bugs.java

--- c4.s1195.cteam111.bugs.java.0.Bugs.java
+++ c4.s1209.cteam111.bugs.java.0.Bugs.java
@@ -15,11 +15,20 @@
         static List<Chyba> chyby = new LinkedList<Chyba>();
         
-        public static List<String> getErrors(int radka) {
-                List<String> ret = new LinkedList<String>();
+        public static String[] getErrors(int radka) {
+                int pocet = 0;
                 for(Chyba a : chyby) {
                         if (a.line <= radka && radka <= a.toLine) {
-                                ret.add(a.ret);
+                                pocet++;
                         }
                 }
+                
+                String [] ret = new String[pocet];
+                int x = 0;
+                for(Chyba a : chyby) {
+                        if (a.line <= radka && radka <= a.toLine) {
+                                ret[x] = a.ret;
+                                x++;
+                        }
+                }               
                 return ret;
         }
@@ -41,15 +50,11 @@
                         
                         if (pozicePrvniMezery > 0) {
-                                // Pridat bug test
                                 int poziceDruheMezery = line.indexOf(" ", pozicePrvniMezery+1);
-                                //System.out.print("Pozice 1. "+pozicePrvniMezery+", druhe: "+poziceDruheMezery);
                                 if (poziceDruheMezery < 0) {
                                         try {
-                                                //System.out.println("Cislo:"+line.substring(0, pozicePrvniMezery));
                                                 int pocet = Integer.parseInt(line.substring(0, pozicePrvniMezery));
                                                 String ret = line.substring(pozicePrvniMezery+1, line.length());
-                                                //System.out.println("Ret:"+ret);
                                                 Chyba a = new Chyba();
-                                                a.ret = ret;
+                                                a.ret = "("+ret+")*";
                                                 a.line = radek+1;
                                                 a.toLine = radek+pocet;
@@ -64,5 +69,6 @@
                         
                         // Replace na data
-                        List<String> chyby = getErrors(radek);
+                        String [] chyby = getErrors(radek);
+                        int pocet = chyby.length;
                         int i = 0;
                         int puvodni = line.length();
@@ -72,6 +78,6 @@
                         do {
                                 nalezeno = false;
-                                for(String er : chyby) {
-                                        line = line.replaceAll("("+er+")*", "");
+                                for (i = 0; i < pocet; i++) {
+                                        line = line.replaceAll(chyby[i], "");
                                         novaDelka = line.length();
                                         if (novaDelka != puvodni) {