كيف يمكنني تكييف هذا البرنامج للامتثال للقاضي عبر الإنترنت؟
-
06-09-2019 - |
سؤال
أنا حل سلالم خطوة تحرير UVA على موقع فرعي UVA المسمى Programming-Challenges.com، ولكن نظرا لأنني لم أحصل على كل التنسيق الذي من المفترض أن أقوم بإدخاله، فقد استغرق الأمر ببساطة مدخلات العينة في ملف نصي واختبار التعليمات البرمجية الخاصة بي من هناك. مثله:
import java.io.*;
import java.util.*;
class Levenshtein {
private static int minimum(int a, int b, int c) {
if(a<=b && a<=c)
return a;
if(b<=a && b<=c)
return b;
return c;
}
public static int computeLevenshteinDistance(String str1, String str2) {
return computeLevenshteinDistance(str1.toCharArray(),
str2.toCharArray());
}
private static int computeLevenshteinDistance(char [] str1, char [] str2) {
int [][]distance = new int[str1.length+1][str2.length+1];
for(int i=0;i<=str1.length;i++)
distance[i][0]=i;
for(int j=0;j<=str2.length;j++)
distance[0][j]=j;
for(int i=1;i<=str1.length;i++)
for(int j=1;j<=str2.length;j++)
distance[i][j]= minimum(distance[i-1][j]+1,
distance[i][j-1]+1,
distance[i-1][j-1]+
((str1[i-1]==str2[j-1])?0:1));
return distance[str1.length][str2.length];
}
public static void main(String args[]){
ArrayList<String> theWords = new ArrayList<String>();
try {
String ruta="entradaLevenshtein.txt";
File myFile = new File (ruta);
FileReader fileReader = new FileReader(myFile);
BufferedReader reader = new BufferedReader(fileReader);
String line = null;
while ((line=reader.readLine())!=null){
System.out.println(line);
theWords.add(line);
}
reader.close();
}
catch (IOException ex){
ex.printStackTrace();
}
{}
// todo esto sólo para iniciar el arreglo
// ahora vienen las llamadas a Levenstein y las comparaciones
int maxEdit=0;
int actualEdit=0;
int wordsIndex1 =0, wordsIndex2=0;
while (wordsIndex1<= theWords.size())
{
while (wordsIndex2<= theWords.size()-1){
actualEdit=computeLevenshteinDistance(theWords.get(wordsIndex1),theWords.get(wordsIndex2));
if (actualEdit>maxEdit){maxEdit=actualEdit;}
wordsIndex2++;
}
wordsIndex1++;
}
System.out.println(maxEdit+1);
}
}
ملف الإدخال الخاص بي يجري:
cat
dig
dog
fig
fin
fine
fog
log
wine
من المفترض أن أقوم بالامتثال للرمز إلى النمط التالي، والشيء .. أنا لا أحصل على حيث يلتقط هذا الشيء سلسلة:
import java.io.*;
import java.util.*;
class Modelo implements Runnable{
static String ReadLn(int maxLength){ // utility function to read from stdin,
// Provided by Programming-challenges, edit for style only
byte line[] = new byte [maxLength];
int length = 0;
int input = -1;
try{
while (length < maxLength){//Read untill maxlength
input = System.in.read();
if ((input < 0) || (input == '\n')) break; //or untill end of line ninput
line [length++] += input;
}
if ((input < 0) && (length == 0)) return null; // eof
return new String(line, 0, length);
}catch (IOException e){
return null;
}
}
public static void main(String args[]) // entry point from OS
{
Modelo myWork = new Modelo(); // Construct the bootloader
myWork.run(); // execute
}
public void run() {
new myStuff().run();
}
}
class myStuff implements Runnable{
public void run(){
try
{
/// PLACE YOUR JAVA CODE HERE
}catch(Exception e){
System.out.println("A Exception was generated");
}
}
// You can insert more classes here if you want.
}
لماذا يجب أن أضعه حيث يقول // ضع الكود الخاص بك هنا وليس هنا؟
try{
while (length < maxLength){//Read untill maxlength
input = System.in.read();
if ((input < 0) || (input == '\n')) break; //or untill end of line input
line [length++] += input;
}
كيف يمكنني التعامل مع المدخلات؟
المحلول
أعتقد أن الفكرة هنا هي كتابة البرنامج الخاص بك في myStuff
فئة، حيث سيتم استدعاؤها في run()
طريقة. من run()
الطريقة، يمكنك استخدام Modelo.ReadLn()
للحصول على المدخلات الخاصة بك.
لا تنتمي إلى StackOverflow