Seite 9 von 25 ErsteErste ... 567891011121319 ... LetzteLetzte
Ergebnis 121 bis 135 von 369

Thema: Ein Narr lernt Java

  1. #121
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    reicht aber auch noch nicht. da passiert immer noch Blödsinn
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  2. #122
    Minion Avatar von Tzu Iop
    Registriert seit
    28.10.05
    Ort
    Im EG ohne Aufzug *schulterzuck*
    Beiträge
    6.377
    Post mal deinen aktuellen Code und die Fehlermeldung, dann ist es einfacher zu helfen. Sonst kann ich jetzt nur wild rum raten.
    Papoy!

  3. #123
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Das werd ich nachher mal machen, vorher muss der aber noch ein bisschen verschönert und kommentiert werden...
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  4. #124
    Minion Avatar von Tzu Iop
    Registriert seit
    28.10.05
    Ort
    Im EG ohne Aufzug *schulterzuck*
    Beiträge
    6.377
    Um schon mal eine Vermutung zu äußern:

    PHP-Code:
    A a1 = new A(1,2);
    A a2 = new A(1,2);
    HashMap<AInteger= new HashMap<AInteger>();
    m.put(a11);
    System.out.println(m.get(a2)); 
    Die Rückgabe ist null. Was du vermutlich willst, ist eine TreeMap.
    Papoy!

  5. #125
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Code:
    PHP-Code:
    public static BigInteger possibleCombinations(BigInteger amountVector<BigIntegercoinsHashMap<Vector<Object>, BigIntegercache){
            
    System.out.println("remaining coins: "+coins+", amount: "+amount+" Cache: "+cache); //for debugging only
            
    int l coins.size(); 
            
    //what is the sum of the remaining coins?
            
    BigInteger sumOfCoins BigInteger.ZERO;
            for(
    BigInteger coin coins){
                
    sumOfCoins sumOfCoins.add(coin);
            }
            
    // if the sum of coins is smaller than the amount of money to be given out, there is no way of doing this
            
    if(amount.compareTo(sumOfCoins)>0){
                return 
    BigInteger.ZERO;
            }
            
    // if the sum of coins equals the amount of money to be given out, there is exactly one way of doing this
            
    if(amount.equals(sumOfCoins)){
                return 
    BigInteger.ONE;
            }
            
    // if there is no money to be given out, there is no way of doing this, this includes negative amounts
            
    if(amount.compareTo(BigInteger.ZERO)<=0){
                return 
    BigInteger.ZERO;
            }
            
    //if there are no more coins, we can't give out any money!
            
    if(coins.size()==0){
                return 
    BigInteger.ZERO;
            }
            
    //now we check if the number of combinations have already been calculated for the parameters in question 
            
    Vector<Objectkey1 = new Vector<Object>(Arrays.asList(new Object[]{amountcoins}));
            
    BigInteger solution cache.get(key1); 
            if(
    solution != null){
                return 
    solution;
            }
            
    //if the number of combinations for amount n and the coins {a_1,...,a_m} has not been calculated yet, we note this number f(n,{a_1,...,a_m}), we can calculate it as f(n,{a_1,...,a_(m-1)})+f(n-a_m,{a_1,...,a_(m-1)}) 
            
    BigInteger reducedAmount amount.subtract(coins.get(l-1)); 
            
    Vector<BigIntegerreducedCoins1 = (Vector<BigInteger>) coins.clone();
            
    reducedCoins1.remove(l-1);
            
    Vector<BigIntegerreducedCoins2 = (Vector<BigInteger>) coins.clone();
            
    reducedCoins2.remove(l-1);
            
    Vector<Objectkey2 = new Vector<Object>(Arrays.asList(new Object[]{amountreducedCoins1})); 
            
    Vector<Objectkey3 = new Vector<Object>(Arrays.asList(new Object[]{reducedAmountreducedCoins2})); 
            
    BigInteger possibilites2 possibleCombinations(amountreducedCoins1cache); //calculate f(n,{a_1,...,a_(m-1)})
            
    BigInteger possibilites3 possibleCombinations(reducedAmountreducedCoins2cache); //calculate f(n-a_m,{a_1,...,a_(m-1)})
            //we put both summands in the cache
            
    cache.put(key2,possibilites2);
            
    cache.put(key3possibilites3);
            
    //f(n,{a_1,...,a_(m-1)})+f(n-a_m,{a_1,...,a_(m-1)}) 
            
    BigInteger possibilities possibilites2.add(possibilites3);
            return 
    possibilities;
        } 
    Ausgabe mit Parametern amount = 10, coins ={1,1,2,2,4,4,8,8}:
    PHP-Code:
    remaining coins: [11224488], amount10 Cache: {}
    remaining coins: [1122448], amount10 Cache: {}
    remaining coins: [112244], amount10 Cache: {}
    remaining coins: [11224], amount10 Cache: {}
    remaining coins: [11224], amount6 Cache: {}
    remaining coins: [1122], amount6 Cache: {}
    remaining coins: [1122], amount2 Cache: {}
    remaining coins: [112], amount2 Cache: {}
    remaining coins: [11], amount2 Cache: {}
    remaining coins: [11], amount0 Cache: {}
    remaining coins: [112], amount0 Cache: {[2, [11]]=1, [0, [11]]=0}
    remaining coins: [112244], amount2 Cache: {[2, [11]]=1, [6, [11224]]=2, [6, [1122]]=1, [0, [11]]=0, [10, [11224]]=1, [2, [112]]=1, [0, [112]]=0, [2, [1122]]=1}
    remaining coins: [11224], amount2 Cache: {[2, [11]]=1, [6, [11224]]=2, [6, [1122]]=1, [0, [11]]=0, [10, [11224]]=1, [2, [112]]=1, [0, [112]]=0, [2, [1122]]=1}
    remaining coins: [1122], amount2 Cache: {[2, [11]]=1, [6, [11224]]=2, [6, [1122]]=1, [0, [11]]=0, [10, [11224]]=1, [2, [112]]=1, [0, [112]]=0, [2, [1122]]=1}
    remaining coins: [1122], amount: -2 Cache: {[2, [11]]=1, [6, [11224]]=2, [6, [1122]]=1, [0, [11]]=0, [10, [11224]]=1, [2, [112]]=1, [0, [112]]=0, [2, [1122]]=1}
    remaining coins: [11224], amount: -2 Cache: {[2, [11]]=1, [-2, [1122]]=0, [6, [11224]]=2, [6, [1122]]=1, [0, [11]]=0, [10, [11224]]=1, [2, [112]]=1, [0, [112]]=0, [2, [1122]]=1}
    remaining coins: [1122448], amount2 Cache: {[6, [11224]]=2, [2, [112244]]=1, [10, [112244]]=3, [2, [11]]=1, [-2, [1122]]=0, [-2, [11224]]=0, [0, [11]]=0, [6, [1122]]=1, [2, [11224]]=1, [10, [11224]]=1, [2, [112]]=1, [0, [112]]=0, [2, [1122]]=1}
    remaining coins: [112244], amount2 Cache: {[6, [11224]]=2, [2, [112244]]=1, [10, [112244]]=3, [2, [11]]=1, [-2, [1122]]=0, [-2, [11224]]=0, [0, [11]]=0, [6, [1122]]=1, [2, [11224]]=1, [10, [11224]]=1, [2, [112]]=1, [0, [112]]=0, [2, [1122]]=1}
    remaining coins: [112244], amount: -6 Cache: {[6, [11224]]=2, [2, [112244]]=1, [10, [112244]]=3, [2, [11]]=1, [-2, [1122]]=0, [-2, [11224]]=0, [0, [11]]=0, [6, [1122]]=1, [2, [11224]]=1, [10, [11224]]=1, [2, [112]]=1, [0, [112]]=0, [2, [1122]]=1
    Edit:
    Zitat Zitat von Tzu Iop Beitrag anzeigen
    Um schon mal eine Vermutung zu äußern:

    PHP-Code:
    A a1 = new A(1,2);
    A a2 = new A(1,2);
    HashMap<AInteger= new HashMap<AInteger>();
    m.put(a11);
    System.out.println(m.get(a2)); 
    Die Rückgabe ist null. Was du vermutlich willst, ist eine TreeMap.
    Das könnte zwar sein, glaube ich aber nicht:

    PHP-Code:
    public static void main(String[] args) {
            
    HashMap<Vector<Long>,Longmap = new HashMap<Vector<Long>, Long>();
            
    Long[] arr1 = {1L,2L};
            
    Long[] arr2 = {1L,2L};
            
    Vector<Longvec1 = new Vector<Long>(Arrays.asList(arr1));
            
    Vector<Longvec2 = new Vector<Long>(Arrays.asList(arr2));
            
    map.put(vec11L);
            
    System.out.println(map.get(vec2));
        }


    Rückgabe ist 1.
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  6. #126
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Nachtrag:

    Die Cache-Werte sind halt schwachsinnig, das ist der Ärger. [6, [1, 1, 2, 2, 4]]=2 z.B. ist Blödsinn, f(2,{1,1,2,2,4})=3 (nämlich 6 = 4+2 = 4+1+1 = 2+2+1+1)
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  7. #127
    Minion Avatar von Tzu Iop
    Registriert seit
    28.10.05
    Ort
    Im EG ohne Aufzug *schulterzuck*
    Beiträge
    6.377
    Zitat Zitat von Peregrin_Tooc Beitrag anzeigen
    Nachtrag:

    Die Cache-Werte sind halt schwachsinnig, das ist der Ärger. [6, [1, 1, 2, 2, 4]]=2 z.B. ist Blödsinn, f(2,{1,1,2,2,4})=3 (nämlich 6 = 4+2 = 4+1+1 = 2+2+1+1)
    Er findet bei amount = 2 nur die Lösung 1+1, wenn ich das richtig sehe. Kann dir aber nicht sagen, woran das liegt.
    Papoy!

  8. #128
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Hmmm... spannend.

    Es ist irgendwo klar, woran das liegt. Man fängt mit 2 und (1,1,2) an. Da trifft keines der Abbruchkriterien zu. Also wird 2,(1,1) berechnet, das ist 1. Dann wird 0,(1,1) berechnet, was nach Abbruchkriterium 0 ist. Das ist aber nicht gut, weil da ja eine Möglichkeit weggenommen wird! Wenn man aber Grundsätzlich bei amount = 0 ein return 1 macht, dann passiert auch wieder Blödsinn, weil er ja mit dem reducedAmount auf jeden Fall noch weiter rechnet. Ich denke die Lösung ist, sofort nach der Reduzierung zu prüfen, ob es bei 0 landet und in dem Fall die Anzahl der Möglichkeiten zu erhöhen.
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  9. #129
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Schau dir mal den Fall an:

    PHP-Code:
            if(amount.compareTo(BigInteger.ZERO)<=0){
                return 
    BigInteger.ZERO
    Das "<=" ist falsch, es muss nur "<" sein. Ich habe es getestet (mit Python), und dann klappt es. Bei amount=2, coins={1,1,2} liefert er mir dann zwei Möglichkeiten.

    Edit: Zu langsam....

  10. #130
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Mach mal amount = 2, coins = 1,1,2,2... dann liefert er Dir bestimmt drei
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  11. #131
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Was ja auch logisch ist, da man zwei verschiedene 2-Münzen hat.
    Wenn man sowas nicht haben will, braucht man wahrscheinlich eine andere Datenstruktur für coins als eine Liste.

  12. #132
    Minion Avatar von Tzu Iop
    Registriert seit
    28.10.05
    Ort
    Im EG ohne Aufzug *schulterzuck*
    Beiträge
    6.377
    Die Aufgabe an sich ist ja schon durchaus schwierig. Wobei mich interessieren würde, ob vorgegeben ist, dass es von jeder Art nur genau zwei Münzen gibt. Ich hab es mal für den Fall, dass man von einer Art beliebig viele Münzen benutzen kann in Prolog geschrieben, da ist das um Welten einfacher.
    Papoy!

  13. #133
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    @alpha civ: Oh verdammt. Ja, das ist natürlich richtig Dann muss man wahrscheinlich nachhalten, wie oft man eine Münze verwendet und wenn sie ein drittes mal verwendet werden soll, muss 0 ausgegeben werden.

    @TzuIop: es ist vorgegeben, dass man jede Münze maximal zwei mal benutzen darf. Für den Fall, dass man jeden Münze so oft verwenden darf wie man will, ist es tatsächlich weitaus einfacher.
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  14. #134
    Sonnenkind Avatar von c4master
    Registriert seit
    15.08.02
    Ort
    Cosmo Canyon
    Beiträge
    7.657
    Oha, da musst du aber nochmal richtig Gehirnschmalz reinstecken. Das klingt nach einem relativ üblen Problem...

    edit: Gibt es "Multimengen" in Java? Das wäre vielleicht die Lösung.
    Alles trägt der Wind davon - Blätter, Ziegel und die Last der Gedanken.
    (Sprichwort in Nehrasaxar)
    aus "Die Spur des Seketi" von Gesa Helm

    Einmal Fantasy-Geschnetzeltes mit geröstetem Ork an allem! (Dark Messiah Story - pausiert)

  15. #135
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Klar gibt es Multimengen, eine Menge von Mengen halt

    Ich bin gerade dran, ohne Multimengen, mal schauen, ob ich das jetzt hinbekomme
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

Seite 9 von 25 ErsteErste ... 567891011121319 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •