BPS #10: Zufällige Anordnung - Auswertung
Übersicht

![]() |
XeresModeratorBetreff: BPS #10: Zufällige Anordnung - Auswertung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wer hat eine Lösung gefunden, wem ist eine gute Idee gekommen?
Das war die Aufgabe Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern. Diskussion Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen. Nächste Aufgabe In zwei Wochen, wird die Musterlösung nach editiert und die nächste Aufgabe eingestellt. Viel Spaß & viel Erfolg! Musterlösung: BlitzBasic: [AUSKLAPPEN] ;* Zufall ohne Doupletten |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am So, Aug 07, 2011 17:48, insgesamt einmal bearbeitet
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
das war ja diesmal eine ziemlich einfache Aufgabe. Meiner Meinung nach war etwas viel vorgegeben (wieso gerade ein 3x3 Feld?), aber falls man sowas in der Art mal braucht, kann mans sich wahrscheinlich von der Lösung ableiten. Nun denn: BlitzBasic: [AUSKLAPPEN] SeedRnd( MilliSecs() ) SeedRnd ![]() ![]() Die Doppelschleife x/y geht alle Felder durch, um sie mit Zahlen zu füllen. Weil man ja Goto ![]() ![]() ![]() Könnte man auch anders lösen, indem man zum Beispiel die Bedignung mit dem alreadySet direkt in den Schleifenkopf einfügt. Ich bevorzuge aber die Exit ![]() Die Ausgabe ist dann Formsache.. MfG, Darth |
||
Diese Signatur ist leer. |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meine Lösung ist etwas anders. Ich benutze ein eindimensionales Array. Da die Lösung aber eine zweidimensionale Abbildung erwartet (3x3 Feld), muss ich die eindimensionalen Koordinaten in zweidimensionale umwandeln. Dazu gibt es folgende Umrechungen
Eindimensionale Koordinaten auf zweidimensioale übertragen Code: [AUSKLAPPEN] ;i ist die eindimensionale Koordinate ;breite ist die Breite des Feldes - bei uns 3 x = i Mod breite y = i / breite Und zweidimensionale auf eindimensionale übertragen Code: [AUSKLAPPEN] i = x + y * breite Damit keine Zahlen doppelt vorkommen, verwende ich die "Misch-Methode". Zunächst werden die Zahlen von 1 bis 9 nacheinander in das Array geschrieben. Jede Zahl ist jetzt einmal enthalten. Im nächsten Schritt vertausche ich jeweils Felder, somit werden ihre Positionen vermischt, jedoch kommen nirgendwo Zahlen hinzu oder verschwinden -> Jede Zahl bleibt von Anfang an einmalig vertreten: BlitzBasic: [AUSKLAPPEN] ;Vorbereitung |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Den Mischen Ansatz hätte ich dann auch programmiert, hatte nur ganz übersehen, dass es eine neue BPS Aufgabe gibt ![]() Gibt es eigentlich eine Faustregel wie viele zufällige Tauschoperationen man auf ein Feld der Größe n anwenden muss bis es "gut" gemischt ist? |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich mische, indem ich der Reihe nach jedes Feld mit einem zufälligen anderen tausche, also breite * hoehe Tauschoperationen. Bin nicht so gut in Stochastik, aber mit dem Ergebnis bin ich gut zufrieden. | ||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hübsche Beiträge. Bin auf weitere Versionen gespannt.
@hazumu-kun: Ich würde sagen, wenn jede Folge genauso wahrscheinlich vorliegt wie eine beliebig andere (123456789 eingeschlossen). Aus dem Bauch heraus würde ich n/2 als "gut genug" deklarieren: eine Tauschaktion wirkt sich auf 2 Positionen aus, womit bei n/2 theoretisch alle Positionen geändert worden sein könnten. Für präzise Antworten musst du "gut" definieren, sonst kann man viel Mathe um nichts machen. ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
n/2 mal zu Tauschen ist zu wenig. Da einige Elemente mehr als einmal getauscht werden(mit sehr hoher Wahrscheinlichkeit) liegen im Schnitt zu viele Elemente in der Ausgangsposition.
Wenn man wie SpionAtom schon sagte n mal tauscht und zwar das Element in jeder Position mit einem zufälligen anderen kann man von einer gleichmäßigen Verteilung ausgehen(jedes Element wurde mindestens einmal vertauscht). |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke ![]() |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meine Lösung ist die folgende:
BlitzBasic: [AUSKLAPPEN] SeedRnd MilliSecs() Code korrigiert Ich verwende auch der Einfachkeit halber ein eindimensionales Array. Es wird immer eine zufällige Zahl zwischen 1 und 9-n ermittelt, wobei n die Anzahl der bereits festgelegten Zahl ist. Entsprechend ist der Zahlenraum genau so groß, wie die Anzahl der unbefüllten Felder. D.h. wir haben eine 1:1 Zuordnung von möglichen Zahlen (zwischen 1 und 9-n) und fehlenden Zahlen. Diese Zuordnung wird von der Funktion getUnused vorgenommen. Der Rest des Codes beschäftigt sich mit Anzeige und Programmverzögerung (ich verwende B+, deshalb kein WaitKey ![]() Die Lösung finde ich ehrlich gesagt eleganter als massives Tauschen |
||
pinochino |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Hier jetzt auch meine Lösungen, etwas verspätet aber nja. Ich habe 2 Lösungen angefertigt. Ein Mischverfahren, in welchem erst 9 Felder mit den Zahlen 1-9 gefüllt und dann untereinander getauscht (gemischt) werden. BlitzBasic: [AUSKLAPPEN] Const xmax%=800, ymax%=600, KEY_ESC%=1 Und ein Zufallsverfahren, in welchem 9 Feldern je eine Zufallszahl (Zwischen 1-9) zugewiesen wird und darauf hin auf Doppelte Zahlen geprüft wird und jene ersetzt werden. Diese Zufallszahlen werden dann in ein Extra 3x3 Feld eingetragen und ausgegeben. BlitzBasic: [AUSKLAPPEN] Const xmax%= 800, ymax%= 600, KEY_ESC%=1 lg pinO |
||
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn dies ein Wettbewerb für die Anfänger ist, warum machen dann hier fast nur die klügsten Köpfe des Forums mit? ![]() |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh, auch nicht kluge köpfe dürfen mitmachen? ![]() Ich denke, bevor da garnichts zu stande kommt, geben andere leute auch ihre beiträge ab. Persönlich würde ich nicht behaupten, das ich noch ein absoluter anfänger bin, aber auch ich habe schon ein ums andere mal durch die bps geschaut und geguckt, wie die umsetzungen waren. Das ist doch ein netter lernschritt.. erst die simplen umsetzungen durcharbeiten, dann die komplexen der "klugen köpfe" ![]() |
||
pinochino |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe doch auch Teilgenommen obwohl Ich ein blutiger Anfänger bin ![]() Du kannst den BPS auch mit einem deiner Beiträge bereichern. lg |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe mal SpionAtoms Code genommen und anstelle des nachträglichen Tauschens einfach das Einfügen gleich an zufällige Positionen gepackt.
BlitzBasic: [AUSKLAPPEN] width = 3 |
||
MrKeks.net |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group