Erklärung zu diesem Forum

ivegotmail

Member of Honour
#1
In diesem Forum werden in unregelmäßigen Abständen neue Programmieraufgaben gestellt, die von euch gelöst werden sollen.

Die Aufgaben werden meist so gestellt sein, dass sie mit einer beliebigen Programmiersprache gelöst werden können. Das heißt wir programmieren hier keine 3D-Engines, sondern konzentrieren uns eher auf mathematische oder ähnliche Probleme die euer Hirn etwas fordern.
Die Aufgaben sind in 3 Schwierigkeiststufen unterteilt, wobei Schwierigkeit 1 für leichte, Schwierigkeit 2 für mittlere und Schwierigkeit 3 für schwere Aufgaben stehen.

Im übrigen geht es darum den Quelltext eurer Lösung zu veröffentlichen. Gerne werden auch Binärdateien angenommen, aber Quelltext ist Pflicht, schließlich soll das ganze auch für andere User einen Sinn ergeben.
Beim Posten des Quelltextes verwendet bitte den Spoiler- mit Code-Tag:

Code:
 .... Quellcode ...
Bei größeren bzw umfangreicheren Quelltexten verwendet stattdessen bitte den Anhang.

Aus Gründen der Ordnung können nur Moderatoren und User mit dem Rang "coder" neue Themen bzw. Aufgaben in diesem Forum erstellen. Wenn ihr also Ideen für mögliche Programmieraufgaben habt, könnt ihr diese in diesem Thread posten oder ihr wendet euch per PN an Xalon, CDW oder an mich.
Sonstige Ideen, Beschwerden oder Fragen bitte in diesen Thread oder per PM.

Viel Spaß beim Coden! ;)
 
#2
Ihr kennt doch bestimmt diese Buchstabenraster, in denen man Wörter suchen muss.

Als Programmieraufgabe könnte man ein Programm schreiben, dass genau diese Raster erstellt, indem es möglichst viele Wörter aus einer Wortliste sinnvoll miteinander verbindet (also so, dass sie sich auch noch möglichst oft schneiden, sonst wäre das Ganze ja witzlos)
Die Wörter können waagerecht, senkrecht (und diagonal) versteckt sein.

Außerdem könnte man noch eine Routine einfügen, die diese Rätsel auch (anhand einer Wortliste) löst.

Wer das ganze nicht ganz verstanden hat, kann sich auch die Wikipedia-Seite Scrabble durchlesen.
 

Stein

New member
#3
Ich habe einen Vorschlag für eine Programmieraufgabe, die auch ein wenig Anwendung findet:

Für Wörterbuchattacken findet man im Internet tausende Wörterlisten, die alle mehr oder weniger vollständig sind. Die Aufgabe ist es jetzt aus 2 Listen eine neue zumachen, die sich aber nicht überschneidet. Ich denke das es nicht allzu schwer ist(deswegeb Stufe 1), aber für Anfänger ein ganz gute Übung zum schreiben von struckturierten Programmen.

gruß stein
 

bad_alloc

Member of Honour
#6
Noch ein vorschlag der im IRC aufkam:
ein programm das text in 1337 umwandelt, sprich aus eliten wird
-> 31i73|\|
oder nur 31it3n

fände ich mal witzig und relativ einfach zu lösen
 
#7
Original von Wolfy
Noch ein vorschlag der im IRC aufkam:
ein programm das text in 1337 umwandelt, sprich aus eliten wird
-> 31i73|\|
oder nur 31it3n

fände ich mal witzig und relativ einfach zu lösen
Könnte man sich einfach bei den IRSSI-Plugins den Perl-Code anschauen und schon ist die Aufgabe gelöst. ;)
 
#9
Zeichenprogramm für Flächen

Hi, jeder kennt natürlich Programme die Flächen von Objekten berechnen.

Hier jetzt eine etwas erweiterte Funktion davon :D

Bei meiner Idee soll die Flächenberechnung in Java mittels Zeichenprogramm berechnet werden. Überwiegend ist hier an die Flächenberechnung von Kurven gedacht, da ich das ziemlich tricky finde. Sollen jedoch nur einfach zusammenhängende Kurven sein also keine Überschneidungen etc.

Vorraussetzungen sind, das der Anwender die Kurve die gezeichnet werden soll mit Mausdruck und Ziehen erfasst und den Integrationsintervall ebenfalls per Mausclick bestimmt oder markiert.

Wenn möglich in Java :D hab da bissle selber angefangen gehabt und wollts wieder mal auffrischen da es neben den fertig programmierten lag und eben nicht fertig war :D
Ich denke das könnte man schon in die Kategorie "mittel" oder sogar "schwer" einstufen :)

MfG fsueer
 
Zuletzt bearbeitet:
#10
Verschlüsselung

Hi,

ich hätte da mal einen Vorschlag für eine neue Programmieraufgabe.
Es soll mal wieder um die Verschlüsselung von Klartext gehen.
Dieser soll eingelesen werden und dann verschlüsselt wieder ausgegeben werden.
Die Verschlüsselungsmethode ist eine relativ einfache Handmethode(Die Buchstabenweise Addition).
z.B.: A = 1 , B = 2, C = 3, D=4, E = 5, F = 6, G = 7, H = 8, ...

Klartext = A B C D
Schlüssel = E F G H

A+E=F
1+5=6
B+F=H
2+6=8

Verschlüsseltertext = FHJL

siehe -> One-Time-Pad
(Bei Beispiele)

Gruß Foxtrot92
 
Zuletzt bearbeitet:

CDW

Moderator
Mitarbeiter
#11
das dürfte durch http://www.hackerboard.de/programmieraufgaben/12676-kleines-verschluesselungsprogramm.html abgedeckt sein ;)
Aufgabe ist es ein kleines Verschlüsselugsprogramm zu coden, das einfache Verschlüsselungsalgorithmen wie den Caesarcode und Vigenere unterstützt.
http://de.wikipedia.org/wiki/Vigen%C3%A8re-Chiffre hat gesagt.:
Der Spezialfall, dass der Schlüssel genauso lang ist wie der zu verschlüsselnde Text, heißt Vernam-Verschlüsselung, wobei der Schlüssel XOR mit dem Klartext verknüpft wird. Handelt es sich bei dem Schlüssel um eine zufällige Folge von Buchstaben, und wird der Schlüssel nur ein einziges Mal verwendet, nennt man das Verfahren auch One-Time-Pad
 
#12
Instant Messenger

Hi,

eine schöne Aufgabe wäre auch ein kleines Chat-Programm zu schreiben.
Und zwar so das alle Clients in einen Channel schreiben und lesen können.
Die Server Applikation, die auch geschrieben werden muss, soll quasi den Channel erstellen und die Nachrichten zu den anderen Clients zustellen. Ähnlich wie ein IRC Chat aber rudimentärer.
 

CDW

Moderator
Mitarbeiter
#13
eine schöne Aufgabe wäre auch ein kleines Chat-Programm zu schreiben.
Es spricht nichts dagegen. Nur die Anforderungen für die minimale Grundfunktionalität könnten etwas detailreicher sein (ob z.B private Nachrichten, "ban/ignore" und unterschiedliche Channelerstellung unterstützt werden sollen) ;).
 
#14
Chat-Messenger

Hi,

Ich denke es würde reichen das alle User/Clients auf einen Channel schreiben. (Vorerst!)
Und dann je nach belieben etwas weiter ausbauen z.B. ingore/ban, querys, eigene Channelerstellung usw. Das wichtigste ist aber das es 100%ig funktioniert zu schreiben und gleichzeitig die Nachrichten zu bekommen und das ist zugleich auch das schwerste an der ganze Geschichte. Und es muss nicht mit GUI sein, also ein CLI Anwendung reicht völlig aus.

Nochmal Kurz: Also es muss vorerst kein Chat sein der Befehle hat um Querys zu öffnen oder jemanden zu Bannen oder irgendwelche anderen Funktionen. Es soll in erster Linie funktionieren sich gegenseitig zu schreiben in einen Channel. Dazu wird ein Multiplexende Server Applikation benötigt.
 
#15
Kleines Ideechen

Hallo alle zusammen.
Ich hätte da ne kleine Wettbewerbsidee, die sowohl für Aanfänger, als auch für Fortgeschrittene interessant sein könnte.
Es geht dabei darum, "Eine Persönlichkeit deinem PC hinzuzufügen".

Das war etwas blöd erklärt.

Um es zu verdeutlichen: Man schreibt quasi einen Chatbot, mit dem du dich unterhalten kannst. Als Bonusfunktion kannst du ihn aber darum "bitten" (ihn auffordern) bestimmte Dinge zu tun.
Beispielsweise eine Internetseite aufzurufen, gewisse Funktionen des PCs zu überprüfen, eine Message Box mit Inhalt X zu öffnen, oder, oder, oder.

Es hätte also quasi eine Eingabekonsole werden müssen, welche jedoch auch zu schlichten Konversationen fähig sein sollte und so menschlich wie nur möglich zu antworten hat.

:) Ich persönlich fand die Idee mal abwechslungsreich, da jeder "Programmierer" hier mit seinen eigenen Erfahrungen, Wissen und Können herum experimentieren kann.
Einige werden sich Beispielsweise besonders darauf konzentrieren den Teil auszubauen, in dem du chattest, andere werden es auf die Ausführ-Möglichkeiten absehen.

Der Gewinner wäre der, dessen Programm so umfangreich wie nur möglich funktioniert. :)

(Falls dieser Wettbewerb drangenommen werden sollte, würd ich im übrigen ebenfalls gerne etwas dazu "basteln")

Liebe Grüße an alle hier von eurer xxxtheneoxxx
 
Zuletzt bearbeitet:
#16
Um es zu verdeutlichen: Man schreibt quasi einen Chatbot, mit dem du dich unterhalten kannst. Als Bonusfunktion kannst du ihn aber darum "bitten" (ihn auffordern) bestimmte Dinge zu tun.
Beispielsweise eine Internetseite aufzurufen, gewisse Funktionen des PCs zu überprüfen, eine Message Box mit Inhalt X zu öffnen, oder, oder, oder.
Nimm dir einen beliebigen RAT/Trojaner und füge eine Chat-KI - List Of Chat Bots - Artificial Intelligence - hinzu.
 
#19
Validierung einer E-Mail Adresse

Mein Vorschlag für eine Programmieraufgabe ist ein Programm welches in der Lage ist eine E-Mail Adresse zu validieren. Allerdings ohne die Verwendung von regulären Ausdrücken und deren Verarbeitung! Es sollen also auch keine Bibliotheken für die Verarbeitung regulärer Ausdrücke verwendet werden, auch keine sonstigen Mittel die die ein oder andere Programmiersprache bereitstellt (z.B. Perl).

Tipp zum lösen der Aufgabe: Mit Hilfe eines endlichen (deterministischen) Automaten. Dieser wird dann in der jeweiligen Programmiersprache umgesetzt.

Die Aufgabe oben hat den Vorteil, das wir einmal Programmiersprachen unabhängig sind und zum andern kann man auch etwas lernen, weil wir Elemente der theoretischen Informatik enthalten haben. Was ist ein endlicher Automat? Wie kann man ihn (grafisch) beschreiben? Wie kann man ihn programmiertechnisch umsetzen?

Um den Schwierigkeitsgrad zu erhöhen kann man auch ein Programm schreiben welches (wer will auch beides) eine IP-Adresse validieren kann.
Hier sollte man das ganze erst mit Hilfe eines nichtdeterministischen endlichen Automaten (NEA) beschreiben. Und dann in einen deterministischen endlichen Automat umformen. Den man dann Programmieren kann...

TIPP: Potenzmengenverfahren für das umwandeln von NEA in DEA.

Den NEA müsste man auch sofort programmieren können, allerdings unter Verwendung von Threads für die parallele Umsetzung...

Mit freundlichen Grüßen

Christian
 
Oben