Mai intai trebuie sa te autentifici.
Cod sursa(job #1350990)
Utilizator | Data | 21 februarie 2015 02:17:08 | |
---|---|---|---|
Problema | Convertor | Scor | 0 |
Compilator | java | Status | done |
Runda | rosedu_cdl_2015 | Marime | 3.13 kb |
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
class Main {
private static List<ArrayList<String>> storage;
private static int mainField = 0;
private static int query = 0;
public Main() {
storage = new ArrayList<ArrayList<String>>();
}
public static void readFromInternFile() throws IOException {
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(
new FileInputStream("convertor.in"), "UTF8"));
String line = br.readLine();
if(line != null) processLine(line);
while((line = br.readLine()) != null) {
processLine(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
br.close();
}
}
public static void printCSVinFile() throws FileNotFoundException, UnsupportedEncodingException {
PrintWriter pw = new PrintWriter("convertor.out","UTF8");
int size = storage.size();
for(int j = 0; j < size; j++) {
for(int k = 0; k < storage.get(j).size(); k++) {
pw.print(storage.get(j).get(k) + ",");
}
pw.println();
}
pw.close();
}
public static void processLine(String line) throws FileNotFoundException, UnsupportedEncodingException {
String[] helper;
helper = line.split("\\{|\\}");
int current = 0;
while(current < helper.length) {
if(helper[current].contains("[")) {
storage.add(new ArrayList<String>());
storage.add(new ArrayList<String>());
query++;
mainField = 0;
current++;
continue;
}
if(helper[current].contains("]")) {
break;
}
String[] auxiliary = helper[current].split("\"");
int auxiliaryContor = 0;
int auxiliarySize = auxiliary.length;
while(auxiliaryContor < auxiliarySize) {
String[] auxiliary2 = auxiliary[auxiliaryContor].split(",");
if(auxiliary2.length == 0) {continue;}
auxiliary[auxiliaryContor] = auxiliary2[0];
if(auxiliary[auxiliaryContor].contains(":")) {
auxiliary[auxiliaryContor] = auxiliary[auxiliaryContor].split(":")[1];
}
while(auxiliary[auxiliaryContor].startsWith(" ")) auxiliary[auxiliaryContor] = auxiliary[auxiliaryContor].substring(1);
if(auxiliary[auxiliaryContor].length() == 0) {continue;}
if(mainField != 0) {
storage.get(mainField).add(auxiliary[auxiliaryContor]);
mainField = 0;
} else {
if(storage.get(0).indexOf(auxiliary[auxiliaryContor]) == 0) {
query++;
mainField = query;
storage.add(new ArrayList<String>());
continue;
}
if(storage.get(0).contains(auxiliary[auxiliaryContor])) {
mainField = query;
continue;
}
storage.get(0).add(auxiliary[auxiliaryContor]);
mainField = query;
}
auxiliaryContor++;
}
current++;
}
printCSVinFile();
}
public static void main(String[] args) throws IOException {
Main tester = new Main();
readFromInternFile();
}
}