Preisfrage: Wer erkennt ein Muster?



  • Da fehlt noch eine Klammer :

    // cout << (int) myRandom->NextDouble() * paramInt;
    cout << (int) (myRandom->NextDouble() * paramInt);
    

    Schließlich soll der Rückgabewert von "myRandom->NextDouble()" erst noch mit "paramInt" multipliziert werden bevor zu einem int (o.ä.) gecastet wird.



  • Danke, aber ich habe immer noch zwei Probleme:

    1. Es kommt zu einem Laufzeitfehler an markierter Stelle (Warum?)

    char *jdMethod_if(long paramLong, char *paramString)
    {
    	int i1 = strlen(paramString);
    	char *arrayOfChar = new char[strlen(paramString)];
    	int *arrayOfInt = a(paramLong, i1);
    
    	if(strlen(paramString) == 0)
    		return "";
    
    	arrayOfChar = paramString;
    	char c1 = arrayOfChar[arrayOfInt[0]];
    
    	for(int i3 = 0; i3 <= i1 - 2; ++i3)
    		arrayOfChar[arrayOfInt[i3]] = arrayOfChar[arrayOfInt[(i3 + 1)]]; // Hier
    
    	arrayOfChar[arrayOfInt[(i1 - 1)]] = c1;
    
    	return arrayOfChar;
    }
    

    2. Ich habe das mal mit NetBeans getestet (Java)

    package javaapplication1;
    
    import java.util.Random;
    
    public class Main
    {
      public static void main(String[] argv)
      {
        System.out.print(jdMethod_if(1147, "NOTICE AUTH :*** Looking up your hostname..."));
      }
    
      private static String jdMethod_if(long paramLong, String paramString)
      {
        int i1 = paramString.length();
        char[] arrayOfChar = new char[paramString.length()];
        int[] arrayOfInt = a(paramLong, i1);
        if (paramString.length() == 0)
          return "";
        paramString.getChars(0, paramString.length(), arrayOfChar, 0);
        int i2 = arrayOfChar[arrayOfInt[0]];
        for (int i3 = 0; i3 <= i1 - 2; ++i3)
          arrayOfChar[arrayOfInt[i3]] = arrayOfChar[arrayOfInt[(i3 + 1)]];
        arrayOfChar[arrayOfInt[(i1 - 1)]] = (char) i2;
        return new String(arrayOfChar);
      }
    
      private static int[] a(long paramLong, int paramInt)
      {
        int[] arrayOfInt = new int[paramInt];
        Random localRandom = new Random(paramLong);
        for (int i1 = 0; i1 < paramInt; ++i1)
          arrayOfInt[i1] = (int)(localRandom.nextDouble() * paramInt);
        return arrayOfInt;
      }
    }
    

    und da kommt irgendwie nicht " OLkCE .A r y:aIh* uo.T* *upiNomg oostnnHeUT." (wie es richti wäre) sondern ".OrICNoA.TULaTo*p o**knoE H ymue h stng :ui." raus. Olles Java 👎



  • Ergänzung zu Problem Nr. 2:
    Auch

    jdMethod_if(1147, "NOTICE AUTH :*** Looking up your hostname...");
    jdMethod_if(1147, "NOTICE AUTH :*** Looking up your hostname... ");
    jdMethod_if(1147, "NOTICE AUTH :*** Looking up your hostname...  ");
    jdMethod_if(1147, "NOTICE AUTH  :*** Looking up your hostname...");
    jdMethod_if(1147, "NOTICE AUTH  :*** Looking up your hostname... ");
    jdMethod_if(1147, "NOTICE AUTH  :*** Looking up your hostname...  ");
    

    und diverse andere Variationen führen nicht zu

    OLkCE .A r y:aIh* uo.T* *upiNomg oostnnHeUT.
    

    mit der Funktion aus dem Beitrag vor diesem hier. Habe ich etwas falsch gemacht? Ich habe es, wie geschrieben, einfach mit NetBeans ausgetestet (habe also nicht meine Übersetzung oder deine Portierung benutzt)... deswegen ist mir das Problem so unerklärlich 😕



  • Harley D. Fan schrieb:

    Habe ich etwas falsch gemacht?

    Diese Funktion aus der "a.class" entschlüsselt den String:

    private String jdMethod_if(long paramLong, String paramString)
    

    Und die folgende verschlüsselt ihn (auch in der "a.class"):

    private String a(long paramLong, String paramString)
    

    😋



  • Ihr scheint ja hier nichts anderes zu tun, als eure Lebenszeit zu verschwenden. Entschuldigt meine Ausdrucksweise, aber das ist doch alles für den Katz... 👎



  • x schrieb:

    Ihr scheint ja hier nichts anderes zu tun, als eure Lebenszeit zu verschwenden. Entschuldigt meine Ausdrucksweise, aber das ist doch alles für den Katz...

    Inwiefern jetzt, wenn ich mal fragen darf?



  • Noch einmal Danke, aber... (Java)

    package javaapplication1;
    
    import java.util.Random;
    
    public class Main
    {
      public static void main(String[] argv)
      {
        System.out.print(jdMethod_if(1147, " OLkCE .A r y:aIh* uo.T* *upiNomg oostnnHeUT."));
        //System.out.print();
      }
    
      private static String jdMethod_if(long paramLong, String paramString)
      {
        int i1 = paramString.length();
        char[] arrayOfChar = new char[paramString.length()];
        int[] arrayOfInt = a(paramLong, i1);
        if (paramString.length() == 0)
          return "";
        paramString.getChars(0, paramString.length(), arrayOfChar, 0);
        int i2 = arrayOfChar[arrayOfInt[0]];
        for (int i3 = 0; i3 <= i1 - 2; ++i3)
          arrayOfChar[arrayOfInt[i3]] = arrayOfChar[arrayOfInt[(i3 + 1)]];
        arrayOfChar[arrayOfInt[(i1 - 1)]] = (char) i2;
        return new String(arrayOfChar);
      }
    
      private static int[] a(long paramLong, int paramInt)
      {
        int[] arrayOfInt = new int[paramInt];
        Random localRandom = new Random(paramLong);
        for (int i1 = 0; i1 < paramInt; ++i1)
          arrayOfInt[i1] = (int)(localRandom.nextDouble() * paramInt);
        return arrayOfInt;
      }
    }
    

    ergibt

    init:
    deps-jar:
    Compiling 1 source file to D:\NetBeansProjects\JavaApplication1\build\classes
    compile:
    run:
    TOgkC  NU A n:Lor* aIoT*uEu*iHome.o stn pyh..
    BUILD SUCCESSFUL (total time: 0 seconds)
    

    und...

    jdMethod_if(1147, " OLkCE .A r y:aIh* uo.T* *upiNomg oostnnHeUT. "); -> .O.kC  oTu  H:Lhio*NaI.*o ErupemgUo stnn *yAT 
    jdMethod_if(1147, "OLkCE .A r y:aIh* uo.T* *upiNomg oostnnHeUT. "); -> .L CEO.oTr uHaks uoIh.* o p NemgUAoytnn*i:*T 
    jdMethod_if(1147, "OLkCE .A r y:aIh* uo.T* *upiNomg oostnnHeUT."); -> TLgCEOoAUr  nkohp uaI.*o * *NHme.oystn i:uT.
    

    Weder entschlüsseln noch verschlüsseln klappt mit dieser Funktion korrekt 😕



  • Ganz nebenbei sollte es doch jedem selbst überlassen sein, womit man denn seine Lebenszeit verschwendet.
    Ich für meinen Teil freue mich sehr! über Antworten auf meine Fragen und Hilfestellungen!



  • Du hast in der "private int[] a(long paramLong, int paramInt)" eine elementar wichtige Sache übersehen:

    private int[] a(long paramLong, int paramInt)
    {
    (...)
     for (int i1 = 0; i1 < paramInt; ++i1)
     {                          // <- Klammer beachten!
      arrayOfInt[i1] = (int)(localRandom.nextDouble() * paramInt);
      localRandom.nextDouble(); // <- der wird !zweimal! pro Durchgang aufgerufen!
     }                          // <- Klammer beachten!
    (...)
    }
    

    So. Jetzt verschwende ich erstmal meine Lebenszeit wieder mit der Suche nach wirklich großen Primzahlen (und danach mit schlafen). 👍



  • Man, du bist eine Art Engel! Das funktioniert wunderbar!!!

    (Der Decompiler wars :p)


Anmelden zum Antworten