0 Daumen
632 Aufrufe

Aufgabe Programmiersprache R:

Die Spielregeln für das Brettspiel Obstgarten von HABA für Kinder von 3-6 Jahren lauten folgendermaßen:

Es gibt vier verschiedene Obstbäume, an denen jeweils 10 Früchte der jeweiligen Sorte hängen (Apfel (grün), Birne (gelb), Kirsche (rot), Pflaume (blau)). Der zugehörige Spielwürfel enthält die vier Farben, auf einer Seite einen Raben und auf einer Seite einen Korb.

Wird eine der Farben gewürfelt, so kann eine entsprechende Frucht des jeweiligen Baumes ”ge- pflückt“ werden. Wird der Korb gewürfelt, darf der Spieler zwei beliebige Früchte ernten. Wird jedoch ein Rabe gewürfelt, so muss durch eines der 9 beiliegenden Puzzleteilen nach und nach der Rabe gepuzzelt werden.

Ziel des Spieles ist es nun das Obst zu ernten, bevor der Rabe komplett gepuzzelt ist, da ansonsten der Rabe das restliche Obst klaut und das Spiel gewinnt.

Schreiben Sie eine Funktion "sim.obstgarten", die den Spielverlauf unter den folgenden Spielstrategien bei Wurf eines Korbs simuliert:

a) Zufällige Wahl von zwei noch vorliegenden Früchten,

b) Wahl der Früchte, von denen noch am meisten an den Bäumen hängen,

c) Wahl der Früchte, von denen nur noch am wenigsten vorkommen.

Wie groß ist jeweils die Wahrscheinlichkeit, dass die Spieler das Spiel gegen den Raben gewinnen? Was fällt Ihnen bei den verschiedenen Strategien auf?

Versuchen Sie alle Spielstrategien durch eine gemeinsame Funktion abzudecken, indem Sie ein Argument "strategie" in Ihre Funktion einbauen.

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Simulation Obstgarten in R

Um die Simulation des Kinderspiels Obstgarten in R zu implementieren, müssen wir uns zunächst überlegen, wie wir die verschiedenen Rollen mit den entsprechenden Handlungen im Spiel modellieren können. Die drei genannten Strategien zur Ernte bei einem Korbwurf (zufällige Wahl, Wahl der meisten Früchte, und Wahl der wenigsten Früchte) müssen dabei berücksichtigt werden. Wir werden auch die Wahrscheinlichkeiten berechnen, mit denen die Spieler gegen den Raben gewinnen können, basierend auf den Ergebnissen aus mehreren simulierten Spielen.

Die Basis der Funktion sim.obstgarten beinhaltet:

1. Eine Schleife für die Spieldurchläufe.
2. Eine Auswahllogik basierend auf dem Ergebnis des Würfelwurfs.
3. Eine Strategieimplementierung für den Wurf eines Korbes.

Implementierung in R

R
sim.obstgarten <- function(n, strategie) {
  gewinne <- 0 # Anzahl der gewonnenen Spiele
  wuerfelOptionen <- c("gruen", "gelb", "rot", "blau", "korb", "rabe")
  
  for (spiel in 1:n) {
    obst <- c(gruen = 10, gelb = 10, rot = 10, blau = 10) # Initialer Zustand der Früchte
    rabe <- 0 # Fortschritt des Rabenpuzzles
    
    while(sum(obst) > 0 && rabe < 9) { # Solange noch Obst da ist und der Rabe nicht fertig gepuzzelt ist
      wurf <- sample(wuerfelOptionen, 1) # Würfeln
      
      if (wurf == "rabe") {
        rabe <- rabe + 1
      } else if (wurf == "korb") {
        # Strategieimplementierung
        if (strategie == "zufaellig") {
          obstNamen <- names(obst[obst > 0])
          auswahl <- sample(obstNamen, min(2, length(obstNamen)))
        } else if (strategie == "meisten") {
          auswahl <- names(obst[obst == max(obst)])
          auswahl <- head(auswahl, min(2, length(auswahl)))
        } else if (strategie == "wenigsten") {
          auswahl <- names(obst[obst == min(obst[obst > 0])])
          auswahl <- head(auswahl, min(2, length(auswahl)))
        }
        # Aktualisiere Obst
        for (frucht in auswahl) {
          obst[frucht] <- obst[frucht] - 1
        }
      } else {
        obst[wurf] <- max(0, obst[wurf] - 1)
      }
    }
    
    if (sum(obst) == 0) { # Gewonnen, wenn kein Obst mehr auf dem Spielbrett ist
      gewinne <- gewinne + 1
    }
  }
  
  return(list("Strategie" = strategie, "Gewinne" = gewinne, "Spiele" = n, "Gewinnwahrscheinlichkeit" = gewinne / n))
}

# Spiel Simulation mit unterschiedlichen Strategien
set.seed(42) # Für Reproduzierbarkeit
ergebnis_zufaellig <- sim.obstgarten(10000, "zufaellig")
ergebnis_meisten <- sim.obstgarten(10000, "meisten")
ergebnis_wenigsten <- sim.obstgarten(10000, "wenigsten")

# Ergebnisse ausgeben
print(ergebnis_zufaellig)
print(ergebnis_meisten)
print(ergebnis_wenigsten)


Mit dieser Funktion werden 10000 Spiele simuliert, um eine solide Datenbasis für die Auswertung der Gewinnwahrscheinlichkeiten zu haben. Durch die zufällige Auswahl des Würfelwurfs und die Implementierung der verschiedenen Erntestrategien beim Wurf eines Korbs, erhalten wir einen guten Eindruck davon, wie effektiv jede Strategie im Vergleich ist. Die Ausgabe am Ende gibt Auskunft über die Anzahl der Gewinne und die entsprechende Gewinnwahrscheinlichkeit für jede Strategie.
Avatar von 4,6 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community