3150 |
Erb |
Kreuzung von Wunderblumen |
Kategorie: | Biologie |
Klasse: | leicht |
Eingabe: | siehe Spezifikation |
Ausgabe: | siehe Spezifikation |
|
Abzugebende Files: Erb.txt, Erb.java, *.java , 169.txt, 300.txt |
Kurzbeschreibung:
Zwei Strings, die die Erbanlagen von Wunderblumen beinhalten sollen, werden eingelesen; die Erbanlagen der Kreuzung
dieser Wunderblumen werden ermittelt.
Allgemeine Hinweise:
-
Sie haben Lösungen (und Spezifikationen) aus der 1. Runde von anderen Studenten erhalten,
die Ihnen Ihre Aufgabe erleichtern sollen. Wählen Sie eine Lösung aus, die Ihnen hinsichtlich Lesbarkeit, Programmierstil,
Korrektheit und Verwendbarkeit am besten erscheint. Verwenden Sie
diese Lösung in Ihrem Programm. Sie können auch die anderen Lösungen einsetzen.
- Merken Sie sich die Lösungsnummer des ausgewählten Beispieles für die Abgabe. Diese Nummer müssen Sie bei der Abgabe angeben. Geben Sie nur jene Lösungsnummer an, die Sie auch wirklich ausgewählt haben.
-
Erstellen Sie für alle Lösungen zu diesem Beispiel (siehe: "Abzugebende Files") ein File mit dem Namen <number>.txt. und schreiben in dieses File ein Review (=Kritik) zu der Lösung. Diese Reviews erhalten dann die TeilnehmerIn von dem/der die Lösung stammt. Beachten Sie das bitte bei der Form Ihrer Kritik.
-
Sie können für die Lösung der gewählten Aufgabe eine oder mehrere Klassen programmieren. Die Klasse Erb.java muß aber die Methode main enthalten. Weiters müssen alle abgegebenen Klassenfiles in demselben Verzeichnis vorliegen, Pfadangaben sind nicht gestattet.
-
Achten Sie auf die korrekten Konventionen der Groß/Kleinschreibung bei
Klassen und Methoden!
[Wir tun das jetzt auch :-)]
-
Falls Ihre Lösung einen Exit Code zurueckliefert, so
achten Sie darauf, dass dieser den Wert 0 hat.
Bei allen anderen Werten können Probleme bei der Bewertung und in weiterer
Folge unbeabsichtigte Punkteabzüge auftreten.
- Ihre Lösung darf nur genau jene Ausgabedaten liefern, die in der
Spezifikation verlangt werden. Die Ausgaben Ihrer Lösung werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
- Testen Sie Ihre Lösung vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihrer Lösung mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihre Lösung auch mit anderen Eingabedaten.
-
Verwenden Sie nur das von uns mitgelieferten Package eprog
für Ihre Ein/Ausgaben. Klassen, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.3.1_1) verwenden, können von uns
nicht getestet werden und werden daher mit 0 Punkten bewertet!
- Schreiben Sie Ihre Klasse(n) möglichst allgemein und kommentieren
Sie diese gut. Erstellen Sie weiters eine übersichtliche und
verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen,
daß andere Studenten in der nächsten Runde Ihre Lösung
wählen und Ihnen damit zu Zusatzpunkten verhelfen!
Aufgabenstellung:
In Ihrem Programm sollen zwei verschieden- (oder auch gleich-) färbigblühende
Wunderblumen gekreuzt werden. Eingegeben werden nur die Anfangsbuchstaben der
Farbanlage der beiden Chromosome einer Blume. Als gültige Eingabe sind sowohl
Großbuchstaben als auch Kleinbuchstaben erlaubt.
Je nach Eingabe des Anwenders kann es sich um einen "intermediaeren Erbgang"
(d.h. alle Farben sind gleichwertig) oder um einen "dominanten Erbgang" (d.h.
eine Farbe ist dominant) handeln, wobei dominante Farben in Großbuchstaben
eingegeben werden müssen, während fuer gleichwertige Farben die entsprechenden
Anfangsbuchstaben in Kleinbuchstaben vorgesehen sind.
Als Farben sind erlaubt: ROT(r), BLAU(b) und GELB(g) sowie deren Farbkombinationen: VIOLETT(rb bzw. br),
ORANGE(rg bzw. gr), GRUEN(gb bzw. bg).
Es wird jedes Chromosom einer Wunderblume mit denen der anderen Blume kombiniert, wobei auf die richtige Reihenfolge
geachtet werden muß. (Das erste
Chromosom der ersten Blume muß zuerst mit dem ersten Chromosom der zweiten und
dann mit dem zweiten Chromosom der zweiten Blume kombiniert werden, anschließend muß das zweite
Chromosom der ersten Blume mit dem ersten der zweiten Blume
und zuletzt das zweite der ersten Blume mit dem zweiten der zweiten Blume
kombiniert werden.)
Sie sollen nun folgendes unterscheiden:
Werden nur die reinen Grundfarben rot, blau oder gelb eingegeben, müssen Sie
sowohl das 1. als auch das 2. Mendelsche Gesetz anwenden; d.h. Sie kombinieren
zuerst die Eingabe richtig, und kombinieren von den vier (gleichen) erhaltenen
Blumen wiederum zwei miteinander (2. Mendelsches G.) (und zwar die erste und
zweite Wunderblume!). Das Ergebnis soll(en) nur die Blume(n) nach Anwendung
beider Gesetze sein! Weiters schreiben Sie "1 2" fuer 1. und 2. Mendelsches
Gesetz.
Handelt es sich bei der Eingabe nicht in beiden Fällen um reine Grundfarben,
sollen Sie nur das 2. Mendelsche Gesetz verwenden und dies anschreiben ("2").
Zusätzlich können dominante Farben in der Eingabe vorkommen. Es handelt sich
nur um dominante Farben (und damit um richtige Eingaben), wenn bei gemischtfärbigen Blumen der Buchstabe der dominanten Farbe entweder an erster Stelle
gefolgt von einem anderen Kleinbuchstaben oder an zweiter Stelle mit vorangehendem anderen Kleinbuchstaben steht (z. B.: Rb, rB, ... aber nicht: BR,...);
(Bei reinen Grundfarben kann die "Dominanz" entweder in beiden Großbuchstaben
oder auch nur in einem ausgedrueckt sein (z. B.: RR, GG, Rr, gG...).
Wurde ein dominanter Erbgang durchgefuehrt, geben Sie bei der Ausgabe "d" aus,
ansonsten "i" fuer intermediärer Erbgang. Bei der Ausgabe nach einem dominantem Erbgang sollen nun die Buchstabenkombinationen, die noch dominante Farben
(d.h. Großbuchstaben) enthalten, in die entsprechenden richtigen Kleinbuchstabenkombinationen umgewandelt werden. (z. B.: BG -> bg, Rb -> rr, Gg -> gg,
Br -> bb).
Allgemein gilt, daß Blumen mit genau gleichen Farben nur einmal ausgegeben
werden sollen (Und zwar an der ersten Stelle, an der sie auftreten, und in
der dort ermittelten Schreibweise), daß jedoch eine Zahl vor der Buchstabenkombination die Gesamtanzahl der identen Blumen angeben muß. (ACHTUNG: gb
entspricht bg ! Daher: statt "gg gb bg bb" ist "gg 2gb bb" auszugeben!)
Eingabedaten:
Lesen Sie zwei Strings ein, die jeweils die Erbanlage einer Wunderblume beschreiben sollen. Diese Strings müssen in Groß- oder Kleinbuchstaben eingegeben werden (mit der oben geschriebenen Bedeutung). Es sind nur solche
Strings zulässig, die aus genau zwei der folgenden Buchstaben bestehen: r, g,
b, R, G, B. Dominante Farben müssen an der ersten Stelle im String stehen.
Ausgabedaten:
Bei korrekten Eingabedaten soll Ihr Programm die Erbanlagen der neuen Wunderblumen in der oben genannten Reihenfolge ausgeben. Gleiche Wunderblumen sollen
nur einmal vorkommen und die Häufigkeit durch eine direkt vorangestellte
Ziffer markiert werden.
Weiters soll die Ziffer 1 ausgegeben werden, wenn das erste Mendelsche Gesetz
angewendet wurde und 2, wenn das zweite Mendelsche Gesetz angewendet wurde.
Schließlich soll "i" ausgegeben werden, wenn es sich um einen intermediären
Erbgang handelt und "d", wenn es ein dominanter Erbgang ist.
Trennen Sie die einzelnen Teile der Ausgabe durch jeweils ein Leerzeichen und
geben Sie am Ende einen Zeilenvorschub aus.
Fehlerbehandlung:
Bei ungültigen Eingaben geben Sie die Meldung "FALSCHE EINGABE", gefolgt von
einem Zeilenvorschub aus.
Lesen Sie aber auf jeden Fall beide Strings ein, auch wenn schon der erste
fehlerhaft ist.
Beispiele:
Ausgabedaten
|
2gr 2gg 2 d
bb 2bg gg 1 2 i
|
Testen:
Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und
müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie
bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung
können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei
erzeugen:
java Erb < Erb.i1 > Erb.out1
Das erzeugte File Erb.out1 können Sie dann mit dem mitgelieferten Outputfile Erb.o1 vergleichen.