Nim-Spiel in PYTHON programmieren
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Du hast mein Posting wohl nicht wirklich verstanden ...basler20 hat geschrieben:Danke für deine Antwort
Ich bin's gerade am Programmieren, aber mit Java , man braucht nur eine Klasse und eine TestKlasse..., in Python weiss ich nicht....
@lunar: Ich hatte das auch schon entdeckt und im ubuntu-forum hier her verlinkt
Im Mikrokontroller-Forum hat er auch gefragt:
http://www.mikrocontroller.net/topic/133030
http://www.mikrocontroller.net/topic/29458#1207366
Und ich frage mich, ob er nun Leo oder Patrick heisst, wie seine Java-Lösung aussieht, und ob Fachhochschullehrer in der Schweiz nicht auch ab und zu bei Hausaufgaben mal eine Suchmaschine bemühen um Plagiate zu finden.
http://www.mikrocontroller.net/topic/133030
http://www.mikrocontroller.net/topic/29458#1207366
Und ich frage mich, ob er nun Leo oder Patrick heisst, wie seine Java-Lösung aussieht, und ob Fachhochschullehrer in der Schweiz nicht auch ab und zu bei Hausaufgaben mal eine Suchmaschine bemühen um Plagiate zu finden.
Vielen Danke für Ihre Antwort.
Es handelt sich nicht um "Plagiate", eher aber um Ideen-Sammeln, um das wissen zu vertiefen, vorallem wenn man das Spiel nicht kennt!!.
Plagiate für mich ist wenn ich etwas deklariere, das jemand geschrieben habt, als meine!!
viele Grüsse
Es handelt sich nicht um "Plagiate", eher aber um Ideen-Sammeln, um das wissen zu vertiefen, vorallem wenn man das Spiel nicht kennt!!.
Plagiate für mich ist wenn ich etwas deklariere, das jemand geschrieben habt, als meine!!
viele Grüsse
Oha, das müsste man mal an der Uni ausprobieren: "Nein, Herr Professor, ich habe nicht abgeschrieben, nein, vielmehr habe ich Ideen gesammelt" ...
Wie dem auch sei: Angesichts deines Postens quer durch verschiedene Foren scheint die Not ja groß zu sein.basler20 hat geschrieben:Plagiate für mich ist wenn ich etwas deklariere, das jemand geschrieben habt, als meine!!
Ein Weg, der dir hier sicher Hilfe bescheren würde, wäre:
Poste das, was du hast und erläutere, an welcher Stelle du aus welchem Grund nicht weiter kommst.
Wenn ich deine Postings richtig verstehe, ist die Java-Lösung, von der du sprichst, ja nicht deine, sondern Teil deiner "Ideensammlung". Und was die "nur zwei Klassen" der Java-Lösung angeht: In Python schaffst du es sogar mit Null Klassen!
Und dein Hinweis aus dem (vor)letzten Posting, dass du das Spiel nicht kennst, gibt mir Rätsel auf. Wenn es meine Hausaufgabe wäre, würde ich doch damit anfangen, das Spiel zunächst zu verstehen. Wikipedia ist da sehr hilfreich und beschreibt ganz ausführlich die Gewinnstrategien.
Und danach Programmieren ...
Ich hab's eben programmiert. Ist 22 Zeilen lang.
Hier ein kurzer Ausschnitt als Demo:
Der englische Wikipediaartikel ist übrigens weitaus besser.
Hier ein kurzer Ausschnitt als Demo:
Code: Alles auswählen
else:
exec(heap + "-=" + str(number))
if player:
player = 0
else:
player = 1
Code: Alles auswählen
player = not player
Dann hast du aber Java falsch verstanden. In Java geht es doch darum, alles mit der größtmöglichen Anzahl an Klassen zu realisieren.basler20 hat geschrieben:Ich bin's gerade am Programmieren, aber mit Java , man braucht nur eine Klasse und eine TestKlasse...,
Ich könnte noch eine Turbo-C-Variante mit grafischer Oberfläche für den Atari-ST von 1991 anbieten.
Ach, ich sehe gerade: 1996 habe ich es auch für den PC mit Visual-C umgesetzt. Aber, ob 18 KB Source-Code erwünscht sind?
MfG
HWK
Ach, ich sehe gerade: 1996 habe ich es auch für den PC mit Visual-C umgesetzt. Aber, ob 18 KB Source-Code erwünscht sind?
MfG
HWK
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Logisch (schließlich will der OP ja möglichst viele Lösungen zusammenkopie... ahem... inspirieren), ich biete eine nicht sonderlich elegante Scheme-Lösung (mit null Klassen). Funktioniert immerhin ausreichend gut, als das ich im Spiel gegen meine Schwester verliere.HWK hat geschrieben:Ich könnte noch eine Turbo-C-Variante mit grafischer Oberfläche für den Atari-ST von 1991 anbieten.
Ach, ich sehe gerade: 1996 habe ich es auch für den PC mit Visual-C umgesetzt. Aber, ob 18 KB Source-Code erwünscht sind?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Jetzt kann ich auch mal den Code posten.
Code: Alles auswählen
a, b, c, = 3, 4, 5
switch = True
players = {True: "1", False: "2"}
print("""Sizes of heaps:
A B C""")
while any((a, b, c)):
print(a, b, c)
print()
print("Turn of player", players[switch] + ".")
try:
number = int(input("How many? "))
heap = (input("Heap a, b or c? ")).lower()
if not (0 < number <= eval(heap)) or (heap != "a" and heap != "b" and heap != "c"):
raise ValueError
else:
exec(heap + "-=" + str(number))
switch = not switch
except (SyntaxError, ValueError):
print("Not possible.")
switch = not switch
print("Player", players[switch], "is the winner.")
@bremer
Nutz doch bitte ein Wörterbuch ... exec und eval sind hier völlig überflüssig.
Nutz doch bitte ein Wörterbuch ... exec und eval sind hier völlig überflüssig.
Fixed.
Aber antwortet lieber mal auf mein Posting im PyQT-Forum.
Code: Alles auswählen
switch = True
players = {True: "1", False: "2"}
heaps = {"a": 3, "b": 4, "c": 5}
print("""Sizes of heaps:
A B C""")
while any((heaps["a"], heaps["b"], heaps["c"])):
print(heaps["a"], heaps["b"], heaps["c"])
print()
print("Turn of player", players[switch] + ".")
try:
number = int(input("How many? "))
heap = (input("Heap a, b or c? ")).lower()
if not (0 < number <= heaps[heap]) or heap not in heaps:
raise ValueError
else:
heaps[heap] -= number
switch = not switch
except (KeyError, ValueError):
print("Not possible.")
switch = not switch
print("Player", players[switch], "is the winner.")
Aber antwortet lieber mal auf mein Posting im PyQT-Forum.
Zeile 13 sollte besser umgestellt werden:Und Zeile 6:Und wo bleibt die KI?
MfG
HWK
Code: Alles auswählen
if heap not in heaps or not (0 < number <= heaps[heap]):
Code: Alles auswählen
while any(heaps.itervalues()):
MfG
HWK
Es sollte wohl "raise ValueError()" heißen. Die ganze Ausnahmesache ist sowieso überkompliziert.
Anstelle die Bedingung umzustellen, kann man den zweiten Teil auch einfach weglassen, da der KeyError eh behandelt wird. Allerdings kann man auch einfach auf die Ausnahmebehandlung verzichten, wenn man die Bedingung intelligent stellt:
Das Fehlen "from __future__ import print_function" sowie die Verwendung von "input()" mit Typcast legt nahe, dass das 3k-Code ist, daher muss es "heaps.values()" heißen ...
Anstelle die Bedingung umzustellen, kann man den zweiten Teil auch einfach weglassen, da der KeyError eh behandelt wird. Allerdings kann man auch einfach auf die Ausnahmebehandlung verzichten, wenn man die Bedingung intelligent stellt:
Code: Alles auswählen
switch = True
players = {True: "1", False: "2"}
heaps = {"a": 3, "b": 4, "c": 5}
print("Sizes of heaps:", "A B C", sep="\n")
while any(heaps.values()):
print(*heaps.values())
print()
print("Turn of player", players[switch] + ".")
number = int(input("How many? "))
heap = input("Heap a, b or c? ").lower()
if heap in heaps and 0 < number <= heaps[heap]:
heaps[heap] -= number
switch = not switch
else:
print("Not possible.")
switch = not switch
print("Player", players[switch], "is the winner.")