Best Practice Hilfe bei Algorithmus gesucht

Otz

Bekanntes Mitglied
Hallo zusammen,

ich programmiere gerade in meiner Freizeit ein kleines Spiel bei dem ich am Ende die Punkte bzw. wieviel welcher Spieler an welchen anderen bezahlen muss, zusammen rechnen möchte.

Wir stellen uns vor, dass wir am Ende des Spieles folgende Beträge haben, welche die jeweilgen Spieler an andere Spieler bezahlen müssen:
spieler1 an spieler2 = 0.90
spieler1 an spieler3 = 2.00
spieler3 an spieler2 = 3.00
spieler3 an spieler4 = 0.60
spieler4 an spieler1 = 5.20
spieler4 an spieler2 = 1.10

Nun möchte ich diese Werte noch etwas vereinfachen und zusammenfassen:
spieler1 an spieler3 2.00
spieler3 an spieler4 0.60
könnte man zusammenfassen zu:
spieler1 an spieler3 1.40
spieler1 an spieler4 0.60


ich komme aber hier irgendwie nicht wirklich auf einen algorithmus mit dem ich das abbilden kann.

hat jemand bischen hilfestellung für mich?
 

Flown

Administrator
Mitarbeiter
Warum solche Sachen zusammenfassen? Warum arbeitet man das nicht sequentiell ab? Das ist wahrscheinlich sogar schneller als transitive Beziehungen zu berechnen.
 

Meniskusschaden

Top Contributor
Muss das denn wirklich direkt zugeordnet werden? Ich würde einfach eine Bank einführen und alle Spieler mit negativem Saldo an die Bank zahlen lassen und die mit positivem Saldo von der Bank auszahlen lassen.
 

Otz

Bekanntes Mitglied
Weil die zusammengefassten Werte die spätere Ausgabe für den Anwender sein werden.

Und ich würde das wirklich gerne so weit wie möglich kürzen
 

JStein52

Top Contributor
Ich würde einfach eine Bank einführen und alle Spieler mit negativem Saldo an die Bank zahlen lassen und die mit positivem Saldo von der Bank auszahlen lassen
Ist zwar jetzt noch nicht ausgereift, aber vielleicht könnte das der Algorithmus werden: du führst erst mal diese virtuelle Bank ein und wenn du dann alle Salden berechnet hast teilst du einfach alles neu auf indem alle mit negativem Saldo der reihe nach mit den entsprechenden Beträgen an die mit positivem Saldo zahlen lässt. Muss jetzt nur noch ein bisschen durchdacht werden.
 

Otz

Bekanntes Mitglied
ok, hab das mal durchgespielt mit der bank. ist schonmal ein guter ansatz und falls ich das auflösen der trasitiven abhängigkeiten nicht hinbekomme, wird das wohl meine lösung.

jedoch probier ich erst nochmal die andere Herangehensweise aus
 

Sugan

Mitglied
Hallo Otz,

ich hab das so ähnlich gedacht, wie mit der Bank, also zuerst das absolute Guthaben der Spieler ausrechnen lassen und danach aber dann die von dir gewünschte Ausgabe daraus berechnen lassen.

hier einfach mal mein Code dazu ( Das Programm läuft über die Konsole):
Java:
import java.util.Scanner;

public class Rechner {
   
    int spieleranzahl =4 ;
    double[] spieler;
    int schuldner, glaeubiger;
    double schulden;
    boolean fertig=false;
   
    public static void main(String[] args) {
        Rechner rechner = new Rechner();
    }
   
    public Rechner(){
        spieler = new double[spieleranzahl];
        Scanner scanner = new Scanner(System.in);
        while(!fertig){
            System.out.println("\nWer schuldet wem was? (Form z.B.: 1 an 2 0,90)");
       
            schuldner = scanner.nextInt();
            String an = scanner.next();
            glaeubiger = scanner.nextInt();
            schulden = scanner.nextDouble();
       
            rechnen();
            System.out.println("\nWeitere Schulden? (ja oder nein)");
            if(scanner.next().equalsIgnoreCase("nein")){
                fertig = true;
            }
        }
        System.out.println("\n\nGuthaben gesamt:");
       
        for(int i=0; i<spieler.length; i++){
            spieler[i]=Math.round(100.0 * spieler[i]) / 100.0;
            System.out.println("Spieler"+ (i+1)+": "+ spieler[i]);
        }
        System.out.println("\n");
        for(int i=0; i<spieler.length; i++){   
            for(int i2=0; i2<spieler.length; i2++){
                if(spieler[i]<0 && spieler[i2]>0){
                    if(spieler[i]+spieler[i2]<=0){
                        System.out.println("Spieler"+ (i+1)+" muss "+ spieler[i2]+" an Spieler"+ (i2+1)+" bezahlen");
                        spieler[i]+=spieler[i2];
                        spieler[i2]=0;
                        spieler[i]=Math.round(100.0 * spieler[i]) / 100.0;
                    }
                    else{
                        System.out.println("Spieler"+ (i+1)+" muss "+ (-spieler[i])+" an Spieler"+ (i2+1)+" bezahlen");
                        spieler[i2]+=spieler[i];
                        spieler[i]=0;
                        spieler[i2]=Math.round(100.0 * spieler[i2]) / 100.0;
                    }       
                }   
            }   
        }
    }
    private void rechnen(){
        for(int i=0; i<spieler.length; i++){
            if(schuldner==i+1){
                spieler[i] -= schulden;
                System.out.print("Spieler"+ (i+1) +" schuldet ");
            }
        }
        for(int i=0; i<spieler.length; i++){
            if(glaeubiger==i+1){
                spieler[i] += schulden;
                System.out.print("Spieler"+ (i+1) +" noch "+ schulden);
            }
        }
    }
}

Das geht an einigen Stellen bestimmt noch schöner, ist nur ein Ansatz...

Ich hoffe der hilft ein wenig weiter und verdirbt dir trotzdem nicht den Spaß am selber grübeln und schreiben ;)

LG
Sugan
 

Viktim

Bekanntes Mitglied
Du kannst doch einfach jedem Spieler sagen, was er bekommt bzw. was er bezahlen muss, dann alles Geld in einen Pool schmeißen und von daraus an alle weiterverteilen ;)
EDIT: Ups zu langsam :D
 

JStein52

Top Contributor
War nicht bös gemeint. Ich hatte gelegentlich auch schon ein Fenster vom Vorabend geöffnet und habe dann auf diesen Stand geantwortet. ;););)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Algorithmus-Hilfe Allgemeine Java-Themen 20
T Hilfe bei einem Algorithmus Allgemeine Java-Themen 2
W Hilfe bei Methode Allgemeine Java-Themen 14
M Javascript Hilfe bei ToDoList? Allgemeine Java-Themen 1
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
T Hilfe bei negation von suchabfrage Allgemeine Java-Themen 2
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
V Hilfe mit Java Code Allgemeine Java-Themen 4
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
Aboya Kugel mit Hilfe von Dreiecken rekursiv zeichnen Allgemeine Java-Themen 2
K Anzeigemöglichkeit von Bildern in JavaFX mit Hilfe von MongoDB GridFS Allgemeine Java-Themen 0
A Preisberechnung, Hilfe Allgemeine Java-Themen 4
M Bräuchte Hilfe bei der Aufgabe Allgemeine Java-Themen 1
s_1895 Hilfe bei Java Tic Tac Toe Allgemeine Java-Themen 8
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
U Erste Schritte Hilfe bei simplem Glücsspiel in Java Allgemeine Java-Themen 4
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
K Objektorientierung, hilfe Allgemeine Java-Themen 9
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
D Hilfe bei Informatik Hausaufgaben Allgemeine Java-Themen 30
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
F NetBeans Hilfe!!! Allgemeine Java-Themen 23
H Schiffe versenken JButton Schiffe mit GUI verbinden Hilfe! Allgemeine Java-Themen 2
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
S GetMethode erstellen mit Hilfe von Parametern Allgemeine Java-Themen 9
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
B Hilfe bei Übungsblätter Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
C Hilfe Bei Vegas Slide Allgemeine Java-Themen 0
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
Ice4P4rty Hilfe Bei Promillerechner Allgemeine Java-Themen 9
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
G Hilfe bei Projektarbeit Allgemeine Java-Themen 5
GenerationLost Input/Output Custom Serialization - hilfe bei Realisierung Allgemeine Java-Themen 8
J Hilfe!!! Ausbildung Allgemeine Java-Themen 14
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
S Hilfe bei Gui Allgemeine Java-Themen 3
GRAZZ0R Hilfe zum Spiel Mensch ärger dich nicht Allgemeine Java-Themen 1
C Hilfe bei den Ausgaben Allgemeine Java-Themen 4
K Hilfe bei GUI für Pizza-Service Allgemeine Java-Themen 11
J Hilfe bei Datumsberechnung aus Textfeld Allgemeine Java-Themen 10
I Bitte Drngend hilfe Allgemeine Java-Themen 2
C Hilfe bei NoClassDefFoundError Allgemeine Java-Themen 14
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
I Methoden Schnelle Hilfe benötigt - Kleines Video/Slideshow aus mehreren Bildern erstellen Allgemeine Java-Themen 3
C Hilfe bei einer Point Ausgabe Allgemeine Java-Themen 7
S Probleme mit meinem MacBook Pro DRINGEND HILFE erbeten! Allgemeine Java-Themen 17
N Erste Schritte [HILFE] effizienter,leistungsfähigermbackground Pixelbot Allgemeine Java-Themen 5
A Hilfe gesucht Allgemeine Java-Themen 44
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
C Hilfe bei einer Fehlermeldung Allgemeine Java-Themen 5
C Hilfe bei MalformedURLException Allgemeine Java-Themen 7
D Baum zeichnen hilfe Allgemeine Java-Themen 4
M Hilfe bei parseInt Allgemeine Java-Themen 4
F Compiler-Fehler Hilfe bei Startup error Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
M Input/Output Java + OCR ? Erfahrungen und bitte um Hilfe Allgemeine Java-Themen 12
M Brauche Hilfe bei Quellcodeverständnis Allgemeine Java-Themen 4
B Zahlen ausgeben hilfe! Allgemeine Java-Themen 8
S Java USB dringend Hilfe! Allgemeine Java-Themen 6
X Hilfe bei Programm Allgemeine Java-Themen 5
zer0zer0 Best Practice apache common cli - optionen für hilfe ausblenden Allgemeine Java-Themen 5
F Bitte um Hilfe! Allgemeine Java-Themen 5
S Hilfe bei geeignetem Pattern (Decorierer) Allgemeine Java-Themen 2
D Brauche Hilfe bei Rechnung (Exponentiation) Allgemeine Java-Themen 12
F Brauche Hilfe bei Java Allgemeine Java-Themen 6
S Hilfe bei simplem Programm Allgemeine Java-Themen 3
J Ein blutiger Anfänger braucht Hilfe Allgemeine Java-Themen 7
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
B Dringend Hilfe gesucht für Struktogramm Allgemeine Java-Themen 11
C Brauche Hilfe mit Modulo Strategie Allgemeine Java-Themen 2
S Brauche Hilfe: Prüfungsaufgabe Java Allgemeine Java-Themen 8
J Probleme bei kompilieren ... Bitte um Hilfe Allgemeine Java-Themen 2
G java.exe in System 32. Hilfe!!! Allgemeine Java-Themen 8
M google plus java api - Anfänger sucht Hilfe Allgemeine Java-Themen 7
M Hilfe mit JOptionPane Allgemeine Java-Themen 2
I Hilfe: Klasse Vieleck Allgemeine Java-Themen 5
I javax.sound.sampled.* - Hilfe zu den Controls Allgemeine Java-Themen 8
C Hilfe bei Adressbuch-Programmierung, wie am Besten mit JList implementieren Allgemeine Java-Themen 2
S Hilfe bei der Cosinusapproximation Allgemeine Java-Themen 10
K Arraylist Hilfe Allgemeine Java-Themen 13
K Hilfe Felder Allgemeine Java-Themen 7
T Hilfe im Lizenz-Dschungel Allgemeine Java-Themen 11
S brauche Hilfe für ssh connection in java Allgemeine Java-Themen 6
W sql Query abspeichern selber variabele hilfe...? Allgemeine Java-Themen 16

Ähnliche Java Themen

Neue Themen


Oben