Übungen / Aufgaben zu Ruby

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ß!

0 Lösungen
Binärzahlen ohne Doppelnull
Anfänger - Ruby von hollst - 20.11.2018 um 09:55 Uhr
Es sein z. B. N = 10.000.

Man schreibe ein Programm, das alle natürlichen Zahlen kleiner N auflistet,
die in ihrer binären Repräsentation keine zwei aufeinander folgende Nullen besitzen.

Anmerkung: Führende Nullen werden nicht berücksichtigt, die erste natürliche Zahl, die nicht in der Liste wäre,
ist somit die 4 (4-dezimal = 100-binär).

Viel Spaß!
0 Lösungen
Objekterkennung in einem Netz mit hexagonalen Zellen (hex-CCL)
Fortgeschrittener - Ruby von hollst - 19.10.2018 um 14:14 Uhr
Gegeben sei ein (quasi unendlich ausgedehntes) Netz/Gitter mit hexagonalen Zellen (siehe Bild_black_white),
die entweder (zufällig) leer (Weißmarkierung) oder belegt sind (Schwarzmarkierung).

Jede Zelle hat sechs unmittelbare Nachbarzellen. Ist bei einer belegten Zelle eine oder sind mehrere Nachbarzellen gleichfalls belegt,
so werden die entsprechenden Zellen zu einem Zellcluster vereint. Auf diese Weise entstehen im Netz/Gitter
geometrisch unterschiedlich strukturierte Objekte, die vollständig von leeren Zellen umgeben sind.

Die Programmieraufgabe besteht darin, die Anzahl der so konstruierten Objekte zu zählen und unterschiedliche Objekte
mit unterschiedlichen Farben zu markieren (siehe Bild_color_labeled).

Wer sich zu der Problematik etwas belesen möchte, google bitte nach CCL oder connected-component labeling.
Dort wird allerdings in der Regel nicht mit hexagonalen sondern mit quadratischen Zellen (Pixeln) hantiert.

Viel Spaß!
0 Lösungen
Rundflug über Deutschland
Fortgeschrittener - Ruby von hollst - 11.09.2018 um 10:19 Uhr
Angenommen, ihr wollt mit eurer Einmot einen Rundflug derart
über Deutschland machen, dass ihr im Direktflug in jeder Landeshauptstadt
der 16 Bundesländer genau einmal landet, dort auftankt und dann weiterfliegt.
Start- und Endflughafen/-platz sei der eurer eigenen Landeshauptstadt.

In welcher Reihenfolge sind die Flugplätze anzufliegen, wenn die Gesamtflugstrecke
die kürzest mögliche sein soll?

Nun gut, es gibt da insgesamt 15! = 1.307.674.368.000 verschiedene Möglichkeit.
Um euren Rechner (etwas) zu entlasten, vereinfachen wir die Sache: Die zwei
Landeshauptstädte Mains und Wiesbaden bzw. Berlin und Potsdam werden auf Grund
ihrer geringen Entfernung zueinander zu jeweils einer Stadt zusammengefasst
(Mains-Wiesbaden und Berlin-Potsdam). Außerdem hat Potsdam je sowieso keinen Flughafen,
dort setzt man bekanntlich auf BER für die Zukunft. Gut, soll man in Preußen
weiter träumen und hoffen.

Für die Aufgabe braucht ihr natürlich eine Entfernungstabelle. Nehmt dafür entweder
einen Autoatlas (die Abweichungen Luftlinie/Staßenlinie seien vernachlässigt) oder
googelt nach "Entfernungstabelle", es gibt diverse Tools davon im Netz. Ihr könnt natürlich
auch die 16 geographischen Ortskoordinaten der Landshauptstädte als Basis nehmen und
damit selbst eine Entfernungstabelle konstruieren.

Viel Spaß!
0 Lösungen
Durchnummerierung aller möglichen geordneten Ziehungsergebnisse bei 6 aus 49
Anfänger - Ruby von hollst - 06.09.2018 um 10:28 Uhr
Beim Lotto 6 aus 49 gibt es bekanntlich 13.983.816 mögliche (geordnete) Ziehungsergebnisse (49 über 6).

Schreibe ein Programm, das jeder dieser Möglichkeiten eine natürliche Zahl zuordnet, also

1 2 3 4 5 6 -> 1
1 2 3 4 5 7 -> 2

...
...

44 45 46 47 48 49 -> 13.983.816

Viel Spaß!
0 Lösungen
Digitbegrenztes Zählen
Anfänger - Ruby von hollst - 31.08.2018 um 11:04 Uhr
Gegeben sei ein positives Integerarray (uint) AMAX der Länge N, das mit Zufallszahlen zwischen (inclusive) 1 und einer Konstanten amax gefüllt ist.
Die Feldbelegung von AMAX stellt obere Wertgrenzen dar.

Man schreibe ein Programm, das alle möglichen Belegungen eines positives Integerarrays A (Länge N) auflistet,
wobei die Feldwerte von A entsprechend der Grenzwertbelegung von AMAX stets unterschritten werden müssen.

Beispiel (c#):
Quellcode ausblenden C#-Code
int N = 5, amax = 11; uint[] AMAX = new uint[] {3, 2, 9, 1, 4}
 
//mögliche uint[] A sind:
new uint[] {0, 0, 0, 0, 0}
new uint[] {1, 0, 0, 0, 0}
new uint[] {2, 0, 0, 0, 0}
new uint[] {0, 1, 0, 0, 0}
new uint[] {1, 1, 0, 0, 0}
new uint[] {2, 1, 0, 0, 0}
new uint[] {0, 0, 1, 0, 0}
// ...
// ...
new uint[] {2, 1, 8, 0, 3}
0 Lösungen
Generierung eines SUDOKU
Anfänger - Ruby von hollst - 13.08.2018 um 16:23 Uhr
Für alle, denen es nicht bekannt sein sollte: Ein SUDOKU ist ein 9 × 9 - Gitter,
das mit den Ziffern 1 bis 9 so ausgefüllt ist, dass jede Ziffer in jeder Spalte,
in jeder Zeile und in jedem 3 x 3 - Unterblock genau ein einziges Mal vorkommt (Bild 1).

Insgesamt sind fast 6.7 Trilliarden (10 hoch 21) unterschiedliche SUDOKUS konstruierbar
(genau 6.670.903.752.021.072.936.960).

Die Programmieraufgabe bestehe darin, mittels Zufallsgenerator SUDOKUS zu erzeugen
und anzuzeigen.

Durch Ausblendung einiger Felder entsteht aus einem SUDOKU ein SUDOKU-Rätsel. Dabei
müssen allerdings mindestens 17 Felder unausgeblendet sein, um eine eindeutige Lösung
zu erhalten (Beweis siehe McGuire, Gary; Tugemann, Bastian; Civario, Gilles:
There is no 16-Clue Sudoku: Solving the Sudoku Minimum Number of Clues Problem.
2012arXiv1201.0749M, Sep 2013). Die Erzeugung eines solchen SUDOKU-Rätsels sei
Fortgeschrittenen vorbehalten, da hierbei auch die Eindeutigkeit einer Lösung nachgewiesen
werden sollte. Der Gipfel wäre anschließend, einen computergestützten SUDOKU-Löser zu entwickeln;
aber, wir wollen es hier noch nicht übertreiben, eines nach dem anderen und nur, wer die
Herausforderung nich scheut.

Viel Spaß!
0 Lösungen
PDF aus CSV erstellen
Anfänger - Ruby von Exception - 06.08.2018 um 15:47 Uhr
Hallo zusammen,

heute sollt ihr eine CSV-Datei Zeile für Zeile einlesen, welche in etwa so aussehen sollte:

Firmenname;PLZ;Ort;Straße;Hausnummer;...;Gegenstand;Preis
Firmenname;PLZ;Ort;Straße;Hausnummer;...;Gegenstand;Preis
Firmenname;PLZ;Ort;Straße;Hausnummer;...;Gegenstand;Preis
...

Danach sollt ihr aus den eingelesenen Informationen eine PDF-Datei erstellen.
Für jede eingelesene Zeile soll eine neue Seite angefangen werden.

Die Gestaltung der Rechnung / des PDF-Dokuments ist euch überlassen,
wer eine grobe Vorstellung braucht kann dies klick mich als Vorlage nehmen.


Viel Spaß :)
0 Lösungen
Rekursieve Fakultät von n
Fortgeschrittener - Ruby von FHEM - 22.07.2018 um 19:09 Uhr
Erstelle ein programm das n! = 120 zum beispiel nach n auflöst.
Ansatz: 5! =5*4*3*2*1 also müsste n=120/5/4/3/2/1
0 Lösungen
Schleife, Randem, und switch und DataTime , TimeSpan.
Anfänger - Ruby von NMeassar - 06.07.2018 um 10:05 Uhr
Erstellen Sie ein Programm, welches dem Benutzer 10 Rechenaufgaben stellt.
Die Aufgaben bestehen jeweils aus zwei zufällig bestimmten Zahlen zwischen 1 und 10 und dem zufällig gewählten Operator (Möglichkeiten: + , - , *)
Ist das Ergebnis inkorrekt, wird folgender Text ausgegeben
"Das Ergebnis ist falsch!"
Dies geschieht solange, bis der Benutzer die Aufgabe richtig gelöst hat.
Nachdem die 10 Aufgaben gelöst sind, soll auf der Konsole die benötigte Zeit ausgegeben werden.
0 Lösungen
Programmierung von MasterMind
Anfänger - Ruby von hollst - 02.07.2018 um 10:54 Uhr
MasterMind ist ein deduktives Spiel, das insbesondere Anfang der 70er Jahre sehr beliebt war.
Ziel des Spiels ist es, einen Geheimcode zu entschlüsseln.

In der klassischen Variante ordnet ein Spieler, genannt "codemaker", eine Sequenz von vier Symbolen
geheim an. Praktisch geschieht dies mittels unterschiedlich oder teilweise bzw. gänzlich
gleich gefärbter Pins oder Murmeln in einer Reihe, wobei maximal sechs Farben zur Verfügung stehen.

Ein zweiter Spieler, genannt "codebreaker", versucht durch Testmuster, gleichfalls bestehend aus vier gereihten
Symbolen (Pins/Murmeln), den Code zu erraten. Hätte der codebreaker 6 * 6 * 6 * 6 = 1.296 Versuche zur Verfügung,
wäre dies kein Problem, allerdings wird die Anzahl der Tests als Spielregel auf zwölf (manchmal weniger) begrenzt.

Als Responds auf ein Testmuster muss der codemaker zwei Informationen geben:

1.) Wieviele Symbole im Testmuster stehen an exakt der gleicher Stelle wie im Geheimmuster (im Falle vier, wäre das
Spiel für den codebreaker gewonnen) und
2.) wieviele Symbole (Pin-/Murmelfarben) sind sowohl im Geheim- als auch im Testmuster
vorhanden, allerdings nicht in übereinstimmender Position in der Reihe.

Die Programmieraufgabe bestehe nun darin, MasterMind interaktiv am PC zu simulieren, wobei der Computer als
codemaker fungiert, der zunächst per Zufallsgenerator das Geheimmuster erzeugt. Anschließend sind sukzessive
maximal zwölf Testmuster vom codebreaker (User) einzugeben und vom codemaker jeweils die zwei Fagen zu beantworten.


Anmerkung: MasterMind wurde auch von Mathematikern unter die Lupe genommen und bereits Mitte/Ende der 70er Jahre konnte
bewiesen werden, dass man es mit maximal fünf Testmustern lösen kann, sehr erstaunlich, oder? Daraufhin wurde
SuperMasterMind vorgeschlagen. Unterschied: Reihen mit fünf Symbolen und acht unterschiedlichen Pin-/Murmelfarben.

Wer MasterMind lediglich als schöne Spielerei ansieht, überlege bitte folgendes: Seit 1971 (release)
wurden bisher pro Jahr im Durchschnitt eine Million Spiele weltweit verkauft. Wärest Du der Erfinder und bekämest
als Lizenzgeber pro Exemplar 10 Cent, Du hättest finanziell ausgesorgt.
0 Lösungen
Die beste Darlehensart berechnen
Anfänger - Ruby von Exception - 04.06.2018 um 17:06 Uhr
Schreibe ein Programm welches folgende Parameter übergeben bekommt:
- Nominalzins p.a.
- Laufzeit (Jahre)
- Darlehen (€)

Berechne dann anhand dieser Parameter welche der drei folgenden Darlehensarten am besten für den Kreditnehmer ist:
- Fälligkeitsdarlehen
- Ratendarlehen
- Annuitätendarlehen

... und gib die Ergebnisse aus, auch inwiefern sie sich untereinander unterscheiden - jeder Cent zählt! ;)