ASCIIキーの署名を描く

ノートの入力が与えられると、対応するメジャーのASCII図面を出力する 高音部にキーを押します。

すべての主要なキー(ダブルシャープまたはダブルフラットを含まない) および対応するキー・シグニチャー:


Circle of fifths deluxe 4 by Wikipedia user Just
plain Bill, copyright CC BY-SA 3.0

入力がシャープのキーである場合は、次のASCIIアートを 適切な数のシャープ:

   #
-#-------
      #
----#----
  #
-------#-
     #
---------

---------

入力が平らなキーである場合:

---------
  b
----b----
      b
-b-------
   b
-----b---
       b
---------

ここでは、可能な入力の簡潔な要約と同様にいくつのシャープまたは 彼らが使うフラット:

   0   1   2   3   4   5   6   7
#  C   G   D   A   E   B   F#  C#
b  C   F   Bb  Eb  Ab  Db  Gb  Cb

すべての5行のダッシュは常に描画する必要がありますが、 シャープまたはフラットに少なくとも1列の
ダッシュの各行が同じ長さである限り、各辺にパディングがあります。にとって 例えば、これらはすべて入力 Ab
の許容可能な出力です。

---------   ------   ---------   ----------------
  b           b           b          b
----b----   ----b-   -------b-   ------b---------

-b-------   -b----   ----b----   ---b------------
   b           b           b          b
---------   ------   ---------   ----------------

---------   ------   ---------   ----------------

シャープまたはフラットを持たないCメジャーの場合、1つの正の数のダッシュ ライン(1つでも)は許容されます。

先行または後続の空白の量は問題ありません。 各行。余分な先頭のスペースは、同じ番号がある限りは大丈夫です 各行に

小文字で入力するか、鋭いまたは平らな入力が後ろのスペースを含んでいることを必要とする場合があります。

Since this is , the shortest solution in bytes will win.

ベストアンサー

Charcoal, 60 bytes

≔⁻⁺⊖﹪⊗℅§θ¬χ⁷×⁷№θ#×⁷№θbθ←UO⁹¦⁹-¶Fθ«Jι⊖﹪⊕׳ι⁷#»F±θ«Jι⊕﹪⁺³×⁴ι⁷b

Try it
online!
Link is to verbose version of code. Explanation:

≔⁻⁺⊖﹪⊗℅§θ¬χ⁷×⁷№θ#×⁷№θbθ

キーシグネチャのシャープ数を計算します。

←UO⁹¦⁹-¶

最初のシャープ/フラットが列0になるように、原点の1つの四角形を残して、スターブを印刷します。

Fθ«

任意のシャープ上でループします。

Jι⊖﹪⊕׳ι⁷#»

シャープの行を計算し、それを印刷します。

F±θ«

どのフラットでもループしてください。

Jι⊕﹪⁺³×⁴ι⁷b

フラットの行を計算し、それを印刷します。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です