Cod sursa(job #1349076)

Utilizator NadoluBogdanNadolu Bogdan NadoluBogdan Data 19 februarie 2015 23:15:38
Problema Convertor Scor 40
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.13 kb

import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.Vector;

class Pair
{
	String str1, str2;
	
	public Pair (String str1, String str2)
	{
		this.str1 = str1;
		this.str2 = str2;
	}
}

class Main
{

	Vector<Pair> vct = new Vector<Pair>();
	
	public Main (String[] s1, String[] s2, int lung)
	{
		for (int i = 0; i < lung; i++)
		{
			Pair p = new Pair(s1[i], s2[i]);
			vct.add(p);
		}
	}
	
	public static void main (String[] args) throws IOException
	{
		Scanner reader = new Scanner(new FileInputStream("convertor.in"));
		PrintWriter writer = new PrintWriter("convertor.out");
		
		String all = new String();
		
		Vector<Main> convs = new Vector<Main>();
		
		try {
	        StringBuilder sb = new StringBuilder();
	        String line = reader.next();

	        while (reader.hasNext()) {
	            sb.append(line);
	            sb.append(" ");
	            line = reader.next();
	        }
	        all = sb.toString();
	    } finally {
	        reader.close();
	    }
		
		StringTokenizer st1 = new StringTokenizer (all, "{}[]");
		while (st1.hasMoreTokens())
		{
			StringTokenizer st2 = new StringTokenizer (st1.nextToken(), ",\n");
			String[] s1 = new String[100];
			String[] s2 = new String[100];
			int lung = 0;
			int parity = 0, len1 = 0, len2 = 0;
			while (st2.hasMoreTokens())
			{
				StringTokenizer st3 = new StringTokenizer (st2.nextToken(), ":\"");
				
				while (st3.hasMoreTokens())
				{
					String aux = st3.nextToken();
					if (aux.trim().length() > 0)
					{
						if (aux.indexOf(" ") == 0)
						{
							aux = aux.trim();
						}
						if (parity % 2 == 0)
						{
							s1[len1++] = aux;
						}
						else
						{
							s2[len2++] = aux;
						}
						parity ++;
						lung = len1;
					}
				}
			}
			
			if (lung != 0)
			{	
				convs.add(new Main(s1, s2, lung));
			}
		}
		for (Pair p : convs.firstElement().vct)
		{
			writer.write(p.str1 + ",");
		}
		writer.write("\n");
	
		for (Main cv : convs)
		{
			for (Pair p : cv.vct)
			{
				writer.write(p.str2 + ",");
			}
			writer.write("\n");
		}
		
		writer.close();
	}
}