আমাকে স্কেল প্রিন্ট করুন


20

ওহ না! আমার শীঘ্রই একটি থিওরি পরীক্ষা আছে এবং আমি এখনও আঁশগুলিকে মনে করি না! নিম্নলিখিত মুদ্রণ করে আমার বড় স্কেলগুলি মনে রাখতে আমাকে সহায়তা করুন:

7♯ - C♯ D♯ E♯ F♯ G♯ A♯ B♯ C♯
6♯ - F♯ G♯ A♯ B  C♯ D♯ E♯ F♯
5♯ - B  C♯ D♯ E  F♯ G♯ A♯ B
4♯ - E  F♯ G♯ A  B  C♯ D♯ E
3♯ - A  B  C♯ D  E  F♯ G♯ A
2♯ - D  E  F♯ G  A  B  C♯ D
1♯ - G  A  B  C  D  E  F♯ G
0  - C  D  E  F  G  A  B  C
1♭ - F  G  A  B♭ C  D  E  F
2♭ - B♭ C  D  E♭ F  G  A  B♭
3♭ - E♭ F  G  A♭ B♭ C  D  E♭
4♭ - A♭ B♭ C  D♭ E♭ F  G  A♭
5♭ - D♭ E♭ F  G♭ A♭ B♭ C  D♭
6♭ - G♭ A♭ B♭ C♭ D♭ E♭ F  G♭
7♭ - C♭ D♭ E♭ F♭ G♭ A♭ B♭ C♭

এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম কোড জিততে পারে। আপনি পরিবর্তে এবং যথাক্রমে চিহ্ন #এবং bচিহ্ন ব্যবহার করতে পারেন ।

সম্পাদনা: আপনি যদি ব্যবহার করছেন এবং লক্ষণগুলি দেখছেন তবে আপনাকে সেগুলি কেবলমাত্র প্রতিটি একক বাইট হিসাবে গণনা করতে হবে। এটি অন্যায্য অসুবিধা না দেওয়া।


1
আউটপুট একটি নেতৃস্থানীয় নিউলাইন গ্রহণযোগ্য?
স্টেডিবক্স

4
আমি বিশ্বাস করতে পারি না এখনও কোনও ফুগু উত্তর নেই!
লিও

আউটপুট ফর্ম্যাটটি কতটা কঠোর? আমরা কি লাইনের একটি অ্যারে আউটপুট করতে পারি? প্রতিটি উপাদান একটি একক নোট বা চরিত্রের সাথে কীভাবে 2 ডি-অ্যারে হয়?
শেগি

@ শেগি আমি জানি না কোলমোগোরভ জটিলতার প্রশ্নগুলির মান কী, তাই আমি না বলব।
ericw31415

3
: কোড উপাদানগুলিতে মনোস্পেস ফন্টের জন্য এত কিছু
চিয়েল টেন ব্রিনকে

উত্তর:


8

কাঠকয়লা , 65 66 65 বাইট (যদি # এবং খ ব্যবহার করে)

↑⮌…0¦8‖O⸿×⁷♭M→×⁷♯→⸿⸿¹⁵FE⁸﹪⊕⊗ι⁷«⸿⸿✂׳FCGDAEBι⁺¹⁵ι→⸿✂⭆♭ ♯×⁷κι⁺¹⁵ι»⟲

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

↑⮌…0¦8‖O

অক্ষর মুদ্রণ 0করার জন্য 7বিপরীত, তারপর ওভারল্যাপ সঙ্গে প্রতিফলিত করে। সাধারণত নীচের দিকে মুদ্রণ তালিকা থাকে, সুতরাং উপরের দিকে মুদ্রণ করা আসলে ডানদিকে প্রিন্ট করে; আমরা সবকিছু শেষে জায়গায় ঘোরাতে হবে।

⸿×⁷♭M→×⁷♯

একটি নতুন লাইন শুরু করুন এবং এর মধ্যে একটি ফাঁক দিয়ে 7 টি ফ্ল্যাট এবং 7 টি তীক্ষ্ণ প্রিন্ট করুন।

→⸿⸿¹⁵

একটি ফাঁকা রেখা ছেড়ে 15 -টি মুদ্রণ করুন ।

FE⁸﹪⊕⊗ι⁷«

0 থেকে 7 নম্বরগুলি নিন, তাদের দ্বিগুণ করুন, 1 যুক্ত করুন, তারপরে মডুলো হ্রাস করুন the ফলাফলটি লুপ করুন।

⸿⸿✂׳FCGDAEBι⁺¹⁵ι

একটি ফাঁকা রেখা ছেড়ে যান এবং তারপরে বর্তমান মান থেকে শুরু করে নোটগুলির ত্রিভুজযুক্ত স্ট্রিংয়ের একটি 15-অক্ষরের টুকরো নিন।

→⸿✂⭆♭ ♯×⁷κι⁺¹⁵ι

পরের লাইনে ফ্ল্যাট, স্পেস এবং শার্পগুলির 15-বর্ণের স্লাইস নিন, প্রতিটি বার 7 বার পুনরাবৃত্তি করা হবে।

»⟲

সমস্ত নোট মুদ্রণের পরে, সমস্ত কিছু জায়গায় স্থানান্তর করুন।


আপনি গণনা করতে পারে এবং 1 বাইট প্রতিটি বদলে 3. যেমন
ericw31415

এটি প্রতিভা, আমি এই সমাধানের সাথে প্রতিযোগিতা করতে পারি না।
চার্লি

6

রুবি , 113 বাইট ( 131 126 108 105 # এবং খ সহ)

-7.upto(7){|i|print i.abs," ♭♯"[i<=>0]," - ",(4..11).map{|j|("FCGDAEB"*3)[k=j*2%7-i]+"♭♯ "[~k/7]}*" ",$/}

এটি অনলাইন চেষ্টা করুন!

রুবি , 116 বাইট (# এবং খ সঙ্গে 108)

এটি অনলাইন চেষ্টা করুন!

রুবি , 126 বাইট (# এবং খ সহ 118)

এটি অনলাইন চেষ্টা করুন!

রুবি , # এবং বি দিয়ে 131 বাইট

এটি অনলাইন চেষ্টা করুন!


আপনাকে ইউনিকোড ধারালো এবং সমতল অক্ষরগুলি মুদ্রণ করতে হবে কারণ রুবি তাদের সমর্থন করে।
জ্যাকব

আমি মনে করি আপনার 124-বাইট সমাধানে স্যুইচ করা উচিত। এখানে মেট্রিক বাইট, অক্ষর নয়!
Jakob

আপনি গণনা করতে পারে এবং 1 বাইট প্রতিটি বদলে 3. যেমন
ericw31415


5

জিএনইউ সেড , 148 144 + 1 = 145 বাইট

-rপতাকা জন্য +1 বাইট ।

s/^/ 7# - C# D# E# F# G# A# B# \n65432101234567/
:
s/((.).(. - )((\S..){3})([^-]+)..\n)([0-7])/\1\2\7\3\6\2 \4\n/
s/ 0#/b0b/
t
s/^.//gm
s/0b/0 /

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

প্রথমে, প্রকারের একটি টেম্পলেট sertোকান:

 7# - C# D# E# F# G# A# B# 
65432101234567

প্রথম লাইনে শীর্ষস্থানীয় এবং পিছনে স্থান নোট করুন।

একটি লুপে, সর্বশেষ লাইন থেকে প্রথম সংখ্যাটি নিন এবং দ্বিতীয়-শেষ-শেষ লাইনের অংশগুলির সাথে এটি প্রতিস্থাপন করুন:

 7# - C# D# E# F# G# A# B# 
│ └┬─┘└───┬───┘└───┬────┘
2  3      4        6
│  │      └────────│──┐
├──│────────────┐  │  │
│  │      ┌─────│──┘  │
│ ┌┴─┐┌───┴────┐│ ┌───┴───┐
 6# - F# G# A# B  C# D# E# 

আপনি দেখতে পাচ্ছেন, প্রাথমিক স্থান (ক্যাপচার 2) এর পরে অক্ষরটি প্রতিস্থাপন করতে ব্যবহৃত হয় B

যখন 0উপনিত সঙ্গে প্রাথমিক স্থান প্রতিস্থাপন b। লুপটি অবিরত থাকে, তবে #স্থানগুলি দিয়ে s এর পরিবর্তে প্রতিটি পরবর্তী লাইনে একটি দিয়ে একটি স্থান প্রতিস্থাপন করা হয় b

অবশেষে, একটি সামান্য পরিষ্করণ করুন: প্রতিটি লাইন থেকে নেতৃস্থানীয় চরিত্র সরান এবং প্রতিস্থাপন 0bসঙ্গে 0


4

বেফুঞ্জ, 134 132 130 বাইট

<v:,,," - ",g2+!!\`0::,+*86*-1*2`0::p00:<75
@>4*65*+81v>55+,$$\:00g0`!\9p3+7%\1-:8+#^_
 b#"A"%7:\_^#:-1,*84,g2*+1`0g00!!g9%7:\+1,+

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

  • আমরা বাইরের লুপটি 7 থেকে -7 পর্যন্ত গণনা দিয়ে শুরু করি। আমরা এটিকে সারি নম্বর বলব ।
  • প্রতিটি সারির জন্য, আমরা '0'+abs(row)(স্কেল সংখ্যা) লিখে লিখে শুরু করি , এবং তারপরে (row>0)+(row!=0)এটি টেবিলে প্রাকৃতিক, তীক্ষ্ণ বা ফ্ল্যাট কিনা তা দেখার জন্য গণনা করি #b(কোডের তৃতীয় লাইনের শুরুতে আপনি এটি দেখতে পাবেন)।
  • এরপরে আমরা স্কেলের প্রারম্ভ নোট, এন , হিসাবে গণনা করি 30 + row*4। এটি শেষ পর্যন্ত মোড mod হবে, সুতরাং এটির পুনরাবৃত্তি ক্রম 2,5,1,4,0,3,6 (অর্থাত্ সিএফবিইএডজি) হিসাবে ভাবেন।
  • আমাদের অভ্যন্তরীণ লুপ, i , তারপরে স্কেলটিতে আটটি নোটের জন্য 8 থেকে 1 পর্যন্ত গণনা করা হয়েছে, প্রতিটি পুনরাবৃত্তির উপর এন বাড়ানো।
  • নোটের চিঠিটি সহজভাবে 'A' + n%7। এটি তীক্ষ্ণ বা ফ্ল্যাট কিনা তা i%7কোনও সারণীতে সন্ধান করে নির্ধারিত হয় । প্রথম স্কেলটি সমস্ত তীক্ষ্ণ হওয়ার কারণে টেবিলটি প্রাথমিকভাবে সমস্ত সত্য।
  • প্রতিটি সারি আউটপুট হওয়ার পরেও আমরা একটি মান টগল করে টেবিলটি আপডেট করি। প্রথম পুনরাবৃত্তির সময় আমরা অফসেট 5 এ মান টগল করব, তবে প্রতিটি লুপ অফসেটটি সামঞ্জস্য করে (offset+3)%7
  • আউটপুটের প্রথমার্ধে, যখন সারিটি শূন্যের চেয়ে বেশি হয়, আমরা এই টেবিলের মানগুলিকে ভুয়াতে টগল করছি। আউটপুটটির দ্বিতীয়ার্ধে, যখন সারিটি শূন্যের চেয়ে কম বা তার সমান হয়, আমরা সেগুলি আবার সত্যে সেট করি।

1
বেফুঞ্জে আপনি কেবলমাত্র গল্ফ করতে পারেন।
জাকারি

3

বুবলগাম , 107 বাইট

বুবলগাম থ্রেশহোল্ড

00000000: 4dca a90d 0301 1443 41ee 2a9e f4b1 a5ec  M......CA.*.....
00000010: 8d73 f7e1 fe8b 48a0 e968 aec1 3c87 d7f0  .s....H..h..<...
00000020: 1e3e c377 b80f 8ff9 a3ce c165 74d4 31b8  .>.w.......et.1.
00000030: 8c8a da07 1751 4fdb e022 ea69 1d5c 443d  .....QO..".i.\D=
00000040: 2d83 8ba8 a71b b888 7a5a 828b 524f 6b70  -.......zZ..ROkp
00000050: 51fa 690b 2e4b 47ed c165 e9a8 23b8 2c1d  Q.i..KG..e..#.,.
00000060: 7506 97a5 a3ae e0b2 74d4 0f              u.......t..

এটি অনলাইন চেষ্টা করুন!


3

জাভাস্ক্রিপ্ট (ES6), 130 124 বাইট

বা শীর্ষস্থানীয় নিউলাইন সহ 128 121 বাইট

f=(y=14,x=8)=>x?f(y,x-1)+' '+'BCDEFGA'[(y*3+x)%7]+'# b'[(x*5%7+y)/7|0]:(y?f(y-1)+`
`:'')+`${y<7?7-y+'#':y>7?y-7+'b':'0 '} -`

O.innerText = f()
<pre id=O style="font-size:11px"></pre>


3

সি,  212   189   186  185 বাইট

বাইট সংরক্ষণের জন্য @ জনাথন ফ্রেঞ্চকে ধন্যবাদ!

#define N n>0?35:98:32);
f(i,n){for(n=8;--n+8;puts(""))for(i=-1,printf("%d%c -",abs(n),n?N++i<8;)printf(" %c%c",(n*4+65+i)%7+65,"\377\277\273\233\231\211\10\0@Ddfv\367\377"[n+7]&1<<i?N}

এটি অনলাইন চেষ্টা করুন!

Unrolled:

#define N n>0 ? 35 : 98 : 32);
f(i, n)
{
    for (n=8; --n+8; puts(""))
        for (i=-1, printf("%d%c -", abs(n), n?N ++i<8;)
            printf(" %c%c",
                (n*4+65+i)%7 + 65,
                "\377\277\273\233\231\211\10\0@Ddfv\367\377"[n+7] & 1<<i ? N
}

>-হতে পারে +
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ ধন্যবাদ!
স্টেডিবক্স

এর i=~!printfপরিবর্তে i=-1,printfএবং এর \bপরিবর্তে\10
সিলিংক্যাট

2

জেলি ,  57 56 55  54 বাইট

-1 বাইট ধন্যবাদ এরিকথ আউটগলফারকে ( 7ŒRপ্রতিস্থাপনের জন্য ব্যবহার করুন -7r7)

_Ṃị“ b#”
=”B+\Çż
×3⁵+€ịØAḣ7¤ḊḊÇ€Z
7ŒRµṠÑżAW€żÇj€”-UK€Y

একটি পূর্ণ প্রোগ্রাম মুদ্রণ পছন্দসই আউটপুট (ব্যবহার #, b)।

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

_Ṃị“ b#” - Link 1, getSharpsFlatsOrSpaces: list of integers
 Ṃ       - minimum (of the input list)
_        - subtract (from the input list) -- for our purposes this resets whatever our
         -       1st value is to 0, since our inputs are always monotonically increasing
   “ b#” - literal list of characters = [' ', 'b', '#']
  ị      - index into (1-based and modular)

=”B+\Çż - Link 2, addSharpsFlatsOrSpaces: list of characters  e.g."CFBEADGCFBEADGC"
 ”B     - literal character 'B'
=       - equals? (vectorises)                      [0,0,1,0,0,0,0,0,0,1,0,0,0,0,0]
    \   - cumulative reduce with:
   +    -   addition                                [0,0,1,1,1,1,1,1,1,2,2,2,2,2,2]
     Ç  - call the last link (1) as a monad                       "##       bbbbbb"
      ż - zip (with input) ["#C","#F"," B"," E",...," F","bB","bE","bA","bD","bG","bC"]

×3⁵+€ịØAḣ7¤ḊḊÇ€Z - link 3, getNoteLetters: list of integers          e.g. [-7,-6,...,6,7]
×3               - multiply by three       [-21,-18,-15,-12,-9,-6,-3,0,3,6,9,12,15,18,21]
  ⁵              - literal ten                                                         10
   +€            - add for €ach (in [1,10])   [[-20,...,22],[-19,...,23],...,[-11,...31]]
          ¤      - nilad followed by link(s) as a nilad:
      ØA         -   yield uppercase alphabet                "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        ḣ7       -   head to index seven                                        "ABCDEFG"
     ị           - index into ["ADGCFBEADGCFBEA","BEADGCFBEADGCFB","CFBEADGCFBEADGC",...]
           Ḋ     - dequeue    ["BEADGCFBEADGCFB","CFBEADGCFBEADGC","DGCFBEADGCFBEAD",...]
            Ḋ    - dequeue    ["CFBEADGCFBEADGC","DGCFBEADGCFBEAD","EADGCFBEADGCFBE",...]
             Ç€  - call the last link(2) as a monad for €ach
                 -    [[["#C","#F"," B"," E",...," F","bB","bE","bA","bD","bG","bC"],...]
               Z - transpose           [["#C","#D",...,"#C"],["#F",..." B",...,"#F"],...]

7ŒRµṠÑżAW€żÇj€”-UK€Y - Main link: no arguments
7ŒR                  - absolute range of seven     [-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7]
   µ                 - start a new monadic chain (call that r)
    Ṡ                - sign (of r)                 [-1,-1,-1,-1,-1,-1,-1,0,1,1,1,1,1,1,1]
     Ñ               - call the next link (1) as a monad                "####### bbbbbbb"
       A             - absolute value (of r)              [7,6,5,4,3,2,1,0,1,2,3,4,5,6,7]
      ż              - zip                      [[7,'#'],[6,'#'],...,[0,' '],...,[7,'b']]
        W€           - wrap €ach        [[[7,'#']],[[6,'#']],...,[[0,' ']],...,[[7,'b']]]
           Ç         - call the last link (3) as a monad (with r)      see link 3 example
          ż          - zip                     [[[['#',7]],["#C","#D",...,"#C"]],
                                                [[['#',6]],["#F",...," B",..."#F"]], ...]
              ”-     - literal character '-'
            j€       - join for €ach            [[['#',7],'-',"#C","#D",..."#C"],
                                                 [['#',6],'-',"#F",...," B",..."#F"],...]
                U    - upend (reverse each)     [[[7,'#'],'-',"C#","D#",..."C#"],
                                                 [[6,'#'],'-',"F#",...,"B ",..."F#"],...]
                 K€  - join €ach with spaces            [[7+"# - C# D# ... C#"],
                                                         [6+"# - F# ... B  ... F#"], ...]
                   Y - join with newlines
                     - implicit print to STDOUT

1
আমি এইটার জন্য জেলির প্রতি বিশ্বাস রেখেছি।
এরিক আউটগল্ফার 21


0

জাভা 8, 255 বাইট

প্রতি বাইট হিসাবে 1 এবং ♭ গণনা করা হচ্ছে।

v->{String r="",t="GABCDEF";for(int i=-8;++i<8;r+="\n"){r+=(i<0?-i+"♯":i>0?i+"♭":"0 ")+" - ";for(String c:((t=t.substring(3)+t.substring(0,3))+t.charAt(0)).split(""))r+=c+("BEADGCF".substring(i<0?7+i:i).contains(c)?i<0?"♯":" ":i>0?"♭":" ")+" ";}return r;}

ব্যাখ্যা:

এটি অনলাইনে চেষ্টা করুন।

v->{                   // Method with empty unused parameter and String return-type
  String r="",         //  Result-String, starting empty
         t="GABCDEF";  //  Temp-String `t`, starting at "GABCDEF"
  for(int i=-8;++i<8;  //  Loop from -7 to 7 (inclusive); range (-8;8) == [-7;7]
      r+="\n"){        //    After every iteration: append the result with a new-line
    r+=                //   Append the result-String with:
       (i<0?           //    If `i` is negative:
         -i+"♯"        //     Append the absolute value of `i` + a literal "♯"
        :i>0?          //    Else-if `i` is positive:
         i+"♭"         //     Append `i` + a literal "♭"
        :              //    Else (`i` is 0):
         "0 ")         //     Append a literal "0" + space
     +" - ";           //   And then append a literal " - "
  for(String c:((t=t.substring(3)+t.substring(0,3))
                       //  Split String `t` in the middle,
                       //  and swap the two parts (i.e. "GABCDEF" becomes "CDEFGAB")
                +t.charAt(0))
                       //  Then append the first character
                .split(""))
                       //  And loop over each character:
     r+=c+             //   Append the result-String with this character, plus:
          ("BEADGCF".substring(i<0?
                       //    If `i` is negative
            7+i        //     Take the last `-i` characters of "BEAFGCF"
           :           //    Else (`i` is 0 or positive)
            i)         //     Take the last `7-i` characters of "BEAFGCF"
          .contains(c)?//    And if these last characters contain the current character:
            i<0?       //     And `i` is negative:
             "♯"       //      Append a literal "♯"
            :          //     Else (`i` is 0 or positive)
             " "       //      Append a space
          :i>0?        //    Else-if `i` is positive
            "♭"        //     Append a literal "♭"
          :            //    Else:
           " ")        //     Append a space
      +" ";}           //   And then append a space
  return r;}           //  Return the result-String
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.