1. #1
    Avatar von Mentos
    Registriert seit
    18.11.2011
    Beiträge
    451
    Thanked 498 Times in 240 Posts

    Standard [Java] Wordmix

    Hallo,
    im Moment programmiere ich eine Wordmix-Klasse für meinen MClienten und dachte, ich könnte das bisherige Resultat mal online stellen .
    [HIDE]
    PHP-Code:
    package util;

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    /**
     * 
     * @author Mentos
     * Fully rewritten WordmixBot by Mentos.
     * Ich bin krank. Habt Mitleid!
     * Wer sie verwendet, schreibt es bitte in den Bot rein!
     */
    public class WordmixBot {

        public 
    WordmixBot()
        {
            
    String input "Markt(°B°1°°) in(°B°2°°) mit(°B°3°°) steigt(°B°4°°) Berger(°B°5°°) Bilfinger(°B°6°°) ein.(°B°7°°) Übernahme(°B°8°°) indischen(°B°9°°)";
            
    googleAnswere(input);
        }
        
    /**
         * Liest den Quelltext einer Seite aus
         * @param websiteURL Die InternetSeite
         * @return Den Quelltext
         */
        
    private static String getSource(String websiteURL) {
            try {
                
    String sourceLine;
                
    URL url = new URL(websiteURL);
                
    URLConnection con url.openConnection();
                
    con.setRequestProperty("User-Agent""");
                
    //InputStream inputStream = url.openStream();
                
    BufferedReader bufferReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
                
    StringBuilder source = new StringBuilder();
                while ((
    sourceLine bufferReader.readLine()) != null) {
                    
    source.append(sourceLine);
                }
                return 
    source.toString();
            } catch (
    Exception x) {
                
    x.printStackTrace();
                return 
    null;
            }
        }
        
        
    /**
         * Sucht für das Knuddels-Chat-System die Richtige Wordmix-Antwort
         * @param input Alles vom Packet ab dem _
         * @return (Manchmal) die richtige Antwort!
         */
        
    public static String googleAnswere(String input)
        {
            
    String source;
            try {
                
    source getSource("http://www.google.de/search?q=" java.net.URLEncoder.encode(googleString(input),  "UTF-8")); //Quelltext herunterladen
                
    List<Stringused = new ArrayList<String>(); //Eine Liste machen (Welche Wörter wurden schon benutzt)
                
    StringBuilder solution = new StringBuilder(); //Einen StringBuilder für die Finale Lösung
                
    HashMap textNumber textNumber(input); //Eine HashMap mit den Wörtern (Mentos => 1)
                
    source source.substring(source.indexOf("<b>Web</b>")); //Alles ab <b>Web</b> beachten
                
    String[] solutions source.split("<b>");//Keine Ahnung mehr
                
    String search util.Util.StringArrayToString(solutions" ").replace("</b>""");
                for(
    String s:search.split(" ")) //Für jedes einzelne Wort
                
    {
                    if(!
    s.isEmpty()){ //Vorrausgesetzt es ist nicht leer
                    
    if(textNumber.containsKey(s) && !used.contains(s)) //Wird überprüft, ob es gebraucht wird und wenn ja, ob es verwendet wurde.
                    
    {
                        
    solution.append(textNumber.get(s)); //Dann wird die Lösung dem StringBuilder hinzugefügt
                        
    used.add(s); //Und auch der Used-Liste
                        
    if(solution.length() == textNumber.values().size()) //Wenn die Anzahl der Lösung der Anzahl der Suche entspricht
                        
    {
                            return 
    solution.toString(); //Die Lösung zurückgeben.
                        
    }
                    }}
                }
            } catch (
    UnsupportedEncodingException e) {
                
    // TODO Auto-generated catch block
                
    e.printStackTrace();
            }
            return 
    null;
        }
        
        
    /**
         * TextNumber. Gibt für einen InputString (z.B. Mentos(°B°1°°) König.(°B°2°°) ist(°B°3°°)) eine HashMap zurück (Mentos => 1,...)
         * @param input Der KnuddelsString, der die Wörter+Nummern beinhaltet (z.B. Mentos(°B°1°°) König.(°B°2°°) ist(°B°3°°))
         * @return HashMap (Mentos => 1, König => 2, ist => 3)
         */
        
    private static HashMap textNumber(String input)
        {
            
    String patternString "([A-Za-zäöüÄÜÖéè\\.,!ß]+)\\(°B°([0-9]+)°°\\)"//Pattern zum matchen :)
            
    Pattern pattern Pattern.compile(patternStringPattern.CASE_INSENSITIVE); //Kompilieren 
            
    Matcher matcher pattern.matcher(input); //Auf den Input rausstrecken
            
    HashMap<StringIntegerreturnment = new HashMap<StringInteger>();
            while(
    matcher.find())
            {
                
    returnment.put(matcher.group(1), Integer.valueOf(matcher.group(2))); //Hinzufügen!
            
    }
            return 
    returnment;
        }
        
        
    /**
         * Passt den String an Google an
         * @param input Den KnuddelsString
         * @return Einen Google-Konformen String
         */
        
    private static String googleString(String input)
        {
            
    String patternString "([A-Za-zäöüÄÜÖéè\\.,!ß]+)\\(°B°[0-9]+°°\\)"//Pattern zum matchen :)
            
    Pattern pattern Pattern.compile(patternStringPattern.CASE_INSENSITIVE); //Kompilieren 
            
    Matcher matcher pattern.matcher(input); //Auf den Input rausstrecken
            
    StringBuilder builder = new StringBuilder();
            while(
    matcher.find())
            {
                
    builder.append("\"").append(matcher.group(1)).append("\"").append(' ');
            }
            
    System.out.println(builder.toString().substring(0builder.length()));
            return 
    builder.toString().substring(0builder.length());
            
        }
        
    }
    ------
        
    /**
         * Gibt ein StringArray zu einem String anhand eines Delimeters zurück!
         * @param array Das StringArray
         * @param delimeter Der Delimeter
         * @return Einen String, der das StringArray mit den Delimetern verbunden hat.
         */
        
    public static String StringArrayToString(String[] array, String delimeter) {
            
    StringBuilder builder = new StringBuilder();
            for (
    String s : array) {
                
    builder.append(s);
                
    builder.append(delimeter);
            }
            return 
    builder.toString().substring(0,
                    
    builder.length() - delimeter.length());
        } 
    [/hide]
    Geändert von DeKaDeNz (08.02.2012 um 00:32 Uhr)
    „Es sind nicht unsere Fähigkeiten, die zeigen, wer wir wirklich sind, es sind unsere Entscheidungen.“
    - Albus Dumbledore, Harry Potter 2


    /guestchat registerGuest

  2. The Following 5 Users Say Thank You to Mentos For This Useful Post:

    AFU (23.11.2011), Bossgen (23.11.2011), Comu (23.11.2011), Runix (23.11.2011), Snees (23.11.2011)

  3. #2
    Avatar von NaBzZ
    Registriert seit
    18.11.2011
    Beiträge
    38
    Thanked 9 Times in 4 Posts

    Standard AW: [Klasse] Wordmix

    Der MClient ist doch schon etwas älter oder? Wirst du ihn völlig neu rausbringen, oder nur kleine Veränderungen vornehmen?

  4. #3
    Avatar von AFU
    Registriert seit
    19.11.2011
    Beiträge
    358
    Thanked 75 Times in 61 Posts

    Standard AW: [Klasse] Wordmix

    <3 genau so hatte ich mir das vorgestellt

    [HIDE=10]Also wenn ich das richtig verstanden habe, funktioniert der Bot so:
    Mustersatz (4) das (3) ein (2) ist (1).
    Du schickst mal nur den Satz ohne die Zahlen an Google: Mustersatz - Google-Suche das ist ein.
    Wie gehst du danach vor? Prüft du auf Relevanz? Wenn ja, wie? Nach welchen Kriterien wird dann die Reihenfolge zurückgegeben?[/HIDE]


    @Mods: Man kanns mit der "Beitragsputzerei" auch übertreiben -.-

  5. #4
    Avatar von Mentos
    Registriert seit
    18.11.2011
    Beiträge
    451
    Thanked 498 Times in 240 Posts

    Standard AW: [Klasse] Wordmix

    Aehm. Also erst wird die Anfrage an Google gesendet.
    Dann wird halt Quelltextbereinigung vorgenommen. Dann wird für jedes Wort geprüft, ob es vorhanden ist und wenn ja, ob es das erste Mal vorkommt.
    Danach wird das zurückgegeben. Sicherheiten habe ich noch nicht eingebaut.
    „Es sind nicht unsere Fähigkeiten, die zeigen, wer wir wirklich sind, es sind unsere Entscheidungen.“
    - Albus Dumbledore, Harry Potter 2


    /guestchat registerGuest

  6. The Following User Says Thank You to Mentos For This Useful Post:

    AFU (23.11.2011)

  7. #5
    Avatar von AFU
    Registriert seit
    19.11.2011
    Beiträge
    358
    Thanked 75 Times in 61 Posts

    Standard AW: [Klasse] Wordmix

    Zitat Zitat von Mentos Beitrag anzeigen
    Dann wird für jedes Wort geprüft, ob es vorhanden ist und wenn ja, ob es das erste Mal vorkommt.
    Warum ob es das erste mal vorkommt? Wieso ist das wichtig?


    Zitat Zitat von Mentos Beitrag anzeigen
    Danach wird das zurückgegeben.
    Mit das meinst du hier, dass die Positionen zurückgegeben werden an der sie sich befinden? Also quasi schon das finale Ergebnis, was der Bot retourniert? (1234234)

    Was meinst du genau mit Sicherheiten?

    BTW: Ich würde mich freuen, wenn man zukünftig einen privater Pastebin mit Java-Highlighting benutzt

  8. #6
    Avatar von Mentos
    Registriert seit
    18.11.2011
    Beiträge
    451
    Thanked 498 Times in 240 Posts

    Standard AW: [Klasse] Wordmix

    Ja. Aber die Klasse ist auch noch nicht besonders gut. Ich arbeite gerade an einer neuen Struktur, die besser geht
    MfG
    „Es sind nicht unsere Fähigkeiten, die zeigen, wer wir wirklich sind, es sind unsere Entscheidungen.“
    - Albus Dumbledore, Harry Potter 2


    /guestchat registerGuest

  9. The Following User Says Thank You to Mentos For This Useful Post:

    AFU (23.11.2011)

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 02.12.2013, 23:41
  2. Frage Wordmix bot.
    Von x Like a Boss x3 im Forum Knuddels Bots
    Antworten: 1
    Letzter Beitrag: 20.07.2013, 15:22
  3. Release WordMix v0.5
    Von exception im Forum Showroom
    Antworten: 4
    Letzter Beitrag: 31.07.2012, 14:06
  4. Wordmix in .at
    Von x failstar im Forum Knuddels Chatspiele
    Antworten: 0
    Letzter Beitrag: 28.05.2012, 12:33
  5. Wordmix Bot
    Von godfather2012 im Forum Knuddels Bots
    Antworten: 1
    Letzter Beitrag: 03.01.2012, 04:57
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.