Ausgehend von einer Sequenz der Basen Adenin, Cytosin, Guanin und Thymin (kodiert als ACGT
) müssen Sie eine ASCII-Art-Darstellung eines entsprechenden DNA-Doppelstrangs erstellen.
Der Strang wird sich vertikal erstrecken. Der linke Strang ist der, den Sie als Eingabe erhalten. Der rechte Strang wird seine Ergänzung sein. Für diejenigen, die nicht mit DNA vertraut sind, A
ist gepaart mit T
und C
ist gepaart mit G
. Darüber hinaus gibt es auf beiden Seiten des Doppelstrangs eine Grundgerüststruktur, die für alle Basen identisch ist. Wenn Sie also die Eingabe erhalten TAGCAT
würden, wäre die großräumige Struktur der ASCII-Grafik:
BTAB
BATB
BGCB
BCGB
BATB
BTAB
wo B
repräsentiert das Rückgrat. Jetzt steht jeder dieser Buchstaben für ein ganzes Molekül und Sie müssen die tatsächliche Molekülstruktur reproduzieren .
Die Grundlagen
Verwenden Sie die folgenden Vorlagen 1 für jede der Basen (jede wird zusammen mit ihrer komplementären Base und den beiden Grundgerüstmolekülen angezeigt):
1 Dank an Peter Taylor für die Unterstützung beim ASCII-Layout.
Adenin
O O
\\ /
P
/ \
--O O
/ |
< N NH2 ..... O * |
\ // \ / \\ / |
+--O // ---- ---- |
| \ | // \\ / \\ |
| >--N--< N ...... HN > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| // \ |
| O O--+
| \
| >
| /
O O--
\ /
P
/ \\
O O
Cytosin
O O
\\ /
P
/ \
--O O NH2 ..... O N
/ / \\ / \\ |
< ---- ---- \\ ---+
\ // \\ / \\ | / |
+--O < N ...... HN >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ / \
+--- O ..... H2N >
| /
O O--
\ /
P
/ \\
O O
Guanin
O O
\\ /
P
/ \
--O O
/ |
< N O ..... H2N |
\ // \ // \ |
+--O // ---- ---- |
| \ | // \ // \\ |
| >--N--< NH ...... N > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| \ // \ |
| NH2 ..... O O--+
| \
| >
| /
O O--
\ /
P
/ \\
O O
Thymin
O O
\\ /
P
/ \
--O O * O ..... H2N N
/ \ // \ / \\ |
< ---- ---- \\ ---+
\ // \ // \\ | / |
+--O < NH ...... N >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ \
+--- O >
| /
O O--
\ /
P
/ \\
O O
Aufbau des Doppelstrangs
Diese wiederholen sich vertikal, so dass es keine Lücken in der Backbone-Struktur gibt. Dies bedeutet, dass sich die Begrenzungsrahmen dieser vier Vorlagen überlappen.
Das untere Ende des linken und oberen Endes des rechten Backbones wird mit dem O
eines verbunden OH
.
Das freie O
Ende am oberen Ende des linken und unteren Endes des rechten Rückgrats hat eine freie Bindung nach innen, angezeigt durch --
.
Beispiel ATG
O O--
\\ /
P
/ \
--O O OH
/ |
< N NH2 ..... O * |
\ // \ / \\ / |
+--O // ---- ---- |
| \ | // \\ / \\ |
| >--N--< N ...... HN > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| // \ |
| O O--+
| \
| >
| /
O O O O--
\\ / \ /
P P
/ \ / \\
--O O * O ..... H2N N O O
/ \ // \ / \\ |
< ---- ---- \\ ---+
\ // \ // \\ | / |
+--O < NH ...... N >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ \
+--- O >
| /
O O O O--
\\ / \ /
P P
/ \ / \\
--O O O O
/ |
< N O ..... H2N |
\ // \ // \ |
+--O // ---- ---- |
| \ | // \ // \\ |
| >--N--< NH ...... N > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| \ // \ |
| NH2 ..... O O--+
| \
| >
| /
OH O O--
\ /
P
/ \\
--O O
Mehr Beispiele:
Hier sind die MD5-Hashes mehrerer weiterer Beispiele (ohne führende oder nachfolgende Leerzeichen):
ATG 2e4a906c44a96fe84134bf4346adf11c (this is the above example)
C e3648b8960967463784818c3eee57246
TTT 6028a90b05775905ef1a00e7a45463c5
TAGCAT 3b834d2b7b9adc4113ffabd52d354c41
GATTACA a19463f965c641d071e07da59d64a418
Lassen Sie mich wissen, wenn Sie denken, dass eines davon falsch ist.
Wenn Sie nicht sicher sind, wie Sie die Hashes Ihrer Ergebnisse zuverlässig überprüfen können, probieren Sie diesen Online-MD5-Generator aus . Stellen Sie sicher, dass kein Zeilenumbruch erfolgt.
Weitere Hinweise
Sie können nach Belieben führende oder nachfolgende Leerzeichen verwenden. Wenn Sie führende Leerzeichen verwenden, muss die Anzahl in jeder Zeile gleich sein.
Wenn ich beim Kopieren der chemischen Struktur Fehler gemacht habe, sind die obigen Schablonen für die Zwecke dieser Herausforderung immer noch normativ.
Sie können eine Funktion oder ein Programm schreiben, das die Eingabe nimmt Zeichenfolge als Parameter, Befehlszeilenargument über STDIN oder erwartet , dass sie in einer Variablen gespeichert werden. Schreiben Sie die resultierende ASCII-Grafik in STDOUT.
Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes).
quelle
TTT
weil der String eine nachgestellte Newline enthielt.ATG
Ausgabe kopiert und eine andere Prüfsumme erhalten. Und unterschiedliche Betriebssysteme erhalten unterschiedliche Prüfsummen. Sie können diese mit versuchenunix2dos, unix2mac...
.Digest::MD5.hexdigest()
mit Unix-Linienenden. Außerdem hat keiner von ihnen eine nachgestellte neue Zeile. Fügen Sie es hier ein - dieser Online-MD5-Generator stimmt mit meinen Hashes überein.Antworten:
Perl 5 (510)
Perl ist in Ordnung mit Null-Bytes. Verwenden Sie daher den dafür vorgesehenen Hexdump.
Dies funktioniert, indem verschiedene Teile des DNA-Strangs ausgedruckt werden, wobei Teile eine oder mehrere Zeilen sind. Ein O oder H wird an die oberste Zeile jeder Komponente angehängt, um eine gültige Ausgabe sicherzustellen.
Angenommen, die Eingabe erfolgt in der Variablen
$_
.Golf Version:
Ungolfed-Version:
(-65+ord$&)%15
bequem ergibtA=>0, C=>2, T=>4, G=>6
ist ideal, da das Programm für jeden Buchstaben zwei Elemente im Array benötigt.Das Mittelteil, das Oberteil und das Unterteil werden in Indizes gespeichert
8-10
in dieser Reihenfolge .Teileliste (verwendet @ anstelle von \, um eine Menge Flucht zu vermeiden):
Hexdump:
quelle
s/@/\\/g
macht genau das vor dem Drucken. Die Liste der Teile dient lediglich der Veranschaulichung der komprimierten Daten.Python 3, 1008
Dekompilieren Sie zu kleineren Blöcken und komprimieren Sie sie dann mit Pythons Zlib und codieren Sie die Binärdaten mit der asii85-Codierung. Vor dem Komprimieren beträgt die Größe 629 und nach dem Komprimieren und Codieren 260.
Kleinere Blöcke:
Das Programm liest aus STDIN. Am Ende jeder Zeile können Leerzeichen und am Ende Leerzeichen stehen.
Prüfsumme stimmt mit diesem Skript überein
Und hier ist die ungolfed Version:
quelle