drei beliebige Zahlen doppelt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Florian Jochum
User
Beiträge: 8
Registriert: Montag 15. Januar 2018, 16:28

drei beliebige Zahlen doppelt

Beitragvon Florian Jochum » Montag 15. Januar 2018, 16:45

Hey Leute nachdem ich mich im Forum angemeldet habe, habe ich nun auch direkt meine erste Frage:
Ich programmiere grade ein Wüefelspiel, und möchte dort überprüfen, ob 3 beliebige Zahlen zwischen 1 und 6 doppelt vorkommen. Als Variablen habe ich die Buchstaben c, d, e, f, g, und h vorgesehen. Als möglichkeiten habe ich if und while zur verfügung. Über eine Rückmeldung eurerseits würde ich mich freuen.

P.S.: Falls das Thema im falschen Bereich ist, bitte ich um Verzeihung, und es möge dann doch verschoben werden
Benutzeravatar
__deets__
User
Beiträge: 2141
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: drei beliebige Zahlen doppelt

Beitragvon __deets__ » Montag 15. Januar 2018, 17:12

Na dann zeig doch mal was du hast. Hausaufgabenhilfe geben wir, fertige Loesungen werden hier eher ungerne verteilt.
narpfel
User
Beiträge: 141
Registriert: Freitag 20. Oktober 2017, 16:10

Re: drei beliebige Zahlen doppelt

Beitragvon narpfel » Montag 15. Januar 2018, 17:56

Moin,

eine Möglichkeit, wie man das Problem einfach lösen könnte, wäre, die richtige Datenstruktur für das Problem zu wählen. Sechs verschiedene Variablen sind im Gegensatz zu einer einzelnen, die alle sechs Werte umfasst und bestenfalls noch sinnvolle Operationen auf den Werten bereitstellt, doch schon recht unhandlich.
Florian Jochum
User
Beiträge: 8
Registriert: Montag 15. Januar 2018, 16:28

Re: drei beliebige Zahlen doppelt

Beitragvon Florian Jochum » Montag 15. Januar 2018, 19:48

  1. c = 1
  2. d = 1
  3. e = 2
  4. f = 2
  5. g = 3
  6. h = 3
  7.  
  8. if c == d or c == e or c == f or c == g or c == h and d == e or d == f or d == g or d == h and e == f or e == g or e == h:
  9.     j = 1000
  10. else:
  11.     j = 0
  12.  
  13. print(j)


Das ist das was ich habe. Prinzipiell müste es funktionieren, ändere ich jedoch eine 3 in eine 2, so gibt er trotzdem die 1000 aus, und nicht die 0, welche ausgegeben werden sollen.
Es soll einfach nur überprüfen, ob 3 beliebige zahlen doppelt vorkommen. Mehr muss es nicht können.

P.S.: Ist nur der Auszug. Sonst wären es ca. 120 Zeilen Quellcode
Sirius3
User
Beiträge: 7043
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: drei beliebige Zahlen doppelt

Beitragvon Sirius3 » Montag 15. Januar 2018, 19:55

@Florian Jochum: ok, so langsam verstehe ich die Frage. Du hast also nicht drei beliebige Zahlen, sondern sechs und es sollen 3 Paare darin vorkommen. Auch wenn die Bedingung nicht stimmt, merkst Du bestimmt schon selbst, dass das mit sechs Variablen und alles in einer Zeile ziemlich lang wird. Einfacher wird es, wenn Du das Problem in einfache Teilproblem aufteilst, z.B. in einer Liste mit sechs Zahlen jeweils die Häufigkeit jeder Ziffer zählen um dann zu prüfen, ob jede Ziffer genau 0 oder 2 mal vorkommt.
Florian Jochum
User
Beiträge: 8
Registriert: Montag 15. Januar 2018, 16:28

Re: drei beliebige Zahlen doppelt

Beitragvon Florian Jochum » Montag 15. Januar 2018, 19:57

narpfel hat geschrieben:Moin,

eine Möglichkeit, wie man das Problem einfach lösen könnte, wäre, die richtige Datenstruktur für das Problem zu wählen. Sechs verschiedene Variablen sind im Gegensatz zu einer einzelnen, die alle sechs Werte umfasst und bestenfalls noch sinnvolle Operationen auf den Werten bereitstellt, doch schon recht unhandlich.

Ist halt ein Würfelspiel mit 6 Würfeln
Florian Jochum
User
Beiträge: 8
Registriert: Montag 15. Januar 2018, 16:28

Re: drei beliebige Zahlen doppelt

Beitragvon Florian Jochum » Montag 15. Januar 2018, 19:59

Sirius3 hat geschrieben:@Florian Jochum: ok, so langsam verstehe ich die Frage. Du hast also nicht drei beliebige Zahlen, sondern sechs und es sollen 3 Paare darin vorkommen. Auch wenn die Bedingung nicht stimmt, merkst Du bestimmt schon selbst, dass das mit sechs Variablen und alles in einer Zeile ziemlich lang wird. Einfacher wird es, wenn Du das Problem in einfache Teilproblem aufteilst, z.B. in einer Liste mit sechs Zahlen jeweils die Häufigkeit jeder Ziffer zählen um dann zu prüfen, ob jede Ziffer genau 0 oder 2 mal vorkommt.

Problem ist, dass wir in der Schule bis jetzt nur if und while hatten. :cry:
Sirius3
User
Beiträge: 7043
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: drei beliebige Zahlen doppelt

Beitragvon Sirius3 » Montag 15. Januar 2018, 20:15

@Florian Jochum: ich wüßte nicht, wie man das nur mit `if` programmieren sollte. Das wären dann 120 if-Bedingungen, wenn ich mich nicht verrechnet habe.
Florian Jochum
User
Beiträge: 8
Registriert: Montag 15. Januar 2018, 16:28

Re: drei beliebige Zahlen doppelt

Beitragvon Florian Jochum » Montag 15. Januar 2018, 20:20

Sirius3 hat geschrieben:@Florian Jochum: ich wüßte nicht, wie man das nur mit `if` programmieren sollte. Das wären dann 120 if-Bedingungen, wenn ich mich nicht verrechnet habe.

Heilige Sch.... Wie würdest du es sonst machen? Vielleicht kannst du es mir erklären, oder ein Tut empfehlen, wo das gut erklärt wird, so das ich das dann für mein Spiel anwenden kann.
:K :K :K
Benutzeravatar
__deets__
User
Beiträge: 2141
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: drei beliebige Zahlen doppelt

Beitragvon __deets__ » Montag 15. Januar 2018, 21:14

Das hier wäre eine geeignete Datenstruktur: https://docs.python.org/2/library/colle ... er-objects
DasIch
User
Beiträge: 2402
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Re: drei beliebige Zahlen doppelt

Beitragvon DasIch » Montag 15. Januar 2018, 22:00

Das es 120 if-Bedingungen sind spielt keine Rolle mehr wenn man einfach den Code generiert ;)
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Re: drei beliebige Zahlen doppelt

Beitragvon EyDu » Montag 15. Januar 2018, 22:04

Sirius3 hat geschrieben:@Florian Jochum: ich wüßte nicht, wie man das nur mit `if` programmieren sollte. Das wären dann 120 if-Bedingungen, wenn ich mich nicht verrechnet habe.

Geht deutlich kürzer. Zum Beispiel die Variablen vorher mit einem ausgerolltem Bubblesort sortieren. Dann lässt sich anschließend leicht auf Paare testen. Sind dann 15 Kleiner-Vergleiche zum Sortieren, drei Tests auf Gleichheit für Paare und drei Tests auf Ungleichheit, falls alle Paare unterschiedlich sein sollen. Also "überschaubare" 21 ifs.
Das Leben ist wie ein Tennisball.
Benutzeravatar
pillmuncher
User
Beiträge: 1087
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Re: drei beliebige Zahlen doppelt

Beitragvon pillmuncher » Dienstag 16. Januar 2018, 03:06

@Florian Jochum: hattet ihr schon Listen und Dictionaries/Wörterbücher?
In specifications, Murphy's Law supersedes Ohm's.
Florian Jochum
User
Beiträge: 8
Registriert: Montag 15. Januar 2018, 16:28

Re: drei beliebige Zahlen doppelt

Beitragvon Florian Jochum » Dienstag 16. Januar 2018, 14:44

pillmuncher hat geschrieben:@Florian Jochum: hattet ihr schon Listen und Dictionaries/Wörterbücher?

Nein, hatten wir noch nicht
Florian Jochum
User
Beiträge: 8
Registriert: Montag 15. Januar 2018, 16:28

Re: drei beliebige Zahlen doppelt

Beitragvon Florian Jochum » Dienstag 16. Januar 2018, 14:47

EyDu hat geschrieben:
Sirius3 hat geschrieben:@Florian Jochum: ich wüßte nicht, wie man das nur mit `if` programmieren sollte. Das wären dann 120 if-Bedingungen, wenn ich mich nicht verrechnet habe.

Geht deutlich kürzer. Zum Beispiel die Variablen vorher mit einem ausgerolltem Bubblesort sortieren. Dann lässt sich anschließend leicht auf Paare testen. Sind dann 15 Kleiner-Vergleiche zum Sortieren, drei Tests auf Gleichheit für Paare und drei Tests auf Ungleichheit, falls alle Paare unterschiedlich sein sollen. Also "überschaubare" 21 ifs.

Was sind diese ausgerollten Bubblesorts?
Und wie funktioieren die?

Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot]