Code Competition 01/2015: DNA Analyse
Code Competition 01/2015: DNA Analyse
Forscher verwundert: DNA neuer Spezies bereits sequenziert!
Aufgabenstellung
Die Aufgabe besteht darin, ein Programm zu schreiben, welches die zur Verfügung gestellten Sequenzen in Form von Textdateien einliest, nach bestimmten Kriterien analysiert und eine einfache Auswertung in Textform ausgibt.
Du musst keine perfekte Lösung einreichen und auch nicht alle Aufgaben lösen. Selbstverständlich erhöht eine vollständige Lösung Deine Gewinnchancen ungemein – genauso wie eine gute und nachvollziehbare Präsentation.
Für die Teilnahme am Wettbewerb musst Du mittels selbstgeschriebener Software 8 Aufgaben lösen.
Aufgaben
Nach dem wir nun wissen, womit wir es zu tun haben, kommen wir zu den eigentlichen Aufgaben.
Aufgabe 1
Aus welchen Buchstaben besteht eine Sequenz?
Tipp: Du brauchst nur die Buchstaben nennen, nicht die Häufigkeit.
Aufgabe 2
Wie oft kommt der Baustein [EEE] in einer beliebigen Sequenz vor?
Aufgabe 3
Ein bestimmter Baustein ist in jeder Sequenz vorhanden und kommt immer exakt 128 mal vor. Welcher Baustein ist das?
Aufgabe 4
Nenne alle Bausteine sowie deren Häufigkeit, die in jeder beliebigen Sequenz exakt gleich häufig vorkommen.
Aufgabe 5
Aus wievielen Bausteinen besteht jede Sequenz insgesamt?
Aufgabe 6
Aus wievielen Buchstaben kann ein Baustein mindest und höchstens bestehen?
Tipp: Beachte, dass manche Buchstaben mehrfach in einem Baustein vorkommen können, zähle diese daher mit.
Aufgabe 7
In jeder Sequenz gibt es exakt einen bestimmten Baustein, welcher das Geschlecht repräsentiert. Finde heraus, welcher Baustein das jeweils ist. Es ist nicht entscheidend, welcher Baustein davon eine ‘männliche’ und welcher eine ‘weibliche’ Sequenz darstellt, nenne nur die beiden Varianten.
Tipp: Die Länge der beiden Bausteine ist identisch.
Aufgabe 8
Die Häufigkeit, wie oft ein bestimmter Bausteine (hier A) in einer Sequenz vorkommt, ist zufällig. Die Häufigkeit eines weiteren bestimmten Bausteins (hier B) hängt von der Häufigkeit des Bausteins A ab. Alle Test-Sequenzen wurden mit einer festen minimalen sowie einer maximalen Häufigkeit des Bausteins A generiert. Finde heraus, für welche zwei Bausteine solch eine Beziehung gilt, sowie die Häufigkeit beider Bausteine. Nenne auch die minimale sowie die maximale Häufigkeit des Bausteins A.
Tipp: Je mehr unterschiedliche Sequenzen Du analysierst, desto näher kommst Du an die minimalen und maximalen Werte heran.
Beispiel für eine mögliche Lösung:
- Es gibt die Bausteine A und B.
- n(Baustein A) = Die Anzahl wie oft der Baustein vorkommt.
- n(B) = n(A) + 5
- Wobei n(A) eine Zahl zwischen 2 und 4 ist.
Downloads
In der Download-Box haben wir eine ZIP-Datei für Dich bereit. Darin findest Du 100 Text-Dateien, welche Du in Rahmen Deiner Lösung analysieren musst. Du musst nicht alle Dateien analysieren, man kommt auch schon mit einer beliebigen Datei zum Ziel (Ausnahme bildet Aufgabe 8). Edit: Dieser Programmierwettbewerb ist beendet. Deshalb ist kein Download mehr möglich.
Der Gewinner
Daniel Possienke
Hallo Daniel, Du bist der Gewinner der ersten Code Competition. Herzlichen Glückwusch! Stell Dich doch mal kurz vor.
Hallo, mein Name ist Daniel Possienke, ich bin 22 Jahre alt und wohne in der Woche in Paderborn und am Wochenende meistens in meiner Heimatstadt Lippstadt. Ich studiere jetzt im 6. Semester Informatik und arbeite schon seit Anfang des 2. Semester noch zusätzlich in dem Fachbereich der theoretischen Physik als Systemadministrator, wo ich die Rechnerbetreuung von ca. 20 Büros übernehme und auch alle vorhandenen Server verwalte (wie zum Beispiel den Webserver, Fileserver, TFTP Server, etc.).
Was hat Dich motiviert, an dem Wettbewerb teilzunehmen?
Meine größte Motivation, an dem Wettbewerb teilzunehmen, war es, etwas Neues kennenzulernen. Ich habe mich vorher noch nie mit dem Thema der DNA-Analyse beschäftigt und fand es direkt spannend, wie man an so eine Fragestellung herangeht, ohne direkt die Rechenleistung eines normalen Computers zu sprengen. Da das reine Informatikstudium in vielen Bereichen sehr theoretisch ist und an vielen Stellen auch keine praktischen Arbeiten angeboten werden, finde ich es auch interessant, meine Programmierkenntnisse immer mal wieder bei solchen Wettbewerben aufzufrischen und zu verbessern.
Ansonsten hat mich auch motiviert, dass sich die Teilnahme an solchen Wettbewerben bei späteren Bewerbungen gut macht. Da ich mich auch bei IT-Talents noch für eines der vielen IT-Stipendien bewerben möchte, dachte ich mir, dass sich die Teilnahme an dem Wettbewerb bestimmt auch dort positiv auswirken kann.
Wie bist Du an die Aufgabe herangegangen?
Ich habe mir zuerst überlegt, wie ich mein komplettes Programm strukturieren möchte. Dafür habe ich mir erstmal ein Klassendiagramm angefertigt und mir eine Architektur ausgesucht, in der ich das ganze gestaltet haben möchte. Dabei habe ich mir natürlich schon Gedanken gemacht, wie der konkrete Algorithmus arbeiten soll und wie ich die Bausteine am besten eindeutig identifizieren kann. Als ich dafür ein konkretes Konzept im Kopf hatte, habe ich mit der graphischen Benutzeroberfläche angefangen, um mir nachher erste Ergebnisse direkt anzeigen lassen zu können. Als der grobe Entwurf dafür fertig war, bin ich als nächstes an den eigentlichen Algorithmus herangegangen. Dafür habe ich mir ziemlich lange Gedanken gemacht, wann ein Baustein eigentlich eindeutig als dieser identifiziert werden kann. Am Ende bin ich dabei zum Schluss gekommen, dass ich dafür mehrere Algorithmen brauchte, die ich mehrmals über jede einzelne Sequenz drüber laufen lassen musste, um immer weitere Bausteine zu finden, bis am Ende die komplette Sequenz nur noch aus eindeutig identifizierten Bausteinen bestand.
Erst jetzt, nachdem eigentlich schon alle Bausteine in jeder Sequenz bekannt waren, habe ich mir Gedanken über die eigentlichen Aufgaben gemacht. Hatte man alle Informationen über die verschiedenen Sequenzen, war es jetzt ein Leichtes, die Aufgaben direkt zu beantworten.
Unabhängig vom Wettbewerb: Wie stellst Du Dir Deine berufliche Perspektive vor?
Über meine berufliche Perspektive habe ich mir bis jetzt noch nicht viele Gedanken gemacht. Als erstes wollte ich im 7. Semester meinen Bachelor beenden und danach noch meinen Master in Informatik machen. Ergibt sich allerdings schon nach meinem Bachelor-Abschluss eine gute berufliche Möglichkeit, lege ich vielleicht auch erst ein paar Jahre Pause ein, bevor ich meinen Master mache, oder mache diesen direkt dual.
Vielen Dank, Daniel, für das Interview und alles Gute für die Zukunft!
Additional Details
Weiterleitungsevent - No
Partnerunternehmen -
Sponsor der Förderung -
Top-Event (Bezahlevent) - No
Talentpool-ID -