Übungen / Aufgaben zu Ruby

0 Lösungen
Schiffe Versenken / Konsolenprogramm
Profi - Ruby von Gelöschte Person - 30.03.2019 um 17:34 Uhr
Zu Programmieren ist ein Schiffe versenken Game für die Konsole

Es soll folgende funktionen haben:
Computergegner
2 Spieler
0 Lösungen
Quiz für die Konsole
Fortgeschrittener - Ruby von Gelöschte Person - 30.03.2019 um 16:44 Uhr
Es soll ein Quiz für die Konsole programmiert werden. Dabei sollen die Fragen und Antworten in einer Datei stehen. Natürlich könnt ihr auch ein Punktesystem einfügen. Es ist aber kein muss.
Die Fragen sollten in einer Zufälligen Reihenfolge aufgerufen werden. In einer Runde darf jede Frage nur einmal vorkommen.

Als Beispiel:

Quiz
src
libs
bin
fragen
frage1
frage2
frage3
antworten
antwort1
antwort2
antwort3
0 Lösungen
Tic-Tac-Toe für die Konsole
Fortgeschrittener - Ruby von Gelöschte Person - 30.03.2019 um 14:03 Uhr
Ein Tic-Tac-Toe Spiel für die Konsole.
Folgende Moduse sollte es geben:
2 Spieler
1 Spieler gegen Computer
0 Lösungen
Goldener-Schnitt-Konstante mit beliebiger Genauigkeit berechnen
Anfänger - Ruby von hollst - 14.03.2019 um 09:04 Uhr
Man berechne die Goldener-Schnitt-Konstante 1.6180339887...

(https://de.wikibooks.org/wiki/Formelsammlung_Mathematik:_Wichtige_Zahlen) link


mit einer Genauigkeit von mindestens 100 Nachkommastellen.
0 Lösungen
Klassisches Bingo mit Verzögert gezogenen Nummern
Fortgeschrittener - Ruby von maxi72501 - 11.03.2019 um 14:57 Uhr
In dieser Aufgabe soll man ein Klassisches Bingo erstellen wo man eine zufällige Karte erhält wo auf einem 5 * 5 Feld Zahlen von 1 bis 75 verteilt liegen. Zu beachten ist das in der ersten Spalte zahlen von 1 bis 15, in der zweiten Spalte 16 bis 30, in der Dritten 31 bis 45, in der vierten 46 bis 50 und in der letzten 51 bis 75.
0 Lösungen
Interaktiv Königinswache (Agon) spielen
Fortgeschrittener - Ruby von hollst - 08.03.2019 um 15:13 Uhr
Agon ist ein Zweimannbrettspiel, dass vor gut 200 Jahren in England oder Frankreich kreiert wurde. Das Brett besteht aus 91 Hexagonen, die um ein Zentralfeld in fünf "Ringen" angeordnet sind. Jeder Spieler hat sechs Wachen und eine Königin, daher wird das Spiel manchmal auch Königinswache genannt. Das Spielbrett und die Ausgangsstellung sind im Bild_1 dargestellt.

Es wird abwechselnd gezogen, Weiß beginnt (oder es wird ausgelost, wer beginnt). Dabei gelten folgende Zugregeln:

1. Jeder Stein kann einen Schritt entweder auf seinem aktuellen Ring nach "rechts" oder "links" ausführen bzw. vorwärts in Richtung eines niederwertigen Ringes, niemals jedoch rückwärts auf ein höherwertiges Ringfeld (Bild_2). Das avisierte Feld muss natürlich frei sein, "Schlagen" ist nicht erlaubt. Der nullte Ring (Zentralfeld) darf nur von einer Königin betreten werden.

2. Von besonderer, spielstratigischer Bedeutung sind sogenannte Sandwichkonstellationen auf dem Brett. Eine solche Konstellation entsteht, wenn ein Stein (in gerader Linie) von zwei generischen Steinen eingeschlossen ist (Bild_3). Züge, die zu einer Selbsteinschließung führen würden, sind allerdings verboten. Ist man jedoch durch einen gegnerischen Zug eingeschlossen worden, muss diese Situation mit dem nächsten Zug sofort aufgelöst werden:

a) Ist der eingeschlossene Stein ein Wächter, muss er auf ein freies Feld des Außenringes gesetzt werden (allerdings nicht auf ein Sandwichfeld!).
b) Ist der eingeschlossene Stein die Königin, so kann sie auf irgendein freies Feld des Brettes gesetzt werden mit Ausnahme des Zentralfeldes.
c) Sind mehrere Steine "gesandwicht" (z. B. W-S-(W)-S-W, wobei (W) bedeutet, dass sich im letzten Zug dort ein weißer Stein platziert hat), so ist dies entsprechend Zug um Zug aufzulösen. Erst danach kann man wieder frei und willkürlich ziehen.

Das Ziel für jeden Spieler ist es, seine Dame mit Hilfe der Wachen auf dem Zentralfeld zu platzieren und sie durch Besetzung des innersten Ringes mit Wachsteinen vollständig zu schützen (Bild_4 + Bild_5). In diesem Fall ist das Spiel gewonnen.

Die Programmieraufgabe bestehe nun darin, einen Code zu entwickeln, der es ermögtlicht, Argon interaktiv auf dem Desktop zu spielen. Die Züge sollen dabei mit der Maus per Pick-Move-Drop ausgeführt werden. Eine Überwachung des vorgesehenen Zuges auf Gültigkeit ist selbstredend zu integrieren.

Optional:
Der Gipfel der Programmierkunst wäre natürlich, wenn einer der zwei Spieler der Computer wäre.

So, mit dieser harten Nuss wünsche ich viel Spaß und Erfolg!
0 Lösungen
Gewinnwahrscheinlichkeit bei Cayley's Mousetrap
Fortgeschrittener - Ruby von hollst - 13.02.2019 um 10:56 Uhr
Mousetrap ist der Name eines Spiels, das vom englischen Mathematiker Arthur Cayley 1878 erfunden wurde [1].
Wie Cayley auf den Namen Mousetrap (Mausefalle) gekommen ist, ist unbekannt. Das Spiel hat große Ähnlichkeit mit
dem im achtzehnten Jahrhundert in Frankreich beliebten Kartenspiel TREIZE ("treize" heißt übersetzt "dreizehn").

In Cayley's Spiel werden Karten mit den Nummern 1 bis n (z. B. n = 13 (Rommé-Bridge-Canasta-Blatt ohne Joker))
gemischt und zu einem Kreis mit ihren Nummern (Farben) nach oben angeordnet.
Bei z. B. 13 Karten stehen Ass für 1, Bube für 11, Dame für 12 und König für 13.

Dann beginnt der Spieler zu zählen, startend bei der zuerst gelegten Karte und mit der Zahl 1. Hat die erste Karte nicht den Wert 1,
wechselt er zur nächsten Karte im Kreis (Uhrzeigerrichtung) und prüft, ob sie den Wert zwei hat. Dies wird solange fortgeführt,
bis die "Zählzahl" mit dem Wert einer Karte übereinstimmt. In diesem Fall wird die entsprechende Karte aus dem Kreis entfernt und
die Zählung bei der folgenden Karte wieder mit 1 begonnen. Dies wiederholt man solange bis entweder keine Karten mehr
auf dem Tisch liegen (Gewinn) oder beim Zählen die Zahl n + 1 erreicht wurde (Verlust).

Beim französchen TREIZE hat mat Wetten darauf abschließen können, ob eine gegebenen Startmischung zum Gewinn oder zum Verlust führt.

Wir wollen die Gewinn-/Verlustwahrscheinlichkeit programmtechnisch berechnen (n < 13) bzw. abschätzen (13 <= n <= 52).

Warum die Unterscheidung n < 13 und n >= 13? Da Fakultät(13) = 13! = 6.227.020.800 (Anzahl aller möglichen Mischungen bei 13 Karten)
bereits größer ist als z. B. C#-ulong.MaxValue (4.294.967.295) kommen wir sehr schnell an die Grenzen der praktischen Berechenbarkeit.
Daher bei Kartensätzen mit mehr als 12 Karten lediglich eine Abschätzung der Wahrscheinlichkeit. Natürlich kann jeder diese "Grenze"
für sich selber festlegen.

Viel Spaß!

[1] A. Cayley: On the game of Mousetrap. Quarterly Journal of Pure and Applied Mathematics, VOL. XV, 1878, pp 8 – 10
0 Lösungen
Random Walk der Liouville Serie
Fortgeschrittener - Ruby von hollst - 16.01.2019 um 16:20 Uhr
Die Liouville Serie ist eine Zahlenfolge, die nur aus den Zahlen +1 und -1 besteht.

Sie beginnt mit {1, -1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1 ...}. Die ersten 10.000
Glieder sind in der Datei liouville_folge.txt gespeicher und könnten meinetwegen eingelesen werden.

Wer die Glieder der Folge L(n) selber berechnen will, muss wie folgt vorgehen:

1.) Per Definition wird L(1) => +1 gesetzt.
2.) Man zerlege n in all seine Primfaktoren (z. B. 14 = 2 * 7 oder 32 = 2 * 2 * 2 * 2 * 2).
3.) L(n) => +1, falls die Anzahl der Primfaktoren eine gerade Zahl ist, ansonsten L(n) => -1
(also L(14) => +1; L(32) => -1).

Man fasse nun L(n) als eine Schrittfolge auf, die eine Weg in der x-y-Ebene beschreibt.
Ausgehend von der Koordinate (x = 0, y = 0) wird zunächt der x-Wert um Eins erhöht
(entsprechend L(1) = 1), anschließend wird der y-Wert um Eins erniedrigt (entsprechend L(2) = -1)
und immer so fort bis zu L(nmax) (nmax von mir aus 10.000 oder mehr).

Der sich so ergebene Weg (siehe Bild 1 für nmax = 100.000, die Pixelfarbe wechselt zur besseren Illustration alle 10.000 Schritte)
ist gefühlsmäßig ein Zufallsweg (Random Walk). Ob dem wirklich so ist, weiß man bis heute nicht.

Die Programmieraufgabe bestehe nun darin, den Liouville-Weg graphisch darzustellen.

Falls jemand fragt "Was soll der Unfug?": Nun, man geht davon aus, das die Liouville Serie ein Schlüssel
zur Lösung der Riemann-Hypothese (RH) sein könnte. Bekanntlich sind zum Beweis bzw. zur Widerlegung der RH
noch immer eine Million US-Dollar ausgeschrieben.

Also, dann viel Erfolg! Ich drücke die Daumen für den Einemilliongewinn.
0 Lösungen
Texte auf Unterschiede prüfen, diese dann Ausgeben
Anfänger - Ruby von Exception - 12.01.2019 um 08:49 Uhr
Hallo zusammen,

heute sollt ihr zwei Texte miteinander vergleichen und etwaige Unterschiede herausfinden.

Die gefundenen Unterschiede sollen dann in beiden Texten markiert werden (farblich o.ä.).
Sollten beide Texte identisch sein, kann dies auch per Messagebox o.ä. ausgegeben werden.
Es ist im Endeffekt WinMerge für Arme.

Wer absolut keine Vorstellung hat, wie das später in etwa aussehen kann, der möge hier klicken.

Viel Spaß und ein schönes Wochenende :)
0 Lösungen
Geografische Daten von Städten abfragen und ausgeben bzw abspeichern
Fortgeschrittener - Ruby von ZRX88 - 01.01.2019 um 13:43 Uhr
Die API https://www.distance24.org/api.xhtml bietet einen API Endpunkt zum Abfragen von Daten zu Städten.

Das Ziel ist, dass mehrere Städte ( beispielsweise Berlin, Hamburg und München) abgefragt werden, dann die Entfernung zwischen den Städten in der Console ausgegeben wird. Dazu soll für jede Stadt zusätzliche Infos wie Bevölkerung und die unterschiedlichen Travelguides ausgegeben werden.

Optional sollen die aufgelisteten Punkte als Datei abgespeichert werden. Wer will kann es auch als drei separate html Dateien abspeichern.
0 Lösungen
Teufelskreis einer selbstbezüglichen Aussage
Anfänger - Ruby von hollst - 17.12.2018 um 18:46 Uhr
Die folgende Aussage sei gegeben als String:

"Dieser Satz hat vierzig Buchstaben sowie einen Punkt."


Die Aussage ist natürlich falsch, denn der Satz hat tatsächlich fünfundvierzig Buchstaben.

Ersetzen wir nun in der Aussage das Wort "vierzig" durch "fünfundvierzig" bleibt die Aussage aber trotzdem falsch,

denn der neue Satz hat zweiundfünfzig Buchstaben. Schöner Teufelskreis, oder?


Schreibe ein Programm mit dem überprüft wird, ob es überhaupt eine (ausgeschriebene) Zahl gibt, die oben zu einer wahren Aussage führt.

Viel Spaß!

0 Lösungen
Body-Mass-Index (BMI)
Anfänger - Ruby von hollst - 20.11.2018 um 18:23 Uhr
Der BMI ist eine (umstrittene) Kenngröße zur Ermittlung des eigenen Über-/Untergewichtszustandes:

BMI = Körpermasse (kg) / Körpergröße zum Quadrat (m**2).

Er wird wie folgt interpretiert:

Starkes Untergewicht < 16
Mäßiges Untergewicht 16 – < 17
Leichtes Untergewicht 17 – < 18,5

Normalgewicht 18,5 – < 25

Präadipositas 25 – < 30

Adipositas Grad I 30 – < 35
Adipositas Grad II 35 – < 40
Adipositas Grad III ≥ 40

Man schreibe ein Programm, das die zwei Basisdaten (Körpermasse und Körpergröße) entgegennimmt und den
Zustand (Starkes Untergewicht, Mäßiges Untergewicht ... Adipositas Grad III) als Ergebnis mitteilt.

Viel Spaß!