Das Ziel einer Rosetta Stone Challenge ist es, Lösungen in möglichst vielen Sprachen zu schreiben. Zeigen Sie Ihre Programmier-Mehrsprachigkeit!
Die Herausforderung
Ihre Herausforderung besteht darin, ein Programm zu implementieren, das einige Gene mithilfe von Überkreuzungsfrequenzen in so vielen Programmiersprachen wie möglich abbildet . Sie dürfen jede Art von Standardbibliotheksfunktion verwenden, über die Ihre Sprache verfügt, da dies meistens eine Sprachpräsentation ist.
Was ist "Genkartierung"?
Bei der Genkartierung wird die relative Position von Genen auf Chromosomen lokalisiert. Dies erfolgt durch Messen der Überkreuzungshäufigkeit von Genpaaren, die dem Prozentsatz der Nachkommen entspricht, bei denen das Paar nicht zusammen vererbt wird. Die Entfernung wird in Karteneinheiten gemessen , wobei eine Karteneinheit einem Prozent der Überfahrt entspricht. Wenn beispielsweise die Gene C & D eine Überkreuzungsfrequenz von 11% haben, ist Gen C ein Abstand von 11 Karteneinheiten von Gen D entfernt.
Die Genkartierung wird mit mehreren Genpaaren durchgeführt, um deren relative Reihenfolge zu bestimmen. Die Daten (A,B,12) (D,B,7) (A,D,5) (D,H,2) (H,B,9)
erzeugen beispielsweise die folgende Karte:
A..H.D......B
Möglicherweise haben Sie bemerkt, dass dies B......D.H..A
auch eine gültige Karte ist. Dies ist wahr, weil es nicht möglich ist, zwischen Spiegelgegensätzen zu unterscheiden. Ihr Programm kann auswählen, welches ausgegeben werden soll. Obwohl die Eingabe möglicherweise nicht jedes mögliche Paar enthält, gibt es immer genügend Informationen, um die gesamte Karte zu rekonstruieren (es werden also nie mehr als 2 gültige Ausgaben vorhanden sein). Außerdem funktionieren die Zahlen immer (im Gegensatz zur tatsächlichen Biologie), was bedeutet, dass Sie keine Sachen wie haben (A,B,3) (B,C,4) (A,C,13)
.
Eingang
Die Eingabe beginnt mit einer Zahl, n
gefolgt von einer Liste von Genen (Großbuchstaben). Es wird dann n
Drillinge von Daten geben. Jeder Satz besteht aus einem Paar von Genen und deren Überkreuzungsfrequenz (Entfernung).
3,P,H,I
P,H,3
H,I,1
P,I,4
7,A,B,G,Q,U
B,Q,4
A,B,10
G,U,13
Q,U,10
A,G,9
G,Q,3
A,Q,6
Die Eingabe ist nicht starr definiert, da verschiedene Sprachen möglicherweise Einschränkungen hinsichtlich der Machbarkeit aufweisen. Beispielsweise können Sie die Trennzeichen in andere Zeichen als Kommas und Zeilenumbrüche ändern. Die Formatierung der Eingabe liegt weitgehend bei Ihnen.
Ausgabe
Die Ausgabe wird eine Wiedergabe der Genkarte sein. Es besteht aus den Genen (Großbuchstaben), die durch Punkte voneinander beabstandet sind, so dass die Entfernungen genau dargestellt werden. Hier sind die Ausgaben für die obigen Beispiele.
P..HI *or* IH..P
BG..Q.....A...U *or* U...A.....Q..GB
Dies ist auch keine völlig starre Anforderung. Sie können beispielsweise etwas anderes als Punkte verwenden, z. B. Kommas oder Leerzeichen.
Das objektive Gewinnkriterium
Ein objektives Gewinnkriterium ist hier: Jede Sprache ist ein separater Wettbewerb darüber, wer den kürzesten Beitrag schreiben kann, aber der Gesamtsieger wäre die Person, die die meisten dieser Unterwettbewerbe gewinnt. Dies bedeutet, dass eine Person, die in vielen ungewöhnlichen Sprachen antwortet, einen Vorteil erzielen kann. Code-Golf ist meistens ein Tiebreaker, wenn es in einer Sprache mehr als eine Lösung gibt: Die Person mit dem kürzesten Programm erhält eine Gutschrift für diese Sprache.
Regeln, Einschränkungen und Hinweise
Ihr Programm kann in jeder Sprache geschrieben werden, die vor dem 20. Dezember 2013 existierte. Ich muss mich auch auf die Community verlassen, um einige Antworten zu validieren, die in einigen der ungewöhnlicheren / esoterischeren Sprachen geschrieben wurden, da ich wahrscheinlich nicht testen kann Sie.
Aktuelle Rangliste
Dieser Abschnitt wird regelmäßig aktualisiert, um die Anzahl der Sprachen und die jeweils führenden Personen anzuzeigen.
- AutoHotkey (632) - Avi
- dj (579) - rubik
Aktuelle Benutzerrankings
- Avi (1): AutoHotkey (632)
- Rubik (1): DJ (579)
quelle
n
, sondern vor allem die Grenzen für die Überkreuzungsfrequenz (Distanz). Können wir davon ausgehen, dass es immer weniger sein wird als1000
?Antworten:
AutoHotkey (632)
Der Code kann verkürzt werden, indem alle Variablen in 1 Zeichen umbenannt werden. Dann sollten es ungefähr 610 Zeichen sein.
Testfälle
quelle
Python 311
Mein erster Code-Golf: D.
(Ich bin mir nicht sicher mit der Zählung, ich poste es einfach online in einer Zeichenanzahl)
Die Idee des Algorithmus ist ziemlich schlecht, aber kurz. Versuchen Sie zufällig alle Positionen für die Symbole, bis sie alle Einschränkungen erfüllen. Die Eingabe erfolgt beispielsweise mit Leerzeichen
Drücken Sie danach STRG + D in der Konsole, um das Lesen zu beenden.
Hier ist der Originalcode, der immer noch ',' als Trennzeichen verwendet.
quelle
dg -
717579 BytesEin Python kommt an.
Beispiele:
quelle
quelle