Übungen / Aufgaben zu Objective-C

0 Lösungen
Goldener-Schnitt-Konstante mit beliebiger Genauigkeit berechnen
Anfänger - Objective-C 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 - Objective-C 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 - Objective-C 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 - Objective-C 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 - Objective-C 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 - Objective-C 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 - Objective-C 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 - Objective-C 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 - Objective-C 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 - Objective-C 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
Array Vorkommen programmieren
Anfänger - Objective-C von Bryan - 31.10.2018 um 20:20 Uhr
Hallo Zusammen

Kann Jemand von Euch mir da weiter helfen?

Fragestellung des Vorkommen.

Gegeben ist ein Array zum Beispiel mit Zahlen als Werten:
{2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14}
Schreiben Sie ein Programm, das von einem Array bestehend aus Zahlen prüft, wie viele dieser
Zahlen durch 3 teilbar sind.
Zudem sollen am Schluss die entsprechenden Zahlen ausgegeben werden. Das Programm soll für
beliebige Arrays funktionieren.

Vielen Dank für eure Lösung
0 Lösungen
Objekterkennung in einem Netz mit hexagonalen Zellen (hex-CCL)
Fortgeschrittener - Objective-C 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ß!