Übungen / Aufgaben zu Ruby

0 Lösungen
Holzblock-Schiebe-Spiel: Das gemeine Dutzend
Fortgeschrittener - Ruby von hollst - 03.01.2020 um 15:59 Uhr
Auch zu dieser Aufgabe gibt es eine kleine Vorgeschichte. Vor gut zwei Jahrzehnten erwarb ich in einem Krämerladen in San Diego (USA) ein Holzblock-Schiebe-Spiel mit der Bezeichnung „The Dirty Dozen“, etwa übersetzbar als „Das gemeine Dutzend“ (auch andere Übersetzungen sind möglich, das Spiel ist meines Wissens nach nie nach DE vertrieben worden, gelegentlich ist es über eBay erhältlich). Das Spiel wurde angeblich von einem Herrn Gary Mac Leod aus San Francisco etwa 1995 erfunden, der es auch über seine Firma „Square Root Games“ in Mexiko produzieren ließ. Der große finanzielle Renner ist es für Gary wohl nicht geworden, denn es ist eine recht harte Angelegenheit, die sehr viel Geduld erfordert (nicht gerade eine Stärke der meisten US-Kids).

Das Spiel besteht neben einem quadratischen Spielfeld mit Begrenzungswänden aus insgesamt 14 Holzblockelementen, u. z. sechs Quadratblöcken (Seitenlänge sei S), drei Rechteckblöcken (S und 2 x S), vier Winkelblöcken (2 x S, 2 x S) und einem flachen, quadratischen Hauptblock (ebenfalls 2 x S, 2 x S). Alle Holzblockelemente sind innerhalb des Spielfeldes frei verschiebbar. Ziel des Spieles ist es, den Hauptblock vor eine schlitzförmige Ausschuböffnung zu manövrieren ohne Heben, Drehen oder Entfernen anderer Blöcke auf dem Spielfeld (siehe BILD 1 und Draufblick BILD 2).

Der Erfinder gibt zwölf mögliche Ausgangsanordnungen (daher wohl das Wort DOZEN in der Spielbezeichnung) für die 14 Holzblockelemente vor mit zunehmendem Schwierigkeitsgrad (BILD 3).

Es ist mir bis heute nicht gelungen, auch für nur eine der Anordnungen die Lösung zu finden. Insbesondere die letzten drei Anordnungen mit über 100 Zügen erscheinen mir sehr problematisch für eine Lösung durch reines Nachdenken zu sein. Andererseits glaube ich auch nicht, dass Gary Mac Leon 1995 einen Computer zur Hand hatte, um die Lösungen via Simulation zu generieren. Trotzdem gibt er vor, bei postalischer Übersendung von 5 USD die Lösungen preiszugeben. Gut, vor einer solchen Ausgabe finde ich es interessanter, die Lösungen selber mit Hilfe eines Computers zu finden. Erst wenn das nicht gelingen sollte, frage ich in San Francisco an (die Firma soll es angeblich immer noch geben).

So, wer sich anschließen möchte, sehr gern und viel Spaß!
0 Lösungen
Ägyptische Bruchrechnung
Fortgeschrittener - Ruby von hollst - 22.12.2019 um 22:50 Uhr
Gegeben seien zwei positive Ganzzahlen Z (wie Zaehler) und N (wie Nenner) mit N > Z
und Z sei kein Teiler von N.

Der Bruch Z/N ist immer als Summe der Kehrwerte positiver Ganzzahlen (Stammbrüche) darstellbar,
wobei es meist mehrer Möglichkeiten der Darstellung gibt.

Beispiele:

5/6 = 1/2 + 1/3 = 1/2 + 1/4 + 1/12 = 1/2 + 1/4 + 1/13 + 1/156 = ...

17/39 = 1/3 + 1/10 + 1/390 = ...

Man schreibe ein Programm, das Z und N entgegennimmt und die Zahlen der Stammbrüchesumme mit den wenigsten Summanden ausgibt.

Also obere Beispiele:

Input 5 und 6, Output 2 und 3,
Input 17 und 39, Output 3, 10 und 390.

Viel Spaß.
0 Lösungen
Das Problemspiel der spagetti-essenden Philosophen
Anfänger - Ruby von hollst - 04.12.2019 um 18:44 Uhr
wiki
https://de.wikipedia.org/wiki/Philosophenproblem


Fünf Philosophen sitzen um einen runden Tisch, vor jedem ein Teller voll mit Spagetti und links davon eine Gabel (BILD 1).
Um von dem Teller Spagetti essen zu können, benötigt man allerdings zwei Gabeln. Die zweite Gabel kann man sich von seinem
rechten Nachbarn borgen, sofern dieser nicht gerade selber beim Essen ist. Außerdem sollte man seine eigene Gabel auch nicht gerade
an seinen linken Nachbarn verborgt haben.

Das Spiel beginnt beim ersten Philosophen und geht Schritt für Schritt wie folgt reihum:

Jeder Philosoph kann sich in einem von drei möglichen Zuständen befinden,
u. z. denkend (Zustand 1, zu Beginn alle fünf Philosophen), hungernd (2) oder essend (3).

Ein denkender Philosoph kann per Zufallsentscheidung entweder in diesem Zustand 1 verweilen (dann geht der Zeiger sofort weiter an
seinen rechten Nachbarn) oder sich für "Essenwollen" entscheiden (Übergang von Zustand 1 in Zustand 2). In diesem Fall muss er prüfen,
ob ihm zwei Gabeln zur Verfügung stehen. Wenn Ja geht er von Zusand 2 in den Zustand 3 über und kann (sagen wir) zwei [Variable E wie Essen] Runden lang essen. Nach den zwei [E] Runden wird er zunächst wieder zum denkenden Philosophen (Zustand 1), der geleerte Teller wird sofort wieder aufgefüllt, falls der Philosoph erneut Hunger bekommt.

Hat er allerdings keine zwei Gabeln zur Verfügung, bleibt er die Runde hungrig (er verharrt im Zustand 2). Bekommt ein Philosoph
(sagen wir) zehn [Variable T wie Tod] Runden lang hintereinander nichts zu essen, ist er verhungert und das Gelage auch zu ende.

Die Frage lautet, nach wie vielen Runden (abhängig von E und T) ist im Durchschitt der erste Philosoph verhungert. Viel Spaß!
0 Lösungen
Windows Forms Taschenrechner
Anfänger - Ruby von paddlboot - 04.12.2019 um 17:09 Uhr
Erstelle mit Hilfe von Windows Forms einen Taschenrechner!

- Der Taschenrechner soll zwei Zahlen speichern können.
- Wie bei einem Taschenrechner üblich, sollen alle Zahleneingaben gesammelt werden bis der Operator gewählt wurde.
- Mit jedem Drücken einer Zahlentaste wird der Variable also eine Dezimalstelle hinzugefügt.
- Wenn ein Operator ausgewählt wurde, soll die erste eingegebene Zahl gespeichert werden, ebenso der Operator (in einer separaten Variable).
- Mit Drücken der Ergebnis Taste (=) soll das Ergebnis in der selben Textbox ausgegeben werden, wie die, in der die Zahlen eingegeben wurden.

Im Anhang ein Beispiel wie ich das gelöst habe.
0 Lösungen
Funktionswerte einer Parabel berechnen - Windows Forms
Anfänger - Ruby von paddlboot - 04.12.2019 um 16:13 Uhr
Erstelle eine Windows Form, in der Funktionswerte einer Parabel berechnet werden können.
Dafür sollen Start-, Endwert und Schrittweite über Textboxen eingelesen werden und nach dem Betätigen des Berechnen-Buttons die X- und Y-Werte in einer ListBox ausgegeben werden.
Mögliches Aussehen siehe Anhang.
0 Lösungen
Glücksspiel Zufällige Zahl 0-9
Fortgeschrittener - Ruby von re_mas - 27.11.2019 um 18:30 Uhr
Die Aufgabenstellung ist wie folgt:
- Glücksspiel bei der eine random Zahl zwischen 0 - 9 erzeugt werden soll.
- Der Spieler hat ein Startkonto von 10.000 Punkten und kann damit einen beliebigen Teilbetrag auf die zufällig erzeugte Zahl setzen.
- Liegt er richtig bekommt er das 9 Fache seines Einsatzes als Gewinn
- Programmieren Sie ein entsprechendes Programm, welches die Eingaben von der Tastatur einliest und
die Ausgaben auf dem Bildschirm liefert. Die zu erratende Zahl kann durch einen verfügbaren Zufallsgenerator gezogen werden.
0 Lösungen
Text in Blindenschrift (Braille-Schrift) darstellen
Anfänger - Ruby von hollst - 12.11.2019 um 20:14 Uhr
Hallo,

Eure Aufgabe sei es, einen gegebenen Text in ein Blindenschriftmuster zu überführen.

Das Alphabet bestehe aus den in DE verwendeten 26 + 3 Buchstaben (alles Kleinbuchstaben im Braille),
dem Leerzeichen, den Dezimalzahlen 0 ... 9 und vier Sonderzeichen (!, ?, ., ,) (Abb. 1).

Zwei Zeichen werden jeweils durch ein ordinäres Leerzeichen getrennt,
zwischen zwei Zielen ist eine Leerzeichenzeilen eingefügt.

Exemplarisch sei der Satz "TrainYourProgrammer gehört zu meinen Lieblings-Webseiten." als
Blindschriftmuster dargestellt (Abb. 2). "-" und "+" gehören nicht zu unserem Alphabet
und sind durch Leerzeichen zu ersetzen.

Viel Spaß!
0 Lösungen
Muster im Polarkoordinatensystem
Anfänger - Ruby von Exception - 10.11.2019 um 09:24 Uhr
Hallo zusammen,

heute sollt ihr ein kleines Zeichenprogramm schreiben.

1. Polarkoordinatensystem

Zuerst geht es darum ein Polarkoordinatensystem (auch als Kreiskoordinatensystem bekannt) zu zeichnen.
Der Ursprung des Koordinatensystems befindet sich im Zentrum der Zeichenfläche.

- Die X-Achse verläuft horizontal durch den Ursprung, die Y-Achse vertikal.
- Jede Längeneinheit soll von einem Kreis geschnitten werden, also jeweils bei X(n) und Y(n). Der Kreismittelpunkt befindet sich dementsprechend im Ursprung des Koordinatensystems.
- Des Weiteren soll alle 22,5° eine Linie vom Ursprung aus gezogen werden (dies sind insg. 16 Linien, damit sind auch die X- als auch die Y-Achse abgedeckt!).

Wenn ihr das geschafft habt, sollte das ca. so aussehen Beispiel Polarkoordinatensystem (Hier allerdings mit 30°-Schritten anstatt mit 22,5°)
Auf die Gradangaben kann verzichtet werden.
Zudem solltet ihr dezente Farben für das Koordinatensystem wählen.

2. Muster

Für das Muster sollt ihr nun Punkte in diesem Koordinatensystem einzeichnen.
Diese ergeben das Muster je nach Punktanzahl und Zoom.

Ein jeder dieser Punkte hat folgende Eigenschaften:
- Die X-Koordinate ist die Entfernung vom Koordinatenursprung (= der Radius)
- Die Y-Koordinate ist das Bogenmaß.

Jeder Punkt soll die gleiche Zahl für X und Y eingesetzt bekommen.
D.h. Punkt p: pX(n) und pY(n)
Hier ergibt sich jedoch eine Schwierigkeit für Y.
Der Wert der Y-Koordinate n ist das Bogenmaß und muss dementsprechend noch in eine Gradzahl konvertiert werden.
Ein Beispiel:
X = 3
Y = 3 (bzw. ~172°)

Ihr sollt das nun Punkte für 0 < n <= 100 auf diesem Koordinatensystem einzeichnen.

Im Anhang befinden sich noch drei Abbildungen, die das ganze Vorhaben verdeutlichen sollen.
Es heißt ja immer ein Bild sagt mehr als tausend Worte...

Viel Spaß
euer Exception :)
0 Lösungen
Zeitenrechner - Windows Forms
Anfänger - Ruby von paddlboot - 05.11.2019 um 07:59 Uhr
Erstelle eine Windows Forms Anwendung, in der die Arbeitszeit nach Eingabe von Beginn, Pause und Feierabend ausgerechnet werden soll.

Hierbei soll der Benutzer den Arbeitsbeginn, Beginn und Ende der Pause und den Feierabend in Textboxen eingegeben.
Mit Hilfe von Buttons soll der Benutzer entscheiden können, ob er nur den Vormittag, den Nachmittag oder die gesamte Arbeitszeit angezeigt haben möchte.

Achtung!: Die Pause gehört nicht zur Arbeitszeit! Daher muss sie von der Arbeitszeit abgezogen werden!

Viel Spaß :)
0 Lösungen
Entwicklung einer Population bishin zur vollständigen Verwandtschaft
Anfänger - Ruby von hollst - 04.11.2019 um 12:38 Uhr
Gegeben sei eine Startpopulation mit 2N Mitgliedern (z. B. N = 100), N männliche und N weibliche, die N Elternpaare bilden.

Jedes Elternpaar erzeuge genau einen männlichen und einen weiblichen Nachkommen. Diese 2N Nachkommen bilden
anschließend durch Vermischung die nächste Generation von Eltern und so fort bis zur Generation g, die natürlich wieder 2N Populationsmitglieder hat.

Bei einer Vermischung sei Inzest (Bruder-Schwester-Ehe) verboten, eine Ehe zwischen Cousin und Cousine allerdings erlaubt.

Mittels Computersimulation sind zwei Fragen zu beantworten:

Die erste Frage lautet, nach wie vielen Generationen (g1) ist (im Mittel) erstmals ein Nachkomme mit allen Populationsmitgliedern
seiner Generation verwandt.

Die zweite Frage lautet, nach wie vielen Generationen (g2) ist (im Mittel) jeder Nachkomme mit allen Populationsmitgliedern
seiner Generation verwandt.

Viel Spaß!
0 Lösungen
Das Zahnstochermuster und die Sequenz der Anzahl freier Spitzen im Muster
Fortgeschrittener - Ruby von hollst - 01.10.2019 um 18:15 Uhr
Man kann sogar mit Zahnstochern Mathematik bzw. Informatik betreiben!

Ein Zahnstochermuster wird schrittweise erzeugt: Im ersten Schritt legt man einen Zahnstocher
beliebig und flach auf eine 2D-Fläche ab. Ohne besondere Einschränkungen seien angenommen, dass jeder Zahnstocher
genau die Länge 1 (eins) hat und das erste Exemplar senkrecht und mittig in einem (X, Y)-Koordinatensystem
liegt. Das Muster hat nach dem ersten Schritt zwei freie Spitzen bei (1/2, 0) und (-1/2, 0).
Im zweite Schritt werden senkrecht zum ersten Zahnstocher auf die zwei freien Spitzen jeweils ein weiterer Zahnstocher gelegt,
danach haben wir vier freie Spitzen (siehe Bild step_2). Auf diese Weise wird schrittweise fortgefahren.
Die Sequenz der Anzahl freier Spitzen im Muster beginnt so:

Schritt........: 1..2..3..4..5....6..7..8..9..10 11 12 13 14 15 16 17 18 19 ...
freie Spitzen: 2..4..4..4..8..12, 8, 4, 8, 12, 12, 16, 28, 32, 16, 4, 8, 12, 12 ...

Sie steigt zunächst an bis 12 (Schritt 6), um danach auf 4 abzufallen (Schritt 8). Dieses Auf und Ab
zieht sich stetig fort (bis in alle Ewigkeit, was noch zu beweisen wäre [jedoch nicht von uns]).
Die Entwicklung des Zahnstochermusters hat fraktalen Charakter. Anhand von Bild step_10_14_17 soll dies belegt sein.

Die Programmieraufgabe bestehe darin, die Musterentwicklung bis zum Schritt 100 "interaktiv" darzustellen (Bild step_100)
und auch die Anzahl freier Zahnstocherspitzen jeweils anzugeben.

Viel Spaß!
0 Lösungen
Windows Verzeichnis, Dateien Verschieben mit Hexadezimal
Fortgeschrittener - Ruby von BigShady - 22.08.2019 um 14:01 Uhr
Bei dieser Aufgabe geht es darum 3 Dateien ( pdf, txt, html) die gleich heißen von einem Verzeichnis ins andere zu verschieben.

Verzeichnisstruktur sieht so aus:

Man hat 2 Ordner die jeweils 16 Unterordner von 0 bis F ( 0-9 und A -F Hexa) haben.
Im jeden dieser 16 Ordner gibt es drei Dateien ( oben erwähnt).

In dem ersten Ordner, also Ordner 0, sieht es so aus:
3422B60.pdf
3422B60.txt
3422B60.html

Im Ordner 1:
3422B61.pdf
3422B61.txt
3422B61.html

Im Ordner 2:
3422B62.pdf
3422B62.txt
3422B62.html
usw..


Hierbei ist zu beachten das die Endung der Datei zum Ordner passen MUSS.
Beispiel:

Im Ordner "B" darf keine Datei sich befinden die NICHT auf B Endet.

Aufgabe:

Schreibe ein Programm, Konsole oder WPF, wo man eingeben kann zbs:

Ich möchte die Dateien 3422B60 bis Datei 3422BC8 in das andere Verzeichnis Verschieben.
Das Programm sollte die Dateien aus dem Jeweiligen Ordner ziehen und in das richtige Verzeichnis Verschieben.
Beachten Sie bitte auch die Korrekte reinfolge in Hexadezimal.


Viel Glück !


Kurze Info:

Hab diese Aufgabe in einer Entwickler Zeitschrift aus den USA gelesen, kann mich leider nicht mehr an den Namen erinnern.