এটি কি একটি বড় স্কেল (বা সমমানের)?


16

স্যান্ডবক্স

প্রধান স্কেল (বা আয়নীয় স্কেল) বিশেষত পশ্চিমা সংগীতে সর্বাধিক ব্যবহৃত সংগীতের স্কেল। এটি ডায়াটোনিক স্কেলগুলির মধ্যে একটি। অনেকগুলি মিউজিকাল স্কেলের মতো এটিও সাতটি নোটের সমন্বয়ে গঠিত: অষ্টমী তার ফ্রিকোয়েন্সি দ্বিগুণে প্রথমটিকে নকল করে যাতে একে একই নোটের একটি উচ্চতর অষ্টভ বলে।

সাতটি সংগীতের নোট হ'ল:

সি, ডি, ই, এফ, জি, এ, বি , সি (উদাহরণস্বরূপ পুনরাবৃত্তি)

একটি প্রধান স্কেল একটি ডায়াটোনিক স্কেল। নোটগুলির পূর্ববর্তী উত্তরাধিকারটিকে একটি বড় স্কেল হিসাবে ধরুন (আসলে, এটি স্কেল সি মেজর) । একটি বড় স্কেলের নোটগুলির মধ্যে অন্তরগুলির ক্রমটি হ'ল:

পুরো, পুরো, অর্ধেক, পুরো, পুরো, পুরো, অর্ধেক

যেখানে "পুরো" বলতে একটি পুরো টোনকে বোঝায় (চিত্রটিতে একটি লাল ইউ-আকারের বক্ররেখা) এবং "অর্ধেকটি" একটি সেমিটোন (চিত্রটিতে একটি লাল ভাঙা রেখা)।

এখানে চিত্র বর্ণনা লিখুন

এক্ষেত্রে, সি থেকে ডি পর্যন্ত একটি সম্পূর্ণ স্বর বিদ্যমান থাকে , ডি থেকে ই পর্যন্ত একটি সম্পূর্ণ স্বর থাকে, ই থেকে এফ পর্যন্ত অর্ধেক স্বর ইত্যাদি থাকে ...

আমাদের 2 টি উপাদান রয়েছে যা নোটগুলির মধ্যে স্বরের দূরত্বকে প্রভাবিত করে। এগুলি হ'ল শার্প প্রতীক (♯) এবং সমতল প্রতীক (♭)।

তীক্ষ্ণ প্রতীক (♯) নোটটিতে অর্ধ টোন যুক্ত করে। উদাহরণ। সি থেকে ডি পর্যন্ত আমরা উল্লেখ করেছি যে একটি সম্পূর্ণ স্বর বিদ্যমান, যদি আমরা সি পরিবর্তে সি ব্যবহার করি তবে সি থেকে ডি থেকে অর্ধ স্বর বিদ্যমান।

সমতল প্রতীক (♭) শার্প প্রতীকটির বিপরীতে করে, এটি নোট থেকে অর্ধ টোন বিয়োগ করে। উদাহরণ: ডি থেকে ই পর্যন্ত আমরা উল্লেখ করেছি যে পুরো টোনটি বিদ্যমান, যদি আমরা Db এর পরিবর্তে D ব্যবহার করি তবে Db থেকে E পর্যন্ত একটি স্বর এবং অর্ধেক বিদ্যমান।

ডিফল্টরূপে, দ্রষ্টব্য থেকে নোটে পুরো আঙ্গুলের উপস্থিতি E to Fএবং B to Cযেখানে কেবল অর্ধেক স্বর বিদ্যমান।

কিছু ক্ষেত্রে এনহারমনিক পিচগুলি ব্যবহার করে একটি বড় স্কেলের সমতুল্য তৈরি করতে পারে Note এর উদাহরণটি C#, D#, E#, F#, G#, A#, B#, C#কোথায় E#এবং তাত্পর্যপূর্ণ B#তবে স্কেলটি একটি বড় স্কেলের ক্রম অনুসরণ করে।


চ্যালেঞ্জ

একটি স্কেল দেওয়া হয়েছে, যদি এটি একটি মেজর স্কেল বা সমতুল্য হয় তবে সত্যবাদী মানের আউটপুট দিন, অন্যথায় একটি মিথ্যা মান আউটপুট করুন।

বিধি

  • স্ট্যান্ডার্ড I / O পদ্ধতি অনুমোদিত
  • স্ট্যান্ডার্ড বিধি প্রযোজ্য
  • আপনার 8 ম নোটটি বিবেচনায় নেওয়ার দরকার নেই। ধরুন ইনপুটটিতে কেবলমাত্র 7 টি নোট থাকবে
  • ডাবল ফ্ল্যাট (♭♭), ডাবল শার্প (♯♯) বা প্রাকৃতিক চিহ্ন (♮) বিদ্যমান নেই বলে ধরে নিন

পরীক্ষার মামলা

C, D, E, F, G, A, B                 => true
C#, D#, E#, F#, G#, A#, B#          => true
Db, Eb, F, Gb, Ab, Bb, C            => true
D, E, Gb, G, A, Cb, C#              => true
Eb, E#, G, G#, Bb, B#, D            => true
-----------------------------------------------
C, D#, E, F, G, A, B                => false
Db, Eb, F, Gb, Ab, B, C             => false
G#, E, F, A, B, D#, C               => false 
C#, C#, E#, F#, G#, A#, B#          => false
Eb, E#, Gb, G#, Bb, B#, D           => false

@ অ্যাবিগাইল মূলত হ্যাঁ যদিও তারা বিভিন্ন নোট হলেও তাদের একই সুর রয়েছে।
লুইস ফিলিপ দে জেসুস মুনোজ

1
এবং সিএক্স (বা সি ##) = ডি
স্যাগিংআরফাস

1
বিটিডাব্লু, পেন্টাটোনিক আইশের প্রতিটি চিঠির একটিও নেই: ভি
লুইস ফিলিপ দে জেসুস মুনোজ

1
@ নীল ক্রোমাটিক স্কেলগুলিতে স্বতন্ত্র অক্ষর নেই এবং আমি নিশ্চিত যে এমন এক ধরণের স্কেল রয়েছে যা একটি আরোহণের আদেশ অনুসরণ করে না
লুইস ফিলিপ দে জেসুস মুনোজ

1
আমি এটিকে উজ্জীবিত করতে যাচ্ছি কারণ @ নীল এটিকে নীচে ফেলেছে আপনাকে অনেক ধন্যবাদ
ডেভিড কনরাড

উত্তর:


11

পার্ল 6 , 76 65 63 59 বাইট

-4 বাইট ফিল এইচ ধন্যবাদ

{221222==[~] (.skip Z-$_)X%12}o*>>.&{13*.ord+>3+?/\#/-?/b/}

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

ব্যাখ্যা

*>>.&{ ... }  # Map notes to integers
  13*.ord     # 13 * ASCII code:  A=845 B=858 C=871 D=884 E=897 F=910 G=923
  +>3         # Right shift by 3: A=105 B=107 C=108 D=110 E=112 F=113 G=115
              # Subtracting 105 would yield A=0 B=2 C=3 D=5 E=7 F=8 G=10
              # but isn't necessary because we only need differences
  +?/\#/      # Add 1 for '#'
  -?/b/       # Subtract 1 for 'b'

{                           }o  # Compose with block
            (.skip Z-$_)        # Pairwise difference
                        X%12    # modulo 12
         [~]  # Join
 221222==     # Equals 221222

আপনি যদি দুটি জোড় পার্থক্য এবং মডুলো 12 করতে চলেছেন তবে আপনাকে 105 বিয়োগ করার প্রয়োজন হবে না; এটি কেবল একটি অফসেট। -4 অক্ষর: tio.run/…
ফিল এইচ

@ ফিলফ হ্যাঁ, অবশ্যই ধন্যবাদ!
nwellnhof

আমার কাছ থেকে নোটগুলি তাদের আপেক্ষিক মানগুলিতে ম্যাপ করার সত্যিই চতুর উপায়!
Sok

10

নোড.জেএস ভি 10.9.0 , 78 76 71 69 বাইট

a=>!a.some(n=>(a-(a=~([x,y]=Buffer(n),x/.6)-~y%61)+48)%12-2+!i--,i=3)

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

কিভাবে?

প্রতিটি নোট এন সাথে [-118,-71] একটি নেতিবাচক সংখ্যায় রূপান্তরিত হয় :

[x, y] = Buffer(n) // split n into two ASCII codes x and y
~(x / .6)          // base value, using the ASCII code of the 1st character
- ~y % 61          // +36 if the 2nd character is a '#' (ASCII code 35)
                   // +38 if the 2nd character is a 'b' (ASCII code 98)
                   // +1  if the 2nd character is undefined

যা দেয়:

  n   | x  | x / 0.6 | ~(x / 0.6) | -~y % 61 | sum
------+----+---------+------------+----------+------
 "Ab" | 65 | 108.333 |    -109    |    38    |  -71
 "A"  | 65 | 108.333 |    -109    |     1    | -108
 "A#" | 65 | 108.333 |    -109    |    36    |  -73
 "Bb" | 66 | 110.000 |    -111    |    38    |  -73
 "B"  | 66 | 110.000 |    -111    |     1    | -110
 "B#" | 66 | 110.000 |    -111    |    36    |  -75
 "Cb" | 67 | 111.667 |    -112    |    38    |  -74
 "C"  | 67 | 111.667 |    -112    |     1    | -111
 "C#" | 67 | 111.667 |    -112    |    36    |  -76
 "Db" | 68 | 113.333 |    -114    |    38    |  -76
 "D"  | 68 | 113.333 |    -114    |     1    | -113
 "D#" | 68 | 113.333 |    -114    |    36    |  -78
 "Eb" | 69 | 115.000 |    -116    |    38    |  -78
 "E"  | 69 | 115.000 |    -116    |     1    | -115
 "E#" | 69 | 115.000 |    -116    |    36    |  -80
 "Fb" | 70 | 116.667 |    -117    |    38    |  -79
 "F"  | 70 | 116.667 |    -117    |     1    | -116
 "F#" | 70 | 116.667 |    -117    |    36    |  -81
 "Gb" | 71 | 118.333 |    -119    |    38    |  -81
 "G"  | 71 | 118.333 |    -119    |     1    | -118
 "G#" | 71 | 118.333 |    -119    |    36    |  -83

আমরা এই মানগুলির মধ্যে জোড়াযুক্ত পার্থক্যগুলি মডুলো 12 গণনা করি ।

2 টি নোটের মধ্যে সর্বনিম্নতম পার্থক্যটি হল -47 , সুতরাং আমরা ইতিবাচক ফলাফল পেয়েছি তা নিশ্চিত করার জন্য মডিউল প্রয়োগ করার আগে 4×12=48 যুক্ত করা যথেষ্ট ।

12'#'36গেলিক ভাষার12=0'b'38গেলিক ভাষার12=2

একটিNaN

[NaN,2,2,1,2,2,2]

আমি12


দুর্দান্ত উত্তর, আমার উত্তরের চেয়ে অনেক বেশি আকর্ষণীয়
স্কিডেদেব

4

জাভাস্ক্রিপ্ট (নোড.জেএস) , 150 131 125 বাইট

l=>(l=l.map(x=>'C0D0EF0G0A0B'.search(x[0])+(x[1]=='#'|-(x[1]=='b')))).slice(1).map((n,i)=>(b=n-l[i])<0?2:b)+""=='2,2,1,2,2,2'

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

-19 বাইট ধন্যবাদ লুইস ফিলিপ -6 বাইট শ্যাগিকে
ধন্যবাদ

Ungolfed:

function isMajor(l) {
    // Get tone index of each entry
    let array = l.map(function (x) {
        // Use this to get indices of each note, using 0s as spacers for sharp keys
        let tones = 'C0D0EF0G0A0B';
        // Get the index of the letter component. EG D = 2, F = 5
        let tone = tones.search(x[0]);
        // Add 1 semitone if note is sharp
        // Use bool to number coercion to make this shorter
        tone += x[1] == '#' | -(x[1]=='b');
    });
    // Calculate deltas
    let deltas = array.slice(1).map(function (n,i) {
        // If delta is negative, replace it with 2
        // This accounts for octaves
        if (n - array[i] < 0) return 2;
        // Otherwise return the delta
        return n - array[i];
    });
    // Pseudo array-comparison
    return deltas+"" == '2,2,1,2,2,2';
}

1
[...'C0D0EF0G0A0B']পরিবর্তে 'C0D0EF0G0A0B'.split('')এবং +""পরিবর্তে .toString()কিছু বাইট সংরক্ষণ করুন
লুইস ফেলিপ দে জেসুস মুনোজ

x[1]=='#'|-(x[1]=='b')x[1]=='#'?1:(x[1]=='b'?-1:0)কিছুটা বাইটের পরিবর্তে খুব বেশি সংরক্ষণ করুন
লুইস ফেলিপ দে জেসুস মুনোজ

@ লুইসেলিপডিজেসাস মুনোজ ওহ ভাল ধন্যবাদ! আমি বিশ্বাস করতে পারি না আমি অ্যারে প্রসারণ এবং একটি খালি স্ট্রিং যুক্ত করতে ভুলে
গিয়েছি

"ডেল্টা যদি নেতিবাচক হয় তবে এটি 2 দিয়ে প্রতিস্থাপন করুন" ভুল শোনায়। আমি তোমাদের পার্থক্য মডিউল 12. নেওয়া প্রয়োজন মনে করি
nwellnhof

@ ননহ্নহফ আমার পরীক্ষাগুলিতে, সমস্ত বড় আকারের স্কেলগুলি সঠিকভাবে ডেল্টাস দিয়ে শুরু করা হয়েছিল, বা যদি তারা একটি অষ্টকটি বিস্তৃত করে থাকে তবে 2-এর পরিবর্তে -10 এ একটি ডেল্টা ছিল negativeণাত্মক ডেল্টাস ফিক্সগুলি প্রতিস্থাপন করে। ভাবি না -10 % 12 == 2। যদিও এটি ভাবতে আসুন এটি কিছু ক্ষেত্রে ব্যর্থ হতে পারে ...
স্কিডদেব

3

ডার্ট , 198 197 196 189 বাইট

f(l){var i=0,j='',k,n=l.map((m){k=m.runes.first*2-130;k-=k>3?k>9?2:1:0;return m.length<2?k:m[1]=='#'?k+1:m[1]=='b'?k-1:k;}).toList();for(;++i<7;j+='${(n[i]-n[i-1])%12}');return'221222'==j;}

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

পুরাতন পার্ল 6 টির উত্তর লুজ বন্দর /codegolf//a/175522/64722

f(l){
  var i=0,j='',k,
  n=l.map((m){
    k=m.runes.first*2-130;
    k-=k>3?k>9?2:1:0;
    return m.length<2?k:m[1]=='#'?k+1:m[1]=='b'?k-1:k;
  }).toList();
  for(;++i<7;j+='${(n[i]-n[i-1])%12}');
  return'221222'==j;
}
  • # / বি এর জন্য টার্নারি অপারেটর ব্যবহার করে -1 বাইট
  • স্কেল শিফ্টের জন্য টেরিনারিগুলির পরিবর্তে আইফএস ব্যবহার করে -1 বাইট
  • -7 বাইটস কেভিন ক্রুইজসেনকে ধন্যবাদ thanks

পুরাতন রুপ :

ডার্ট , 210 বাইট

f(l){var i=0,k=0,n={'C':0,'D':2,'E':4,'F':5,'G':7,'A':9,'B':11,'b':-1,'#':1},j='',y=[0,0];for(;++i<7;j+='${(y[0]-y[1])%12}')for(k=0;k<2;k++)y[k]=n[l[i-k][0]]+(l[i-k].length>1?n[l[i-k][1]]:0);return'221222'==j;}

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

Ungolfed:

f(l){
  var i=0,k=0,n={'C':0,'D':2,'E':4,'F':5,'G':7,'A':9,'B':11,'b':-1,'#':1},j='',y=[0,0];
  for(;++i<7;j+='${(y[0]-y[1])%12}')
    for(k=0;k<2;k++)
      y[k]=n[l[i-k][0]]+(l[i-k].length>1?n[l[i-k][1]]:0);

  return'221222'==j;
}

পুরো পদক্ষেপটি 2, এক চতুর্থাংশ হয় 1. আপনি যদি উচ্চতর অষ্টকায় লাফিয়ে যান তবে 12 মডেল। সমস্ত নোটের মাধ্যমে আইট্রেট করে এবং ith নোট এবং i-1 নোটের মধ্যে পার্থক্য গণনা করে। ফলাফলটি প্রতিযোগিতা করে এবং 221222 (2 সম্পূর্ণ, 1 অর্ধেক, 3 হোল) আশা করা উচিত।

  • কে-কে 0 নির্ধারণ না করে -2 বাইট
  • স্ট্রিং হিসাবে তালিকা ব্যবহার করে না -4 বাইট ব্যবহার করুন
  • -6 বাইটগুলি লুপগুলিতে অপ্রয়োজনীয় বিশৃঙ্খলা অপসারণ করে কেভিন ক্রুইজসেনকে ধন্যবাদ জানায়

আমি ডার্টকে জানি না, তবে অংশগুলি জাভার মতো as অতএব: পরিবর্তন i=1করতেi=0 পরিবর্তন করে একটি বাইট কমে যায় for(;i<7;i++)থেকে for(;++i<7;)। উপরন্তু, বন্ধনী {}, যে লুপ প্রায় মুছে ফেলা হতে পারে নির্বাণ দ্বারা j+=...লুপ তৃতীয় অংশে ভিতরে: for(;++i<7;j+='${(y[0]-y[1])%12}')। এবং একটি শেষ জিনিস স্থান থেকে মুক্তি পেতে পরিবর্তন return j=='221222';করা return'221222'==j;হয়। এই পরিবর্তনগুলির পরে -6 ( 210 বাইট )
কেভিন ক্রুইজসেন

ধন্যবাদ, লুপগুলির জন্য সেই কৌশলগুলি সম্পর্কে জানতেন না
এলকান

NP। আপনার নতুন 196-বাইট সংস্করণে আপনি এটিকে গলফ পারেন 189 বাইট পরিবর্তন করে if(k>9)k--;if(k>3)k--;করতে k-=k>3?k>9?2:1:0;এবং k+=m.length<2?0:m[1]=='#'?1:m[1]=='b'?-1:0;return k;করতে return m.length<2?k:m[1]=='#'?k+1:m[1]=='b'?k-1:k;। :)
কেভিন ক্রুইজসেন

অভিশাপ, আমার এখনও শিখার মতো অনেক কিছুই আছে বলে মনে হয়, ধন্যবাদ!
এলকান

ঠিক আছে, আমি এখন 2.5 বছর ধরে গল্ফ করছি, এমনকি আমি সর্বদা গল্ফের জিনিসগুলির বিষয়ে টিপস পাই। :) প্রাথমিকভাবে নিজেকে কিছু মিস করা খুব সহজ এবং সময়ের সাথে আপনি গল্ফের বিভিন্ন উপায় সম্পর্কে ভাবেন। :) <সমস্ত ভাষা> এ গল্ফ করার টিপস পড়তে আগ্রহী হতে পারে যদি আপনি এখনও না থাকেন। আর জাভাতে গল্ফ করার জন্য কিছু টিপস ডার্টেও প্রযোজ্য হতে পারে, যেহেতু আপনার উত্তরগুলিতে আমি যে গল্ফগুলি করেছি তা আমার জাভা জ্ঞানের উপর ভিত্তি করে ছিল, যেহেতু আমি প্রথমবার ডার্টকে দেখি। ;)
কেভিন ক্রুইজসেন

2

সি (জিসিসি) , -DA=a[i]+ 183 = 191 বাইট

f(int*a){char s[9],b[9],h=0,i=0,j=0,d;for(;A;A==35?b[i-h++-1]++:A^98?(b[i-h]=A*13>>3):b[i-h++-1]--,i++);for(;j<7;d=(b[j]-b[j-1])%12,d=d<0?d+12:d,s[j++-1]=d+48);a=!strcmp(s,"221222");}

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

পার্ল উত্তরের উপর ভিত্তি করে।

প্রশস্ত স্ট্রিং হিসাবে ইনপুট নেয়।

Ungolfed:

int f(int *a){
	char s[9], b[9];
	int h, i, j;
	h = 0;
        for(i = 0; a[i] != NULL; i++){
		if(a[i] == '#'){
			b[i-h-1] += 1;
			h++;
		}
		else if(a[i] == 'b'){
			b[i-1-h] -= 1;
			h++;
		}
		else{
			b[i-h] = (a[i] * 13) >> 3;
		}
	}
	for(j = 1; j < 7; j++){
		int d = (b[j] - b[j-1]) % 12;
		d = d < 0? d + 12: d;
		s[j-1] = d + '0';
	}
	return strcmp(s, "221222") == 0;
}


2

[ওল্ফ্রাম ল্যাঙ্গুয়েজ (ম্যাথমেটিকা) + মিউজিক` প্যাকেজ], 114 বাইট

আমি সংগীত পছন্দ করি এবং এটি আকর্ষণীয়ও পেয়েছি, কিন্তু এই কোড গল্ফের সুযোগটি পাইকের নীচে নেমে আসার পরে আমি বাস্তব গল্ফ খেলছিলাম my

আমি অনুভব করেছি যে আমি কিছু প্রকৃত সঙ্গীত জ্ঞানকে কাজে লাগিয়ে একে একে একে একে একে অন্যরকমভাবে চেষ্টা করতে চাই। এটি গাণিতিকের সংগীত প্যাকেজটি নামকৃত নোটগুলির মূল ফ্রিকোয়েন্সি জানে knows প্রথমে আমি ইনপুট স্ট্রিংকে নামকরণ করা নোটগুলির অনুক্রমে রূপান্তর করি। এরপরে, আমি প্রতিটি ধারাবাহিক নোটের অনুপাত গ্রহণ করি এবং 2 এর চেয়ে কম যেকোন দ্বিগুণ করি (অক্টেভ শিফ্টের জন্য অ্যাকাউন্টে)। তারপরে আমি এই অনুপাতগুলি আয়নীয় স্কেলের অনুপাতের সাথে তুলনা করি যার অর্ধ নোটের মধ্যে প্রায় 6% ফ্রিকোয়েন্সি এবং সম্পূর্ণ নোটের মধ্যে 12% এর পার্থক্য রয়েছে।

এখানে ব্যয় করা অর্ধেকেরও বেশি হ'ল ইনপুটটিকে নামযুক্ত প্রতীকগুলিতে রূপান্তর করা।

.06{2,2,1,2,2,2}+1==Round[Ratios[Symbol[#~~"0"]&/@StringReplace[# ,{"b"->"flat","#"->"sharp"}]]/.x_/;x<1->2x,.01]&

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


2

পাইথন 3 , 175 136 134 114 112 বাইট

def f(t):r=[ord(x[0])//.6+ord(x[1:]or'"')%13-8for x in t];return[(y-x)%12for x,y in zip(r,r[1:])]==[2,2,1,2,2,2]

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


একটি ওয়ান-লাইনার পাইথন 3 বাস্তবায়ন।

বিভাগ এবং মডুলো ব্যবহার করে টোন গণনা করার ধারণার জন্য @ আরনাউল্ডকে ধন্যবাদ জানাই।
@ জো কিংকে -39 বাইটের জন্য ধন্যবাদ



1

[পাইথন] 269 202 বাইট

এর থেকে উন্নতি Jo King:

p=lambda z:"A BC D EF G".index(z[0])+"b #".index(z[1:]or' ')-1
def d(i,j):f=abs(p(i)-p(j));return min(f,12-f)
q=input().replace(' ','').split(',')
print([d(q[i],q[i+1])for i in range(6)]==[2,2,1,2,2,2])

চেষ্টা করে দেখুন!

পরীক্ষামূলক ড্রাইভার সহ অসমাপ্ত:

tone = "A BC D EF G"   # tones in "piano" layout
adj = "b #"            # accidentals

def note_pos(note):
    if len(note) == 1:
        note += ' '
    n,a = note
    return tone.index(n) + adj[a]

def note_diff(i, j):
    x, y = note_pos(i), note_pos(j)
    diff = abs(x-y)
    return min(diff, 12-diff)

def is_scale(str):
    seq = str.replace(' ','').split(',')
    div = [note_diff(seq[i], seq[i+1]) for i in (0,1,2,3,4,5)]
    return div == [2,2,1,2,2,2]

case = [
("C, D, E, F, G, A, B", True),
("C#, D#, E#, F#, G#, A#, B#", True),
("Db, Eb, F, Gb, Ab, Bb, C", True),
("D, E, Gb, G, A, Cb, C#", True),
("Eb, E#, G, G#, Bb, B#, D", True),

("C, D#, E, F, G, A, B", False),
("Db, Eb, F, Gb, Ab, B, C", False),
("G#, E, F, A, B, D#, C", False),
("C#, C#, E#, F#, G#, A#, B#", False),
("Eb, E#, Gb, G#, Bb, B#, D", False),
]

for test, result in case:
    print(test + ' '*(30-len(test)), result, '\t',
          "valid" if is_scale(test) == result else "ERROR")

হ্যাঁ, আমি সাদা স্থানটি দেখছি - এখনও খুব বেশি পিইপি -8 দিয়ে প্ররোচিত হয়েছে, আমি ভীত afraid আমি দৃশ্যত কিছু মিস করেছি; এখানে একটি ফাঁসি লিঙ্ক প্রয়োজনীয়?
খেজুর

1
যদিও, আপনি যদি লিঙ্কটি চান তবে কিছু দ্রুত গল্ফিং সহ 202 বাইট । আপনি অবশ্যই আলাদা ইনপুট ফর্ম্যাটটিতে পরিবর্তন করে আরও কিছু গল্ফ করতে পারেন
জো কিং

আহ ... আমি পাইথনকে প্রক্রিয়াটির মান হিসাবে চূড়ান্ত প্রকাশটি ফিরিয়ে দিতে অভ্যস্ত। পয়েন্টার এবং ইঙ্গিতগুলির জন্য ধন্যবাদ।
ছাঁটাই

আপনি যদি স্ট্রিংয়ের তালিকা নিয়ে কোনও ফাংশনে স্যুইচ করেন তবে আপনি 156 বাইট পেতে পারেন। এছাড়াও, টিআইওর লিঙ্ক বিভাগে একটি অটো ফর্ম্যাটর রয়েছে যা আপনি ব্যবহার করতে পারেন
জো কিং

@ জোকিং, আপনি এই উত্তরটি সম্পাদনা করতে বা আপনার নিজের পোস্ট করতে পুরোপুরি স্বাগতম! একটি লিঙ্কের সাথে মন্তব্য করা উন্নতিগুলিকে এক স্তর দ্বারা পৃথক করে।
খেজুর

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.