あなたの仕事は、文字列(音楽)を入力(関数またはプログラム)として受け取り、音楽をオルゴールのように印刷(または返す)することです。
ABCDEFG.()
入力として文字を受け取るだけで、入力が空になることはありません。必要に応じて、手紙を小文字で受け取ることもあります。
これは長さ3の空のオルゴールです。
.......
.......
.......
ご覧のとおり、行の長さは7文字で、オルゴールの長さは3なので、3行です。.
オルゴールは空なので、ここにはのみがあります。音楽を入れましょう!
まず、オルゴールを作成します。この例では、入力はになりますCDAG.DAG
。
の長さCDAG.DAG
は8なので、長さ8のオルゴールが必要です。
.......
.......
.......
.......
.......
.......
.......
.......
次に、入力を一度に1文字ずつ読み取り、O
それぞれの位置に配置します。
最初の文字はでC
、各音符の位置はこれと同等です(わかりやすくするためにスペースを追加しました)。
A B C D E F G
. . . . . . .
. . . . . . .
(and so on)
入力文字がの場合、.
空の行を出力するだけです.......
だから、にC
沿って3番目の文字になります。上部のオルゴールに入れましょう:
..O....
.......
.......
.......
.......
.......
.......
.......
他のすべての文字についてこのプロセスを繰り返します(括弧内のテキストは、単にメモを表示するためのものであり、出力しないでください)。
..O.... (C)
...O... (D)
O...... (A)
......O (G)
....... (.)
...O... (D)
O...... (A)
......O (G)
オルゴールのしくみのため、出力でO
、.
および以外の文字(<insert newline here>
スペースなど)を使用すると、正しい音楽が再生されません!
これは和音です:
(ACE)
このコードは、音符を再生するために私たちに指示されA
、C
かつE
同時に。.
和音に一時停止()はありません。
これはどのように書かれるかです:
O.O.O...
そして、これは音楽でどのように見えるかです: B(ACE)D
和音で和音を受け取ることはありません。つまり、これは無効です。 (AB(CD)EF)
またはthis A(B())
:、そして和音は空になりません、つまりこれは無効になります:A()B
無効な入力を受け取ることはありません。
例:
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.
出力の末尾/先頭の空白は許可されます。
これはcode-golfなので、最短のコードが勝ちです!
()
2回含めることができます(例AB(CD)E(FG)
:)??