import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static String solve(String[] files, String[] clues) {
if (clues!= null && clues.length > 0) {
System.err.println("CLUES - size : " + clues.length + ". Read line " + (clues.length-1));
String password = clues[clues.length-1].split(" ")[1];
String document = clues[clues.length-1].split(" ")[0];
if (!password.contains(".")){
System.err.println("VALID PASSWORD !");
return "ROOT " + password;
}else {
System.err.println("INVALID PASSWORD : " + password);
int ind=0;
for (int i=0; i<files.length; i++){
if(files[i].equals(document)){
ind=i;
break;
}
}
if(ind+1<files.length){
//System.err.println(files[ind+1]);
return "READ " + files[ind+1];
}else{
System.err.println("Files is done : build password");
String buildPassword = clues[0].split(" ")[1];
boolean activeBracket=false; //HARD
for(int i=1; i<clues.length; i++){
char[] buildPasswordToChar = buildPassword.toCharArray();
char[] currentClueToChar = clues[i].split(" ")[1].toCharArray();
String bracket=""; //HARD
buildPassword="";
for(int j=0; j<buildPasswordToChar.length; j++){
if(!activeBracket && buildPasswordToChar[j]!='.')
buildPassword += buildPasswordToChar[j]+"";
else if(!activeBracket && currentClueToChar[j]!='.')
buildPassword += currentClueToChar[j]+"";
else if(!activeBracket)
buildPassword += ".";
if(buildPasswordToChar[j]=='[') //HARD
activeBracket = true;
if(buildPasswordToChar[j]==']') {
activeBracket = false;
char[] bracketToChar = bracket.replace("[","").toCharArray();
bracket="";
char letterInBracket;
for(int k=0; k<bracketToChar.length; k++){
for(int l=k+1; l<bracketToChar.length; l++){
if(bracketToChar[k]==bracketToChar[l]) {
letterInBracket=bracketToChar[k];
//System.err.println(letterInBracket);
buildPassword=buildPassword.replace("[",String.valueOf(letterInBracket));
break;
}
}
}
}
if(activeBracket)
bracket += buildPasswordToChar[j] + "" + currentClueToChar[j] ;//HARD
}
}
//System.err.println(buildPassword);
return "ROOT " + buildPassword;
}
}
}
if (files!= null && clues != null && files.length > 0) {
System.err.println("FILES : " + files.length);
return "READ " + files[0];
}
return "";
}
public static void main(String[] args){
System.err.println("--TEST 0--");
System.err.println(solve(new String[]{},new String[]{}));
System.err.println("\n--TEST 1--");
System.err.println(solve(new String[]{"/saves/important/diary.txt"},new String[]{}));
System.err.println(solve(new String[]{"/saves/important/diary.txt"},new String[]{"/saves/important/diary.txt SecretPassword"}));
System.err.println("\n--TEST 2--");
System.err.println(solve(new String[]{"/saves/important/diary.txt","/orders/schedule.txt","/products/fruits.txt",
"/taxes/previsions.txt"},new String[]{}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/orders/schedule.txt","/products/fruits.txt",
"/taxes/previsions.txt"},new String[]{"/saves/important/diary.txt .......Horse............."}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/orders/schedule.txt","/products/fruits.txt",
"/taxes/previsions.txt"},
new String[]{"/saves/important/diary.txt .......Horse.............","/orders/schedule.txt ............Battery......"}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/orders/schedule.txt","/products/fruits.txt",
"/taxes/previsions.txt"},
new String[]{"/saves/important/diary.txt .......Horse.............","/orders/schedule.txt ............Battery......","/products/fruits.txt Correct.................."}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/orders/schedule.txt","/products/fruits.txt",
"/taxes/previsions.txt"},
new String[]{"/saves/important/diary.txt .......Horse.............","/orders/schedule.txt ............Battery......","/products/fruits.txt Correct..................",
"/taxes/previsions.txt ...................Staple"}));
System.err.println("\n--TEST 3--");
System.err.println(solve(null,null));
System.err.println("\n--TEST 4--");
System.err.println(solve(new String[]{"/saves/important/diary.txt","/saves/important/notes.txt","/work/reports.txt"},
new String[]{}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/saves/important/notes.txt","/work/reports.txt"},
new String[]{"/saves/important/diary.txt Sec...Passw..."}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/saves/important/notes.txt","/work/reports.txt"},
new String[]{"/saves/important/diary.txt Sec...Passw...","/saves/important/notes.txt ..cretP......."}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/saves/important/notes.txt","/work/reports.txt"},
new String[]{"/saves/important/diary.txt Sec...Passw...","/saves/important/notes.txt ..cretP.......",
"/work/reports.txt ..cretP...word"}));
System.err.println("\n--TEST 5--");
System.err.println(solve(new String[]{"/saves/important/diary.txt","/saves/important/notes.txt","/work/reports.txt"},
new String[]{}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/saves/important/notes.txt","/work/reports.txt"},
new String[]{"/saves/important/diary.txt Sec...[aMPR]assw..."}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/saves/important/notes.txt","/work/reports.txt"},
new String[]{"/saves/important/diary.txt Sec...[aMPR]assw...","/saves/important/notes.txt ..cret[ABPX]......."}));
System.err.println(solve(new String[]{"/saves/important/diary.txt","/saves/important/notes.txt","/work/reports.txt"},
new String[]{"/saves/important/diary.txt Sec...[aMPR]assw...","/saves/important/notes.txt ..cret[ABPX].......",
"/work/reports.txt ..........word"}));
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: