« Sharepoint - FBA | Main| Sharepoint 2010 as a Development Platform »

Dart und Informatik und Mathematik

10
Kategorie    
Also Dart ist ja so ein einfaches Spiel, wenn ich mich Recht erinnere, hat man 3 Pfeile die wirft man und man muß mit einem Double oder Bull beenden.

Genauer kann man es logischerweise auf WIKIPEDIA nachlesen.

Theoretisch kann man die Frage auch so stellen, finde eine Summenzerlegung für eine Zahl, welche die kleinste Anzahl von Summanden hat und mindestens eine gerade Zahl zwischen 2 und 40 oder die 50 enthalten ist.
Hierfür kann man das allgemeine Problem lösen, finde zu einer Zahl für eine definierte Menge von Summanden die mit der geringsten Anzahl Summanden. Eine Lösung in C# kann dann wie folgt aussehen ->
     static List SummandDecomposition(int n, List xValidSummands) {
        List result = new List();
        // Clean up the Summands -> sicher ist sicher
        xValidSummands.RemoveAll(item => item > n);  
        // No elements -> Nothing todo      
        if (xValidSummands.Count == 0) return null;
        // Find a solution
        result.Add(xValidSummands[xValidSummands.Count - 1]);        
        if (n != xValidSummands[xValidSummands.Count - 1]) {                                
           result.AddRange(SummandDecomposition(
                                n - xValidSummands[xValidSummands.Count - 1],
                                new List(xValidSummands)                                
                                ));
        }
        // is the length of the solution the theoretical minimum -> finished
        if (result.Count == calculateMinimumLengthInTheory(n,xValidSummands[xValidSummands.Count-1])) {
           return result;
        }
        // there is another possibility with a theoretical shorter length?
        if (xValidSummands.Count >= 2 && result.Count > calculateMinimumLengthInTheory(n,xValidSummands[xValidSummands.Count-2])) {
           // remove the greatest summand, make a decomposition and check            
           xValidSummands.RemoveAt(xValidSummands.Count-1);          
           List result2 = SummandDecomposition(n,xValidSummands);
           if (result2.Count < result.Count) {
              return result2;
           }
        }
        return result;
     }

     static int calculateMinimumLengthInTheory(int n, int l) {
        return n / l + ((n % l) == 0 ? 0 : 1);
     }

 
Wenn man dann noch die Sache mit dem Double-Out or Bull in Betracht zieht kommt man in etwa auf die Lösung in dem angehängten C#-File.

Gefallen ... mir nicht richtig

Wenn man es aber mal rein mathematischen betrachtet hat man ja ein kleine LOP = Lineares Optimierungs Problem
Welches man in OML -> die Sprache der Microsoft Solver Foundation wie folgt definieren kann ->

Model|
 Parameters|
   Sets|Integers|0, Infinity||,
   Throws,
   Outs
 |,
 Parameters|
   Integers|0, Infinity|,
   Annotation|ThrowValue|Throws|, "description", "Possible Throws"|,
   Annotation|ResultToThrow, "description", "This must be reached"|,
   Annotation|PossibleOuts|Outs|, "description", "Possible Outs"|
 |,
 Decisions|
   Integers|0, Infinity|,
   Decision1|Throws|
 |,
 Constraints|
   Constraint1 -> Sum|{i,Throws},Decision1|i|*ThrowValue|i|| == ResultToThrow,
   Constraint2 -> Sum|{i,Outs},Decision1|i||>=1
 |,
 Goals|
   Minimize|
     Goal1 -> Annotation|Sum|{i,Throws},Decision1|i||, "order", 0|
   |
 |
|


Dass gefällt mir richtig gut

Gruß JJR
P.S.: Dass Excel habe ich auch angehängt!

Mach einen Kommentar

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2