[PHP] Aufgabe Gerüchteküche

Dieses Thema im Forum "Webentwicklung" wurde erstellt von HushiHush, 25. Januar 2011 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 25. Januar 2011
    Aufgabe Gerüchteküche

    Hallo an alle,

    da ich IT-Systemkaufmann lerne und leider auch mit PHP in Kontakt komme habe ich eine Aufgabe bekommen, zu der ich keinerlei Lösungsansätze finde.


    In der Aufgabe geht es sich um ein Dorf mit 70 Einwohnern, davon weiß einer ein Gerücht.

    Dieser erzählt das natürlich anderen, unwissenden Personen, welche dann auch zu Erzähler werden. Treffen jedoch zwei Erzähler aufeinander so werden beide zu Schweigern und erzählen keinem mehr was.


    Wie oft wird das Gerücht erzählt, bis es jeder weiß ?

    Ich denke es hängt mit der Wahrscheinlichkeitsrechnung zusammen, aber wie, wo und was keine Ahnung.


    Hat jemand einen Ansatz oder kennt gar diese Aufgabe ?

    Grüße
     
  2. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    dieser fall wird nicht auftreten, denn:

    wie oft das gerücht weiter erzählt wird, kannst du dir an 14 händen abzählen

    oder aber:

    klassischer aufgabenstellungsfail
     
  3. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Ich verstehe nicht, wieso sich zwei Personen nicht treffen sollten, obwohl die das Gerücht kennen ?

    Das ist wie ein Pool, einer weiß was und erzählt es einfach irgendeinem, es kann folglich also auch sein, dass sich zwei "Wissende" treffen und somit beide zu Schweigern werden.


    Grüße
     
  4. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    nein... das kann nach aufgabenstellung nicht passieren: ein wissender erzählt das gerücht nur unwissenden...
     
  5. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Entweder du hast uns die Aufgabe ein wenig blöd erklärt, oder sie ist einfach fail.

    Ich denke, dass immer zufällig zwei Personen aufeinander treffen (oder einer davon muss Erzähler sein). Dann wird dieser entweder ein Schweiger oder macht einen Ahnungslosen zum Erzähler. Theoretisch kann es passieren, dass der erste, der das Gerücht war eine Person zweimal direkt trifft, dann ist das Gerücht aus der Welt.

    Was passiert, wenn ein Schweiger auf einen Erzähler trifft? Nichts, oder wird der Schweiger auch zum Erzähler?

    greez
     
  6. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Die Aufgabe ist tatsächlich merkwürdig gestellt.

    Annahme: Jeder Erzähler findet immer einen Unwissenden sofern vorhanden. Sonst setzt dieser aus.

    Gesucht der günstigste Fall. (Geringste #Erzählungen)

    Wie oft wird das Gerücht erzählt, bis es jeder weiß?
    Naja, wenn man das ganze naiv macht und jeder einfach allen restlichen 69 das erzählt ist das ja klar. Ergebnis 69.

    Nimmt man an das die neuen Erzähler das alle gleichzeitig weitererzählen und man die Anzahl der gleichzeitigen Weitererzählungen meint. Kommt man auf das Ergebnis log(70) ~ 5. Da sich bei jeden Schritt die Anzahl der Erzähler verdoppelt.


    Edit: Da wir den günstigsten Fall betrachten müssen wir nicht beachten das zwei Erzähler miteinander reden.
     
  7. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Okay Okay ich versuche das nochmal zu Erklären, habe aber die Aufgabe zuhause liegen und bin gerade auf der Arbeit


    Folgendes gibt es:

    Erzähler (Diese Person kennt das Gerücht bereits)
    Unwissend ( Weiß nichts)
    Schweiger (resultiert aus 2 Personen die es bereits kennen, er erzählt nichts)


    Alle Konstellationen sind möglich, folgendes passiert:

    Erzähler trifft auf Unwissenden - Unwissender wird zum Erzähler
    Erzähler trifft auf Erzähler - Beide werden zu Schweigern
    Schweiger trifft Erzähler - Erzähler wird zum Schweiger
    Schweiger trifft auf Unwissenden - Nichts passiert
    Schweiger auf Schweiger - Nicht passiert


    Ich werde aber heute Abend noch einmal die Aufgabe genau zeigen.


    Der günstigste Fall wäre natürlich das der erste Erzähler einem Unwissendem das Erzählt und diesen danach direkt wieder trifft ^^

    Grüße
     
  8. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Hi,

    erstmal cooles Avatar, von nem Blitzerschuss? :lol:.
    Was hat die Aufgabe den mit PHP zu tun? .

    Ich würde wohl eher auf Aufgabenfail tippen.

    Du musst einen Allgemeinen Rahmen schaffen z.B Dass das Gerücht von 35 Leuten Weiterezählt wird oder.

    Woher sollst du denn wissen das ein Mitwisser auf einen Mitwisser trifft und nicht Mitwisser auf Unwissenden? Generell gibt es ja keine Anzahl an Begegnungen die auf diese fiktiven Personen festgesetzt sind.

    Wenn es unendliche Begegnungen sind stimmt die Antwort von Nosferatu den demnach würde die Anzahl der Mitwisser exponentiell steigen
     
  9. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Ja der Driss soll dann in PHP programmiert werden .... X(



    Ich werde heute Abend mal die Aufgabe einscannen, es kann auch sein das ich irgendwas vergessen habe und das deswegen so komisch rüberkommt ^^



    PS:
    Ja, das Foto stammt von mir. Habe ich per Post bekommen
     
  10. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Driss? Ein Rheinländer?
    Hab die Aufgabe grade mal meinem Onkel geschickt - der ist Personalchef und denkt sich ständig so Aufgaben aus womit er seine Bewerber abservieren kann, vielleicht kennt er des Rätsels Lösung, vorrausgesetzt du hast nichts vergessen...

    Ja das Avatar ist auf jeden fall tight .
     
  11. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Und was passiert in dem Fall:

    Person 1 ist Erzähler, die anderen wissen noch nichts. Er trifft jetzt zufällig auf eine zweite Person, die wird auch zum Erzähler und die beiden treffen im zweiten schritt wieder aufeinander, beide werden schweiger und es gibt keine erzähler mehr!
     
  12. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    ... das führt dazu, dass es durchaus nicht unwahrscheinlich ist, dass nicht alle der 70 personen vom gerücht erfahren.
     
  13. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Aber da die Aufgabenstellung Wie oft wird das Gerücht erzählt, bis es jeder weiß? lautet kann das ja auch nicht die Lösung sein.

    Hab grad ne E-Mail bekommen und mein Onkel sagt auch das dir entweder ein paar Daten fehlen oder die mathematische Lösung aufgtrund exponentieller Steigung = 5 ist.

    Mir ist aber absolut Schleierhaft wie man soetwas nur Ansatzweise in PHP verwirklichen soll ?(
     
  14. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    müsste man da nicht 70 objekte erzeugen,

    1. ist dann erzähler
    2. alle anderen als unwissende initialisiert
    3. Danach ne funktion die zufällig wert zwischen 2-70 ausspruckt (falls nun bewohner 5 aktueller erzähler ist --> dann machst du: ist zufallszahl = aktueller erzähler, dann erzähle 1)
    --> aktuelle erzählt der zufallszahl etwas --> dieser wird nun neuer erzähler (pointer setzen oder einfach ne variable oder funktion, wo aktueller erzähler gehalten wird.
    und je nachdem welchen status die einzelnen objekte tragen, passe diese an.


    Schweigen beide --> such dir den nächsten noch erzählenden... und mache so weiter.

    das wäre aber eine sinnfreie lösung, weil man schließt dann aus, dass einder jedem etwas erzählen kann, etc.

    aber warum mit php, weiß ich nu nicht.. würde sich sicher mit threads gut machen^^ und ner schönen graphischen ausgabe.

    da fehlen irgendwie ein paar angaben zur verteilung der bewohner...
    Redet immer nur einer?, oder kann parallel gesprochen werden?
     
  15. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Siehe mein Post.
    Da die Aufgabstellung so ist kann man den "Fall" ignorieren. Er ist jediglich für die Programmierung interessant.


    Zur Programmierung:
    Einfach ein Bool Array mit
    0 - kennt kein Gerücht
    1 - kennt Gerücht.
     
  16. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Ok Ok Ok,

    erstmal vielen vielen Dank für die Resonanz !!!!

    Ich werde heute Abend, leider erst ab 8 (20 Uhr), die Aufgabe Einscannen, es kann nämlich durchaus sein, dass ich etwas vergessen habe !


    @x69
    Jo komme aus NRW und wohne in der westlichsten Stadt Deutschlands ;D

    Und das Foto find ich auch ne coole Idee, bin nicht zu erkennen und trotzdem voll drauf ^^
     
  17. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    stimmt. es ist nicht DIE lösung, sondern keine... etwas anderes habe ich NIE behauptet
     
  18. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Es ist wahrscheinlicher, dass es irgendwann eine konstante Anzahl an Schweigern und Unwissenden gibt, wenn deine Bedingungen wie oben beschrieben gelten sollen und es zufällige Begegnungen gibt.

    Hab es ausprobiert und bereits nach 378 (durch den Zufall erstelltes Ergebnis) Begegnungen gibt es keine Erzähler mehr. Ist ja auch logisch, da die Anzahl der Schweiger ab einem bestimmten Punkt schneller wächst, als die Anzahl der Erzählenden. Damit ist die Wahrscheinlichkeit sehr gering, dass jeder das Gerücht erfährt.

    Code:
    Begegnung: 378
    Erzähler: 0
    Unwissende: 24
    Schweiger: 46
    greez

    edit: noch ein zufälliger Durchlauf:
    Code:
    Begegnung: 412
    Erzähler: 0
    Unwissende: 11
    Schweiger: 59
    Mein bestes Ergebnis waren 8 Unwissende und 62 Schweiger.

    edit: lol:
    Code:
    Begegnung: 113
    Erzähler: 0
    Unwissende: 68
    Schweiger: 2
     
  19. 25. Januar 2011
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    AW: Aufgabe Gerüchteküche

    Sodele,

    hier ist die Aufgabe:

    aufgabe001.jpg
    {img-src: //img834.imageshack.us/img834/6931/aufgabe001.jpg}


    Uploaded with ImageShack.us


    Ich hab die wirklich falsch rübergebracht, sorry dafür


    @cable
    Hast Du das etwa schon in PHP ?

    Grüße
     
  20. 25. Januar 2011
    AW: Aufgabe Gerüchteküche

    Dann stimmt meine Lösung. Habe es mit Python implementiert. Auf die Frage, ob es alle erfahren, kann man nicht genau antworten, bzw es ist möglich, aber sehr unwahrscheinlich.

    Hier mal mein Python Code:
    PHP:
    import random

    types 
    = ( 'unwissender' 'erzähler' 'schweiger' )

    class 
    Einwohner :

        
    def __init__ ( self ):
            
    self . __typ  types [ 0 ]

        
    def __getTyp ( self ):
            return 
    self . __typ

        def __setTyp
    ( self typ ):
            
    self . __typ  typ

        Typ 
    property ( __getTyp __setTyp )

        
    def meets ( self einwohner ):
            if 
    self . __typ  ==  types [ 1 ]:
                if 
    einwohner . Typ  ==  types [ 0 ]:
                    
    einwohner . Typ  types [ 1 ]
                
    elif einwohner . Typ  ==  types [ 1 ]:
                    
    self . __typ  types [ 2 ]
                    
    einwohner . Typ  types [ 2 ]
                
    elif einwohner . Typ  ==  types [ 2 ]:
                    
    self . __typ  types [ 2 ]
                    
            
    elif self . __typ  ==  types [ 0 ]:
                if 
    einwohner . Typ  ==  types [ 1 ]:
                    
    self . __typ  types [ 1 ]

            else:
                if 
    einwohner . Typ  ==  types [ 1 ]:
                    
    einwohner . Typ  types [ 2 ]
            
    class 
    Dorf (list):
        
    def __init__ ( self einwohnercount ):
            
    super (). __init__ ()
            for 
    i in range ( einwohnercount ):
                
    self . append ( Einwohner ())

        
    def getTypCount ( self typ ):
            
    count  0
            
    for  e in self :
                if 
    e . Typ  ==  typ :
                    
    count  +=  1

            
    return  count

        def insertGeruecht
    ( self ):
            
    self [ random . randint ( 0 self . Size  1 )]. Typ  types [ 1 ]

        
    def resetEinwohner ( self ):
            for 
    e in self :
                
    e . Typ  types [ 0 ]

        
    def __getSize ( self ):
            return 
    len ( self )

        
    Size  property ( __getSize )

    def main ():

        
    dorf  Dorf ( 70 )
        
    dorf . insertGeruecht ()
        
    begegnungen  0

        
    while  dorf . getTypCount ( types [ 1 ]) !=  or  dorf . getTypCount ( types [ 2 ]) ==  0 :
            
    a random . randint ( 0 dorf . Size  1 ),  random . randint ( 0 dorf . Size  1 )
            while 
    ==  b :
                
    a random . randint ( 0 dorf . Size  1 ),  random . randint ( 0 dorf . Size  1 )
            
    dorf [ a ]. meets ( dorf [ b ])
            
    begegnungen  +=  1

            
    print( 'Begegnung:' begegnungen )
            print(
    'Erzähler:' dorf . getTypCount ( types [ 1 ]))
            print(
    'Unwissende:' dorf . getTypCount ( types [ 0 ]))
            print(
    'Schweiger:' dorf . getTypCount ( types [ 2 ]))
            print(
    '' )
            

    if 
    __name__  ==  '__main__' :
        
    main ()
    Läuft unter Python 3.x

    greez

    //edit: Hab den Code angepasst, da es möglich war, dass ein Einwohner sich selbst trifft. Zudem hab ich es mehr an OOP angelehnt.
     
  21. 26. Januar 2011
    AW: Aufgabe Gerüchteküche

    Ach du und die Lösung wird warscheinlich sein das nicht alle das Gerücht wissen können :lol: was ein Anreiz um so eine *******ufgabe zu Lösen :lol:.

    Welche Stadt bezeichnest du denn als westlichste Stadt Deutschlands ? Wohne auch da, aber nur weil ich alles was westlich von MG liegt nur noch Dorfkacke oder Viersen ist was für mich aber das gleiche ist . Schreib mir mal ne PM damit das hier nicht in OT ausatet.

    Gruß und viel Glück für deine Aufgabe
     
  22. 28. Januar 2011
    AW: Aufgabe Gerüchteküche

    Hey vielen Dank erstmal !


    Aber bei dem Code von Murdoc kriege ich folgenden Fehler:

    Code:
    Notice: Undefined offset: 3 in C:\xampp\htdocs\index1.php on line 23
    
    Das wäre dann hier :


    Code:
    22: . 'erzähler ......: ' . ($values[T_ERZÄHLER] ?: 0) . "\n"
    Code:
    23: . 'schweiger .....: ' . ($values[T_SCHWEIGER] ?: 0) . "\n-----\n"

    Was läuft da falsch ?

    Grüße
     
  23. 28. Januar 2011
    AW: Aufgabe Gerüchteküche

    ich würde dir raten das script selber zu schreiben und nicht meinen code für deine aufgabe zu verwenden.

    1. glaubt dir niemand der ahnung hat, dass du als totaler php-anfänger solche scripte schreibst
    2. lernst du 0 dabei

    daher hab ich mein script wieder entfernt.

    ~ closed
     
  24. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.