كيف يمكنني تكييف هذا البرنامج للامتثال للقاضي عبر الإنترنت؟

StackOverflow https://stackoverflow.com/questions/929001

  •  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() للحصول على المدخلات الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top