CODE CHALLENGE: Solve the String Spelled by a Genome Path Problem.
Sample Input:
ACCGA CCGAA CGAAG GAAGC AAGCT
Sample Output:
ACCGAAGCT
Я опишу это позжее. Квиз выполнен, но тактика решения О_о нетрадиционна.. и рефлексию по этому поводу я еще не отследила
package ua.xenonraite.quiz;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream.GetField;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.TreeSet;
import javax.swing.tree.TreeSelectionModel;
public class TestOne {
static String[] inputsValue = new String[] {
};
// {
// "TAA",
// "AAT",
// "GCC",
// "ATG",
// "TGC"};
static ArrayList<String> valueList = new ArrayList<>(
Arrays.asList(inputsValue));
static ArrayList<String> stringsResults = new ArrayList<>();
static int algorytm = 2;
public static void main(String[] args) throws FileNotFoundException {
try {
loadFile();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("File not found");
e.printStackTrace();
}
long time = System.currentTimeMillis();
stringsResults.add(valueList.get(0));
// System.out.println("Firts value is = " + valueList.get(0));
int error = 0;
for (int i = 1; i < valueList.size();) {
System.out.println(valueList.size());
// Проверка на совпадение в листе
if (false && itsDup(valueList.get(i))) {
// System.out.println(valueList.get(i) + " has dup");
continue;
} else {
// System.out.println(valueList.get(i) + " No dup");
}
if (build(valueList.get(i))) {
// System.out.println(valueList.get(i) + " found link");
valueList.remove(i);
} else {
i++;
}
}
// if (error == 50) {
// break;
// }
// printstatus();
boolean first = true;
for (String result : stringsResults) {
if (first) {
System.out.print(result.substring(0, result.length() - 1));
first = false;
}
System.out.print(result.substring(result.length() - 1));
}
System.out.println("\nTime = " + (System.currentTimeMillis() - time)
+ " mc");
}
private static void loadFile() throws IOException {
// GenomePathString.txt Output
File file = new File("GenomePathString.txt");
valueList = new ArrayList<String>();
if (!file.exists())
file.createNewFile();
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(
file));
while (bufferedReader.ready()) {
// System.out.println("ready");
String read = bufferedReader.readLine();
if (read.indexOf("Input") == 0)
continue;
if (read.indexOf("Output") == 0)
break;
valueList.add(read);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static boolean build(String string) {
for (int x = (stringsResults.size() - 1); x >= 0; x = x
- (stringsResults.size() - 1)) {
// C начала до до Н-1
// System.out.println(stringsResults.get(x) + " ~ " + string);
// System.out.println("Sub1 = "+ string.substring(0, string.length()
// - 1));
// System.out.println("Sub2 = " + string.substring(1,
// string.length()));
if (algorytm == 0) {
if (stringsResults.get(x).indexOf(
string.substring(0, string.length() - 1)) == 1) {
stringsResults.add(x + 1, string);
// System.out.println("1 step");
// printstatus();
return true;
}
// с 2ого до до
if (stringsResults.get(x).indexOf(
string.substring(1, string.length())) == 0) {
stringsResults.add(x, string);
// System.out.println("2 step");
// printstatus();
return true;
}
}
if (algorytm == 2) {
//System.out.println(stringsResults.get(x));
//System.out.println(string);
String tempNoLast = stringsResults.get(x).substring(1,
stringsResults.get(x).length());
String tempStrNoFirst = string
.substring(0, string.length() - 1);
//System.out.println(tempNoLast);
//System.out.println(tempStrNoFirst);
if (tempNoLast.equals(tempStrNoFirst)) {
stringsResults.add(x + 1, string);
return true;
}
String tempNoFirst = stringsResults.get(x).substring(0,
stringsResults.get(x).length() - 1);
String tempStrNoLast = string.substring(1, string.length());
//System.out.println(tempNoFirst);
//System.out.println(tempStrNoLast);
if (tempNoFirst.equals(tempStrNoLast)) {
stringsResults.add(x, string);
return true;
}
}
// System.out.println("index 1"
// + stringsResults.get(x).indexOf(
// string.substring(0, string.length() - 1)));
// System.out.println("index 1"
// + stringsResults.get(x).indexOf(
// string.substring(1, string.length())));
}
return false;
}
private static void printstatus() {
int c = 0;
for (String result : stringsResults) {
for (int t = 0; t < c; t++)
System.out.print(" ");
System.out.println(result);
c++;
}
}
private static boolean itsDup(String string) {
for (String test : stringsResults) {
if (string == test)
return true;
}
return false;
}
}
Немає коментарів:
Дописати коментар