Π―, Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΠ» ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Ρ, Π΄Π°ΠΉΡΠ΅ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄.
package com.javarush.task.task19.task1916;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/*
ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
*/
public class Solution {
public static List<LineItem> lines = new ArrayList<LineItem>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1;
String file2;
file1 = reader.readLine();
file2 = reader.readLine();
BufferedReader fileReader1 = new BufferedReader(new FileReader(file1));
BufferedReader fileReader2 = new BufferedReader(new FileReader(file2));
List<String> fromFile1 = new ArrayList<>();
List<String> fromFile2 = new ArrayList<>();
while (fileReader1.ready()){
fromFile1.add(fileReader1.readLine());
}
while (fileReader2.ready()) {
fromFile2.add(fileReader2.readLine());
}
fileReader1.close();
fileReader2.close();
reader.close();
int max = fromFile1.size();
if(max<fromFile2.size()) max = fromFile2.size();
int i = 0;
int j = 0;
boolean b = true;
while (b){
try {
if(fromFile1.get(i).equals(fromFile2.get(j))){
lines.add(new LineItem(Type.SAME, fromFile1.get(i)));
i++;
j++;
}else if(!fromFile1.get(i).equals(fromFile2.get(j)) && fromFile1.get(i).equals(fromFile2.get(j+1))){
lines.add(new LineItem(Type.ADDED, fromFile2.get(j)));
j++;
}else if(!fromFile1.get(i).equals(fromFile2.get(j)) && fromFile1.get(i+1).equals(fromFile2.get(j))){
lines.add(new LineItem(Type.REMOVED, fromFile1.get(i)));
i++;
}
}catch (Exception e){
if(fromFile1.size()>fromFile2.size()){
lines.add(new LineItem(Type.REMOVED, fromFile1.get(i)));
i++;
if(i == max) b = false;
}else {
lines.add(new LineItem(Type.ADDED, fromFile2.get(j)));
j++;
if(j == max) b = false;
}
}
}
/*for (LineItem li : lines) {
System.out.println(li);
}*/
}
public static enum Type {
ADDED, //Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΡΡΡΠΎΠΊΠ°
REMOVED, //ΡΠ΄Π°Π»Π΅Π½Π° ΡΡΡΠΎΠΊΠ°
SAME //Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
}
public static class LineItem {
public Type type;
public String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
/*@Override
public String toString() {
String s = type.toString() + " " + line;
return s;
}*/
}
}