Ihre Aufgabe ist es, eine Folge von Zeichen (die Musik) als Eingabe (in einer Funktion oder einem Programm) zu nehmen und die Musik so auszudrucken (oder zurückzugeben), wie es in einer Spieluhr aussehen würde.
Sie erhalten nur die Zeichen ABCDEFG.()
als Eingabe, und die Eingabe wird niemals leer sein. Sie können die Buchstaben auch in Kleinbuchstaben erhalten, wenn Sie dies wünschen.
Dies ist eine leere Spieluhr mit der Länge 3:
.......
.......
.......
Wie Sie sehen, sind die Zeilen 7 Zeichen lang, und da die Länge der Spieluhr 3 beträgt, haben wir 3 Zeilen. Es gibt nur .
s hier, da die Spieluhr leer ist. Lass uns ein bisschen Musik reinlegen!
Zuerst erstellen wir die Spieluhr. In diesem Beispiel lautet die Eingabe CDAG.DAG
.
Die Länge von CDAG.DAG
ist 8, also brauchen wir eine Spieluhr mit der Länge 8:
.......
.......
.......
.......
.......
.......
.......
.......
Dann lesen wir die Eingabe einzeln und platzieren eine O
an der entsprechenden Position.
Das erste Zeichen ist C
und die Position jeder Note ist gleichbedeutend damit (ich habe der Klarheit halber Leerzeichen hinzugefügt):
A B C D E F G
. . . . . . .
. . . . . . .
(and so on)
Wenn das eingegebene Zeichen a ist .
, wird nur eine leere Zeile gedruckt.......
Das C
wäre also das dritte Zeichen. Lassen Sie es uns oben in unsere Spieluhr legen:
..O....
.......
.......
.......
.......
.......
.......
.......
Wir werden diesen Vorgang für alle anderen Zeichen wiederholen (der Text in Klammern soll Ihnen nur die Notiz zeigen, das sollten Sie nicht ausgeben):
..O.... (C)
...O... (D)
O...... (A)
......O (G)
....... (.)
...O... (D)
O...... (A)
......O (G)
Weil, wie Musik - Boxen arbeiten, wenn wir ein anderes Zeichen als verwenden O
, .
und <insert newline here>
, wie ein Raum, in unserer Ausgabe, dann wird es nicht die richtige Musik spielen!
Dies ist ein Akkord:
(ACE)
Dieser Akkord wird instruiert uns die Noten zu spielen A
, C
und E
zur gleichen Zeit. Es wird niemals eine Pause (dh ein .
) in einem Akkord geben.
So würde es geschrieben werden:
O.O.O...
Und so könnte es in der Musik aussehen: B(ACE)D
Sie erhalten niemals einen Akkord in einem Akkord, dh dies ist nicht gültig: (AB(CD)EF)
oder dies:, A(B())
und der Akkord ist nicht leer, dh dies ist nicht gültig:A()B
Sie erhalten niemals eine ungültige Eingabe.
Beispiele:
B(ACE)D
.O.....
O.O.O..
...O...
B
.O.....
GGABC
......O
......O
O......
.O.....
..O....
...
.......
.......
.......
A..F.C(DA).
O......
.......
.......
.....O.
.......
..O....
O..O...
.......
.(ABCDEF)
.......
OOOOOO.
Ein nachgestelltes / führendes Leerzeichen in der Ausgabe ist zulässig.
Da dies Codegolf ist , gewinnt der kürzeste Code!
()
zweimal enthalten (zBAB(CD)E(FG)
:)?