Ich brauche eine Gleichung, die alle Lösungen zu einer Ungleichung findet. Zum Beispiel: 5x+4y+3z+3a+3b>40
. Die 5 Unbekannten, x
, y
, z
, a
und b
müssen von 4.0
, 3.5
, 3.0
, 2.5
, 2.0
, 1.5
, 1.0
, 0.5
und 0.0
genommen werden. Zum Beispiel x=4
, y=4
, z=1
, a=1
, b=1
ist eine Wahrscheinlichkeit, aber es gibt viele mehr. Wie kann ich meinen Computer dazu bringen, alle zu finden?Wie mache ich meinen Computer diese Berechnung und welche Programmiersprache muss ich verwenden?
Antwort
Die Hauptsache ist herauszufinden, wie man alle Möglichkeiten durchläuft. In den meisten Sprachen werden Sie mit fünf For-Schleifen konfrontiert. Python können Sie itertools.product
verwenden, um dies zu erreichen:
#!/usr/local/bin/python3
from itertools import product
for g in product(range(9),repeat=5):
if 5*g[0]+4*g[1]+3*g[2]+3*g[3]+3*g[4] > 80:
print([x/2 for x in g])
Statt 0-4 von 0,5, ich alles eine ganze Zahl verdoppelt werden. Vielleicht möchten Sie die Dinge jedoch überdenken. ./gpa.py | wc
sagt mir, dass Sie über 20k mögliche Lösungen bekommen werden. (Und wenn Sie nur die Anzahl der Lösungen suchen und diese nicht auflisten müssen, kann dies Ihre Arbeit vereinfachen.)
Wenn ich dies zu Python schrieb [0, 1, 3, 4, 4] ist eine Lösung, aber wenn ich denke, wie y = 1 und z = 4 a = 4 b = 4 dann ist das Ergebnis falsch > 80 :( –
'[0,1,3,4,4]' mit einem Wert von '5 * 0 + 4 * 1 + 3 * 3 + 3 * 4 + 3 * 4 = 37 'ist keine Lösung (und "z = 3"). Und es würde "g = [0,2,6,8,8]" entsprechen. – Teepeemm
Wie bereits erwähnt, handelt es sich um ein ganzzahliges Programmierproblem (ein Spezialfall der linearen Programmierung). Eine Websuche sollte viele Treffer ergeben. Es ist im Allgemeinen ein sehr schwieriges Problem zu lösen; Mein Rat ist, ein Paket wie GLPK zu verwenden. Die Integer-Programmierung ist sehr nützlich. Selbst wenn dieses spezielle Problem begrenzt ist, ist es sehr viel Zeit, herauszufinden, wie Sie es lösen können, so dass Sie ganzzahlige Programmierung auf andere Probleme anwenden können.
- 1. Muss ich auf allen meinen Seiten `[ValidateAntiForgeryToken] und @ Html.AntiForgeryToken()` verwenden?
- 2. welche Mathematik muss ich diese Zahl umwandeln
- 3. Welche Software muss ich in Client-Computer installieren
- 4. Muss ich Cast und Enum und wie mache ich das?
- 5. Welche Programmiersprache, welchen Algorithmus sollte ich für die Wörterbuchübersetzung verwenden?
- 6. Wie mache ich diese SQL-Abfrage
- 7. Ich mache meinen eigenen Schieberegler
- 8. Welche Bibliothek muss ich für HtmlWeb verwenden?
- 9. Welche funktionale Programmiersprache sollte ich als erste funktionale Programmiersprache wählen?
- 10. Wie mache ich diese SQL SELECT-Anweisung?
- 11. muss ich meinen Projektnamen ändern
- 12. Beste Programmiersprache für die Berechnung
- 13. Wie dekompiliere ich diese x87-Assembly-Berechnung?
- 14. Wie kann ich diese große Array-Berechnung vektorisieren und beschleunigen?
- 15. Ich fragte mich, welche Programmiersprache das ist?
- 16. Wie mache ich diese Berechnung ist jQuery und erhalten Sie die Antwort in HTML angezeigt?
- 17. Wie übertrage ich einen Git Repo auf meinen anderen Computer?
- 18. Wie mache ich diese MySQL-Abfrage?
- 19. Wie mache ich diese Substitution in Mathematica?
- 20. Muss ich diese Objekte freigeben?
- 21. Wie mache ich einen Bildkonverter?
- 22. Welche Muster soll ich für diese Situation verwenden?
- 23. Windows: Welche Programmiersprache?
- 24. Wie mache ich das div mit html und CSS? Diese
- 25. Wie mache ich diese Vorlagenklasse Kompilierung in VC6 und VC9
- 26. Wie mache ich mich über meinen Webservice lustig?
- 27. Wie mache ich meinen Appliance-Administrator in Android?
- 28. Wie kann ich meinen Android-Telefonbildschirm auf meinen Computermonitor projizieren?
- 29. Welche Mongo-Version muss ich für PHP Version 5.6.12 verwenden?
- 30. Wie mache ich diese Klasse wiederverwendbarer? (Spezifisches Beispiel innen)
Es klingt wie Sie versuchen, ein Programm zu schreiben, das Ihnen die geringste Menge an Arbeit, die Sie tun müssen, um eine Gesamt-GPA von> 40 zu bekommen. – Zymus
Sagen wir, ich möchte 2.00 gpa dann meine Noten werden xyzab und meine Credits sind jeweils 5,4,3,3,3 dann ist die Gleichung wie folgt (5x + 4y + 3z + 3a + 3b)/18)> 2,00 dann 5x + 4y + 3z + 3a + 3b> 36 Also wie kann Ich finde jede Möglichkeit für xyzab ????? :( –