সংগীত: এই জ্যাটি কি আছে?


38

ইনপুট

যেকোন ত্রিঘাতিক জ্যাজের প্রতীক (দেখুন http://en.wikedia.org/wiki/Chord_(m))# ট্রাইড )।

আউটপুট

প্রদত্ত জর্ড গঠন নোটগুলি।

উদাহরণ

ইনপুট: AM আউটপুট:A C# E

ইনপুট: C#m আউটপুট:C# E G#

ইনপুট: Db+ আউটপুট:C# F A

ইনপুট: C0 আউটপুট:C D# F#

বোনাসেস

-50 যদি আপনি সপ্তম chords সাথেও ডিল করতে পারেন

-150 আসলে কর্ডের শব্দ বাজানোর জন্য

-150 কীভাবে পিয়ানোতে জর্ডটি খেলতে হবে তা প্রদর্শনের জন্য মুদ্রণযোগ্য অক্ষরগুলি ব্যবহার করার জন্য; উদাহরণস্বরূপ AM:

┌─┬─┬┬─┬─┬─┬─┬┬─┲┱─┬─┬─┲━┱┬─┲━┱─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ┃┃ │ │ ┃ ┃│ ┃ ┃ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ┃┃ │ │ ┃ ┃│ ┃ ┃ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ┃┃ │ │ ┃ ┃│ ┃ ┃ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┲┛┗┱┘ │ ┗┯┛└┲┛ ┃ └┬┘└┬┘└┬┘ │
│  │  │  │  │  ┃  ┃  │  │  ┃  ┃  │  │  │  │
└──┴──┴──┴──┴──┺━━┹──┴──┴──┺━━┹──┴──┴──┴──┘

গিটারে জর্ডটি কীভাবে বাজানো যায় তা দেখানোর জন্য মুদ্রণযোগ্য অক্ষরগুলি ব্যবহার করার জন্য -100 ; উদাহরণস্বরূপ AM:

x   o   o   o   o   o
┌───┬───┬───┬───┬───┐
│   │   │   │   │   │
├───┼───┼───┼───┼───┤
│   │   │   │   │   │
├───┼───┼───┼───┼───┤
│   │   █   █   █   │
├───┼───┼───┼───┼───┤
│   │   │   │   │   │

( https://en.wikedia.org/wiki/Box-drawing_character দেখুন )

বিধি

  • ফলাফলটি অবশ্যই একটি কমান্ড-লাইন প্রোগ্রাম বা স্ক্রিপ্ট হতে হবে।

  • ইনপুট এবং আউটপুট যে কোনও আকারে হতে পারে, যতক্ষণ না এটি একটি সংগীত স্বীকৃতি মান অনুসরণ করে।

  • গিটার বা পিয়ানো উপস্থাপনাকে বৈধ হিসাবে বিবেচনা করা হয় এবং কেবল যদি এতে তিনটি (ত্রয়ী) বা চারটি (সপ্তম) প্রয়োজনীয় নোট থাকে এবং অন্য কিছুই না থাকে। একই নোটটি জ্যাডে বেশ কয়েকবার উপস্থিত হতে পারে।

  • সাউন্ড জেনারেশন ব্যতীত বাহ্যিক লাইব্রেরিগুলি অনুমোদিত নয় (এই ক্ষেত্রে #include, import... নির্দেশাবলী অক্ষর গণনায় যুক্ত করা হয় না)।

  • এটি কোড গল্ফ, সংক্ষিপ্ততম কোড জয়!

সামান্য কিছু সংগীত তত্ত্ব ...

আধুনিক পশ্চিমা টোনাল সংগীতে, প্রতিটি অষ্টকটি বারোটি ধারাবাহিক নোট দ্বারা তৈরি করা হয়, প্রায়শই উল্লেখ করা হয়:

A A# B C C# D D# E F F# G G#

বা:

La La# Si Do Do# Re Re# Mi Fa Fa# Sol Sol#

এই সিস্টেমে আমরা বিবেচনা করি যে পর পর দুটি নোট (যেমন Aএবং A#, Eএবং এবং F) এক সেমিটোন দ্বারা পৃথক করা হয়েছে। এছাড়াও, নোটগুলি একধরণের "লুপিং": অবিলম্বে যা ঘটে তা G#হ'ল A

পিচ নক্ষত্রমণ্ডল

একটি জ্যাড কয়েকটি (2, 3, 4, কখনও কখনও আরও বেশি) নোট দ্বারা গঠিত হয় যে "একসাথে ভাল শোনাচ্ছে"। উদাহরণস্বরূপ, ট্রায়ডিক chords তিনটি পৃথক নোট এবং সপ্তম chords চারটি পৃথক নোট ধারণ করে।

চারটি ত্রিভুজিক chords হিসাবে সংজ্ঞায়িত করা যাক :

  • প্রধান ত্রিভুজ : জলের মূল থাকে (এই প্রশ্নে, ইনপুট হিসাবে দেওয়া নোট), মূলের জন্য প্রধান তৃতীয় (মূলের চেয়ে 4 টি সেমিটোন বেশি) এবং মূলের জন্য নিখুঁত পঞ্চম (মূলের চেয়ে 7 সেমিটোন বেশি) থাকে ); এটি 0-4-7 প্রতীক হতে পারে

  • গৌণ ত্রয়ী , 0-3-7 প্রতীক

  • অগমেটেড ত্রৈমাসিক , 0-4-8 এর প্রতীক

  • হ্রাস ত্রৈমাসিক , 0-3-6 প্রতীক

পিচ নক্ষত্র: ত্রি

সুতরাং উদাহরণস্বরূপ, আপনি যদি একটি করতে চান তাহলে সি প্রধান ত্রয়ী উল্লেখ C, CM, Cmaj, আপনি তিন সুপরিচিত করতে হবে:

  • 0: মূল , এক্ষেত্রে কC
  • 4: গৌণ তৃতীয় , মূলের চেয়ে 4 সেমিটোন বেশি; এটি একটিE
  • 7: নিখুঁত পঞ্চম , 7 টি মূলের চেয়ে উচ্চতর: কG

এই কি 0-4-7, 0-3-7, 0-4-8এবং 0-3-6স্বরলিপি গড় উপরে ব্যবহার করেছেন! সপ্তম chords জন্য, নিম্নলিখিত প্যাটার্ন ব্যবহার করুন:

পিচ প্রতিবন্ধকতা: সপ্তম chords

এটি আজকের জন্য! এখন, আশ্চর্যজনক কোড দিয়ে আমাকে বিস্মিত করুন ... আপনার যদি কোনও প্রশ্ন থাকে তবে নীচে কিছু মন্তব্য যুক্ত করুন।


1
অ সঙ্গীতজ্ঞদের জন্য পূর্ণসংখ্যার স্বীকৃতি হিসাবে চিয়ার্সের সূত্রগুলি সহ একটি ব্যাখ্যা যুক্ত করার উপযুক্ত হতে পারে। পূর্ণসংখ্যার স্বরলিপিটি সেমোটোনগুলির প্রতিটি জিনিসকে বোঝায়। প্রধান কর্ড (উদাহরণ এএম): 0,4,7। গৌণ জ্যা (উদাহরণস্বরূপ সি # মি): 0,3,7। সি হ্রাস পেয়েছে (উদাহরণস্বরূপ কো, বা আপনি একে C0 বলছেন) 0,3,6 (নোট করুন যে সঠিক উপস্থাপনাটি সি ই জি জিবি, তবে এই চ্যালেঞ্জের জন্য আমি অনুমান করি যে আমরা এই এবং সিডি # F # উভয়ই গ্রহণযোগ্য বলে ধরে নিতে পারি।) সূত্রটি একটি বর্ধিত কর্ডের জন্য (উদাহরণ ডিবি +) 0,4,8 এবং আপনার উদাহরণটি ভুল কারণ এটি এমনকি একটি ডিবিও ধারণ করে না। লিখিত হিসাবে এটি একটি বি + যা ডি # + বা জি + এর সমতুল্য
স্তরের নদী সেন্ট

3
এছাড়াও, বাধা ব্যতীত একই ধরণের সমস্ত গিটার কর্ডের জন্য একই কর্ড আকৃতির ব্যবহারের ফলে সংক্ষিপ্ততম কোডটি আসবে। সুতরাং 11 ম ফ্রেটে আবদ্ধ একটি আকার হবে। একটি নম্বর রাখা ঠিক আছে বা আমাদের 11 ফ্রেট আঁকতে হবে? সব মিলিয়ে এ সম্পর্কে অনেক ভাবার বিষয়। আপনি বোনাসগুলি সহজ করতে চাইতে পারেন।
স্তর নদী সেন্ট

1
হুম .. আপনার বর্ধিত জ্যা এখনও ভুল still সি শার্প ডিবিতে enharmonic, কিন্তু Db+হয় Db F Aসেখানে কোন ডি # বা সেখানে ছ। এটি প্রয়োজনের তুলনায় সম্ভবত আরও কিছু তত্ত্ব, সূত্রগুলি ছিল গুরুত্বপূর্ণ অঙ্গ। আপনি যদি সত্যই উইকিপিডিয়ায় তালিকাভুক্ত সপ্তম জনের সমস্ত আটটি অন্তর্ভুক্ত করতে চান তবে আপনার ইনপুটটি নির্দিষ্ট করতে হবে। আমি ধরে নিই পিয়ানো এবং গিটারের অসি-আর্ট আউটপুটটি নমনীয়।
স্তর নদী সেন্ট

3
আমার কাছে মনে হয় আমি পাঠ থেকে শেখার চেয়ে এখানে সংগীত তত্ত্ব সম্পর্কে আরও বেশি শিখেছি।
কেভিন ইভান্স

4
এই সাইটে দুর্দান্ত সমস্যা!
রায়

উত্তর:


5

বিবিসি বেসিক

বিবিসিবাসিক.কম এ এমুলেটর

Rev 1, 340 - 150 কীবোর্ড - 150 প্লে করা = 40

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

রিটার্ন টিপানোর আগে স্ক্রিনে ইনপুটটি আরামে সম্পাদনা করা যেতে পারে (আমি সিইটি-কিপ্রেস পাওয়ার আগে GET using ব্যবহার করছিলাম, কারণ বিবিসি বেসিক আপনাকে কোনও স্ট্রিং থেকে একটি অক্ষর অ্যাক্সেস করতে দেয় না যেমন স্ট্রিংটি অ্যারে ছিল। এখন আমি এর পরিবর্তে ব্যবহার করি স্ট্রিংয়ের মধ্যে থেকে একটি অক্ষরের একটি স্ট্রিং বের করার জন্য ভারী এমআইডি $ ফাংশন।

কীবোর্ডের উভয় দিক পাশাপাশি E এবং F এর মধ্যে সম্পূর্ণ লাইন প্রদর্শিত হবে displayed

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

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

প্রোগ্রাম পুনরুদ্ধার 1 340 অক্ষর

  a$="C#D#EF#G#A#B0Mm+"
  INPUTx$
  r=INSTR(a$,LEFT$(x$,1))-1
  c=INSTR(a$,MID$(x$,2,1))
  IFc=2c=INSTR(a$,MID$(x$,3)):r=r+1
  t=(r+4-c MOD2)MOD12
  f=(r+c DIV2)MOD12
  v=1
  FORn=-1TO11
  c=1-(n<0ORn=4ORn=11)*5
  b$=MID$(a$,n+1,1)
  IFb$="#"c=11:b$=MID$(a$,n,1)+b$
  c$=MID$("   _______--|__",c,5)
  IFr=n ORt=n ORf=n c$=c$+b$:SOUNDv,-15,100+n*4,99:v=v+1
  PRINTc$
  NEXT

সংশোধন: উইন্ডোজের জন্য আরটি রাসেলের বিবিসি বেসিক আপনাকে কিছু নতুন লাইন এবং কলোনগুলি সরিয়ে ফেলতে দেয়, মোটটি 327 এ নামিয়ে দেয়, নীচে দেখুন। এছাড়াও এটি সংরক্ষণের আগে কীওয়ার্ডগুলিকে একক অক্ষরে টোকেনাইজ করে, এটি 279 এ নামিয়ে আনে।

  a$="C#D#EF#G#A#B0Mm+"INPUTx$
  r=INSTR(a$,LEFT$(x$,1))-1c=INSTR(a$,MID$(x$,2,1))IFc=2c=INSTR(a$,MID$(x$,3))r=r+1
  t=(r+4-c MOD2)MOD12f=(r+c DIV2)MOD12v=1FORn=-1TO11c=1-(n<0ORn=4ORn=11)*5b$=MID$(a$,n+1,1)IFb$="#"c=11b$=MID$(a$,n,1)+b$
  c$=MID$("   _______--|__",c,5)IFr=n ORt=n ORf=n c$=c$+b$SOUNDv,-15,100+n*4,99v=v+1
  PRINTc$
  NEXT

আউটপুট রেভ 1

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

রেভ 0, 337 - 150 কীবোর্ড - 150 প্লে করা = 37

A$="C#D#EF#G#A#B0Mm+":X$=GET$:R=INSTR(A$,X$)-1:X$=GET$:IF X$="#"R=R+1:X$=GET$
C=INSTR(A$,X$):T=(R+4-C MOD2)MOD12:F=(R+C DIV2)MOD12:V=1:PRINT"______"
FORN=0 TO 11
C=1-(N=4)*12:B$=MID$(A$,N+1,1): IF B$="#" C=7: B$=MID$(A$,N,1)+B$
PRINT MID$("    __---|________",C,6);:IF(R-N)*(T-N)*(F-N)=0 PRINT B$;:SOUND V,-15,100+N*4,99:V=V+1
PRINT
NEXT

এটি আমার আরডিনো উত্তরের অনুরূপ ধারণা, তবে আমি সর্বদা জানতাম যে বিবিসি বেসিকের সাথে আমি এই বাইট গণনাটিকে হারাতে পারি। কেবল শার্পগুলি সনাক্ত করে, তবে বি # কে অবৈধ বলে মনে করে, আপনার অবশ্যই সি দেওয়া উচিত যদি এটি সত্যই গুরুত্বপূর্ণ হিসাবে বিবেচিত হত তবে এটি ঠিক করা যেতে পারে।

আমি গিটারের ধারণাটি ত্যাগ করেছি এবং কীবোর্ডটি উন্নত করতে মনোনিবেশ করেছি। এটি এখন সি থেকে বিতে চলে এবং আমি কীবোর্ডের বাম দিকে এবং ই এবং এফ এর মধ্যবর্তী লাইনে যুক্ত করেছি যার দাম 28 টি। ডান হাতটি আরও বেশি কিছু হবে না।

এখানে কিছু নমুনা আউটপুট, একটি A # হ্রাস কর্ড (যা এই বিপরীতে একটি চমকপ্রদ শব্দ) এবং একটি বি মেজাজে রয়েছে। নোট করুন যে ইনপুটটি স্ক্রিনে প্রতিধ্বনিত হয়নি। আরডুইনোর উত্তর অনুসারে দেখতে পর্দাটি অ্যান্টলিক দিকের দিকে ঘুরিয়ে দিন।

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

উদার সংস্করণ

A$="C#D#EF#G#A#B0Mm+"                              :REM Note names and chord type names fit very conveniently in the same string.
X$=GET$                                            :REM Get a character 
R=INSTR(A$,X$)-1                                   :REM Root note = position of that char in A$. INSTR starts counting at 1, but we want 0, so subtract.
X$=GET$                                            :REM If the root note is natural, the next character will be the chord type. But...
IF X$="#"R=R+1:X$=GET$                             :REM If this char is # we need to increment the root, and get another char for chord type. 
C=INSTR(A$,X$)                                     :REM C encodes for chord type
T=(R+4-C MOD2)MOD12                                :REM even C means major third, odd C means minor third
F=(R+C DIV2)MOD12                                  :REM "Mm" gives C=14,15 meaning C DIV2=7 (perfect fifth.) C=13,16 give diminished and augmented: 6,8.
V=1                                                :REM V is the sound channel number ("voice")                             
PRINT"______"                                      :REM left side of keyboard for cosmetic reasons
FORN=0 TO 11                                       :REM at the start of each iteration initialise C to 1, to point to the 4 spaces/2 underscores in the string below for drawing white notes. 
  C=1-(N=4)*12                                     :REM if the note is E, add 12 so it points to the 6 underscores to draw the line between E and F. 
  B$=MID$(A$,N+1,1)                                :REM load B$ with the name of the current note.
  IF B$="#" C=7: B$=MID$(A$,N,1)+B$                :REM if the character encountered is a sharp, update C to point the characters for drawing a sharp. Find the previous character in A$ and join it to the beginning of B$ to complete the note name.
  PRINT MID$("    __---|________",C,6);            :REM print the key (6 characters.)
  IF(R-N)*(T-N)*(F-N)=0 PRINT B$;:SOUND V,-15,100+N*4,99:V=V+1  :REM if N is equal to R,T or F, print the note name beside the key, play the note and increment the channel number for the next note.  
  PRINT                                            :REM print a carriage return. It may be possible to golf this line out.
NEXT

কমান্ড লাইন থেকে প্রোগ্রামটি কীভাবে ব্যবহার করার কথা? (আমি আমার উবুন্টু মেশিনে বিবিসি বেসিক ইনস্টল করেছি)
ম্যাথিউ রডিক

বাহ, আমি জানতাম না উবুন্টুর জন্য বিবিসি বেসিকের একটি সংস্করণ ছিল। আমি আমার এমুলেটরটি যে সাইট থেকে পেয়েছি সেটিতে আমি কোনও খুঁজে পাচ্ছি না এবং আমি উবুন্টু ব্যবহার করি না। অরিজিনাল বিবিসি বুনিয়াদের কেবল একবারে মেমরিতে একটি প্রোগ্রাম থাকে যাতে আপনি RUN টাইপ করেন। আমি যে এমুলেটরটি ব্যবহার করি তা দিয়ে আপনাকে এমুলেটর পরিবেশ শুরু করতে হবে তারপরে এটি চলে। এটিতে একটি পাঠ্য সম্পাদক রয়েছে, তারপরে আপনি চালনার জন্য ক্লিক করুন, তারপরে প্রোগ্রামটি শেষ হয়ে গেলে আপনি প্রোগ্রামটি আবার চালনার জন্য RUN টাইপ করতে পারেন, বা পরিবেশের মধ্যে স্বতন্ত্র বেসিক কমান্ডগুলি টাইপ করতে পারেন। আপনি আমার এমুলেটরটির সাথে এক্সিকিউটেবল একটি কমান্ড-লাইন তৈরি করতে পারবেন তবে আপনি যদি পুরো সংস্করণটি কিনে তবেই।
স্তরের নদী সেন্ট

আপনি যদি প্রোগ্রামটি পরীক্ষা করতে চান তবে আমি আপনাকে সর্বোত্তমভাবে সাহায্য করতে পারি যদি আপনি কোনও উইন্ডোজ মেশিন খুঁজে পান এবং আমি যে সঠিক সংস্করণটি ব্যবহার করছি তা ডাউনলোড করতে পারি। বিকল্পভাবে, আপনি যদি আমাকে বলতে পারেন যে আপনি আপনার উবুন্টু সংস্করণটি কোথায় পেয়েছেন আমার এটির থেকে কিছুটা পড়তে পারে।
স্তরের নদী সেন্ট

বিবিসি বেসিকগুলি লিনাক্সেও চলে, তারা হোস্ট ওএসের উপর নির্ভর করে তাদের হোম পৃষ্ঠায় অনেকগুলি বিতরণ সরবরাহ করে। আমি কেবল প্রোগ্রামটি চালানোর জন্য পরিচালনা করি নি, কোডটি পাস করা বা প্রম্পটে এটি আটকানো থেকে ...
ম্যাথিউ রডিক

আমি কেবল নেপোলিয়ন ব্র্যান্ডি বেসিক ডাউনলোড করেছি এবং এটি শুরু করা সত্যিই কঠিন! আপনার কোডটি chords.nap নামক পাঠ্য ফাইল হিসাবে সংরক্ষণ করতে হবে, তারপরে কমান্ড প্রম্পটে LOAD "chords.nap" টাইপ করুন। এটি কোডে লাইন নম্বর যুক্ত করে (মূল বিবিসি বেসিকের আরও খাঁটি, আরও কয়েকটি অক্ষর যুক্ত করবে) তারপরে আপনি RUN টাইপ করেন এবং প্রোগ্রামটিতে এর মধ্যে সাউন্ড স্টেটমেন্টের সাথে লাইনে ক্র্যাশ হয় ত্রুটি বার্তা সহ "অসমর্থিত বেসিক ভি বৈশিষ্ট্য" পাই। " আপনি যদি সত্যিই চাইতেন তবে আরটি রাসেলের বাস্তবায়ন সহ আপনি একটি গুরুতর প্রোগ্রাম লিখতে পারেন। তবে ব্র্যান্ডি বেসিকের সাথে আমি এটি সম্পর্কে চিন্তাও করব না।
লেভেল রিভার সেন্ট

8

যেমন আপনি বলতে পারেন, আমি এটি মোটেও গল্ফ করার চেষ্টা করিনি। আমি একটি সংগীত গীখ এবং আমার একটি পোষা প্রাণবন্ত হল যখন লোকেরা ভুল এনহারমনিকস ব্যবহার করে জিনিস লিখেন (উদাহরণস্বরূপ বলা হয় যে একটি সি হ্রাস কর্ড সি সি # জিবি এর পরিবর্তে সিডি # এফ # হয়), তাই আমি এই প্রোগ্রামটি লিখেছিলাম যা প্রশংসনীয় হয় ঠিক আছে। এটি প্রতিটি নোটকে F এর উপরে নিখুঁত পঞ্চাশতম সংখ্যা হিসাবে উপস্থাপন করে তা করে does

এটি মূল্যবান কিসের জন্য, আপনি যদি এনারমনোমিক্সের পার্থক্য করতে চান, কোনও কম্পিউটারের মধ্যে যে কোনও বাদ্যযন্ত্র অন্তর্ভুক্তিকে নিখুঁত পঞ্চাশতম এবং অষ্টভীর একটি সংখ্যা হিসাবে একটি কম্পিউটার প্রোগ্রামে উপস্থাপন করা যেতে পারে। একটি বর্ধিত চতুর্থ উদাহরণস্বরূপ, 6 নিখুঁত পঞ্চমাংশ এবং -3 অক্টাভ, এবং একটি হ্রাস পঞ্চম হ'ল -6 নিখুঁত পঞ্চম এবং 4 অষ্টক।

হাস্কেল, ৪৪১ টি অক্ষর

import Data.List

notes = "FCGDAEB"

fromNum x = [notes !! (mod x 7)] ++ if x < 0 then replicate (-(div x 7)) 'b' else replicate (div x 7) '#'

toNum (x:xs) = y + 7 * if isPrefixOf "b" xs then -length xs else length xs
    where Just y = elemIndex x notes

chord xs = unwords . map (fromNum . \x -> toNum (init xs) + x) $ case last xs of 'A' -> [0,4,8]; 'M' -> [0,4,1]; 'm' -> [0,-3,1]; 'd' -> [0,-3,-6]

main = getLine >>= putStrLn . chord

কিছু উদাহরণ অনুরোধ:

jaspers:junk tswett$ ./chord
AM
A C# E
jaspers:junk tswett$ ./chord
C#m
C# E G#
jaspers:junk tswett$ ./chord
DbA
Db F A
jaspers:junk tswett$ ./chord
Cd
C Eb Gb
jaspers:junk tswett$ ./chord
A#M
A# C## E#
jaspers:junk tswett$ ./chord
Dbm
Db Fb Ab

5

যাও Arduino

ইনপুট / আউটপুট একটি COM পোর্টের মাধ্যমে আরডুইনো থেকে প্রেরণ / গৃহীত হয়। কোনও ব্যবহারকারী এটির সাথে একটি টার্মিনাল, বা আরডুইনো আইডিইতে ক্রমিক মনিটরের মাধ্যমে যোগাযোগ করতে পারে। আপনি আমার প্ল্যাটফর্মের পছন্দটি থেকে অনুমান করতে পারেন, আমি জ্যাজের আসল বাজানো অন্তর্ভুক্ত করার পরিকল্পনা করছি (যদিও আমি এখনও এটি করি নি))

আমি কীবোর্ড বোনাসকে সফলভাবে মোকাবেলা করেছি এবং আমি সীমিত সাফল্যের সাথে গিটারটি সামাল দেওয়ার চেষ্টা করেছি।

জ্যাড বাক্সটি 130 বাইটে আসে যা এটির জন্য খুব দীর্ঘ। অতএব আমি অন্যভাবে চেষ্টা করেছি, কেবল ফ্রেট সংখ্যার ট্যাব স্টাইল মুদ্রণ করছি। বর্তমানে এটি 81-100 = -19 এর বোনাসের জন্য 81 বাইট। যদি এই পদ্ধতিরটিকে বৈধ বলে মনে করা হয় তবে আমি এটিতে চেষ্টা করে উন্নতি করতে পারি।

ব্যবহৃত ছাঁটিগুলি সমস্ত ডি-টাইপ আকারের সাথে ২ য় স্ট্রিংয়ের মূলের সাথে, তৃতীয় স্ট্রিংয়ের পঞ্চমটি এবং তৃতীয় এবং চতুর্থ স্ট্রিংয়ের তৃতীয় হয়। ৫ ম এবং 6th ষ্ঠ স্ট্রিং ব্যবহার করা হয়নি এবং আমি এটিকে জ্যা বক্সের ডানদিকে এক্স দিয়ে চিহ্নিত করব (বামটি আরও স্বাভাবিক হবে তবে ডানদিকে চিহ্নিত উদাহরণগুলি পাওয়া যাবে)

কারণ প্রোগ্রামটি এফকে সর্বনিম্ন নোট হিসাবে বিবেচনা করে (কীবোর্ডের সাথে সামঞ্জস্যের জন্য এই জলের আকারের সাথে অত্যধিক উচ্চ ফ্রেটগুলি এড়িয়ে যাওয়ার ক্ষেত্রে) সর্বোচ্চ জ্যাটি একটি ই (17 তম ফ্রিটের মূল সহ) উদাহরণস্বরূপ আউটপুট দেখুন।

গল্ফিংয়ের ক্ষেত্রে কীবোর্ডটি আরও সফল। উপরে বর্ণিত কারণে এটি সিবি এর চেয়ে এফই থেকে চালিত হয়। আপনি অবশ্যই কালো নোটগুলির রূপরেখা এবং সাদা নোটগুলির মধ্যে সীমাবদ্ধকরণটি পরিষ্কারভাবে দেখতে পাবেন, তবে এটি 90% অ্যান্টিক্লোকের দিকে স্ক্রিনটিকে ঘুরিয়ে দেখে অবশ্যই দেখতে হবে ---। বি একটি সি এর মধ্যে লাইনটি ____আরও কয়েকটি বাইটের জন্য বাড়ানো যেতে পারে ।

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

যদি আমি এটির সাথে সফল হই তবে আমি এটি গল্ফ করব তবে আমার মনে হয় না এটি সামগ্রিক বিজয়ী হবে।

অবহেলিত কোড

String p="F#G#A#BC#D#E -Mm+",y,d[]=
{"    ","---|"},n="\n";

void setup() {
  Serial.begin(9600);
  Serial.setTimeout(99999);
}

void loop(){
  char x[9]; int r,t,f,i,c=1;
  Serial.readBytesUntil(13,x,9);
  Serial.println(x);  
  r=p.indexOf(x[0]);
  if (x[1]==35|x[1]==98){c=2;r+=x[1]==35?1:-1;}
  f=p.indexOf(x[c])/2;
  t=4-p.indexOf(x[c])%2;

  //chord box
  y=n;for(i=24;i--;)y+=d[1]+(i%4?"":" \n");
  y[89]=y[107]='X'; y[t*4-10]=y[t*4+52]=y[f*4+14]=y[28]='O';
  Serial.print("\t "+String(r+6)+y);

  f+=r;t+=r;

  //tab style
  Serial.println(String(t+1)+n+String(r+6)+n
  +String(f-2)+n+String(t+3)+"\nX\nX\n");

  f%=12;t%=12;

  //piano
  for(i=0;i<12;i++){
    c=0;
    y=String(p[i]);
    if(y=="#") {c=1;y=p[i-1]+y;}      
    Serial.println(d[c]+"__"+((r-i&&t-i&&f-i)?"":y));
  }  
}

নমুনা আউটপুট পাঠ্যের লাইনের মধ্যবর্তী ব্যবধান যত কম হবে ততই তত ভাল দেখাচ্ছে। সুতরাং আমি সত্যিই পোস্টটি সম্পাদনা করার সময় দেখতে দুর্দান্ত লাগে তবে পোস্টের পরে ধূসর বাক্সে ভয়াবহ। পরিবর্তে আমি আরডুইনো সিরিয়াল মনিটরের একটি স্ক্রিনশট পোস্ট করেছি যা অন্তর্বর্তী রেখার ব্যবধানের (এবং তাই মানের মানের প্রদর্শন করুন) is

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


আসল শব্দটির জন্য অপেক্ষা করতে পারি না!
ম্যাথিউ রডিক

EM এর জন্য নোটগুলি সঠিক (EG # B), তবে সেগুলি আপনার কীবোর্ডে সঠিকভাবে সাজানো হয়নি। দেখে মনে হচ্ছে আপনি যদিও সঠিক পথে রয়েছেন!
ক্যামেরন টিঙ্কার

@ ক্যামেরন টিঙ্কার দয়া করে আপনার স্ক্রিনটি 90 ডিগ্রি অ্যান্টলিক দিকের দিকে কাত করুন এবং আবার দেখুন। নোট করুন যে কীবোর্ডটি আমার পোস্টে বর্ণিত কারণে সি থেকে বি তে নয়, এফ থেকে E পর্যন্ত চলে। অভ্যন্তরীণ "জিরো নোট" হিসাবে এফ নির্বাচন করা গিটার এবং কীবোর্ড আউটপুট উভয়ের জন্য একটি আপস ছিল। বামদিকে 3 টি কালো নোট রয়েছে, 2 টি ডানদিকে এবং আউটপুট নোটগুলি সঠিকভাবে প্রান্তিক করা আছে। বি এবং সি এর মধ্যে বিভাজন বাড়ানো এটিকে আরও পরিষ্কার করে তুলবে, তবে প্রায় 20 অতিরিক্ত বাইটের জন্য ব্যয় হবে। এটি অপরিশোধিত, তবে আমি এখনও আমার কীবোর্ড পান্ডুবারের চেয়ে বেশি পঠনযোগ্য বলে মনে করি।
স্তর নদী সেন্ট

আমি জানি না আমি কীভাবে মিস করেছি! এর জন্যে দুঃখিত. আমি একজন পিয়ানোবাদক এবং আমার প্রথম প্রবণতাটি যখন দেখলাম এটি ছিল যে কীবোর্ডটি ঠিক মতো দেখাচ্ছে না;)।
ক্যামেরন টিঙ্কার

@ ম্যাথিউরডিক আমার কাছে এখনই আরডিনো থেকে শব্দ বেরিয়ে এসেছে তবে তারা এতটা দরিদ্র আমি নিশ্চিত না যে আমি তাদের একটি স্বীকৃত জোর বলব। আমি আবার চেষ্টা করব, তবে আরডুইনোর সাথে কিছু জিনিস ঘটছে যা আমি বুঝতে পারি না। যাইহোক, আমি কেবলমাত্র কীবোর্ড এবং শব্দ সহ বিবিসি বেসিকটিতে একটি উত্তর পোস্ট করেছি যা দেখতে আরও ভাল দেখাচ্ছে। তাই আমি পরে এই পোস্টটি আপডেট করব
লেভেল রিভার সেন্ট

4

পাইথন 3 - 315 চর

কোডগল্ফে প্রথমবার! কেবলমাত্র এখনই গৌণ, বড়, হ্রাস এবং বৃদ্ধিযুক্ত chords সমর্থন করে।

z=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];y=[1,2,4,5,6]
def q(a):print(z[a%12])
a=input();k=(ord(a[0])+3)%7;j=k;m=4;s=0;f=7;
for i in y:
    if(k>=i):j+=1
if('#'in a):j+=1
if('b'in a):j-=1
if('m'in a or'0'in a):m=3
if('+'in a or"aug"in a):f=8
if('0'in a or"dim"in a):f=6;m=3
if('ma'in a):m=4
q(j);q(j+m);q(j+f);

2
'C C# D D# E F F# G G# A A# B'.split(' ')কিছু বাইট সংরক্ষণ করতে আপনার আক্ষরিক অ্যারের পরিবর্তে ব্যবহার করুন ।
wchargin

2
if('#'in a):j+=1-> if'#'in a:j+=1= প্রতিটি বিবৃতিতে 2 টি কম লেখেন। এছাড়াও yএকটি range()অভিব্যক্তি পরিবর্তন পরিবর্তন কিছু সংরক্ষণ করে। স্বাগত! (এবং মনে রাখবেন যে
নিউলাইনগুলিও

2
@wch আরও বাইটস এর সাহায্যে সংরক্ষণ করা যায় 'C C# D D# E F F# G G# A A# B'.split();)
আন্ডারগ্রাউন্ডোমোনাইল

1
আপনি কিভাবে আপনার স্কোর গণনা? আমি মনে করি আপনাকে পাশাপাশি প্রতিটি চর হিসাবে নতুন লাইন গণনা করতে হবে। যাইহোক, যেহেতু এই উত্তরটি কেবল পাইথন 3 এ কাজ করে, আমি আপনার উত্তরটি সম্পাদনা করব যাতে স্পষ্টভাবে তা বলা যায়। এছাড়াও, yসঞ্চয় করতে ব্যবহার করার পরিবর্তে, [1,2,4,5,6]আপনি কেবল এড়িয়ে যান yএবং লাইন 4 এর সাথে for i in[1,2,4,5,6]:কেন প্রতিস্থাপন করবেন না ? যাইহোক, কোডগল্ফে আপনাকে স্বাগতম এবং আমি আশা করি আপনি এখানে মজা পাবেন।
#HongKongInd dependence

1
আপনি 5 টি লাইন 4 এর পরিবর্তে কেবল একটি স্থান দিয়ে
ইনডেন্ট

4

পাইথন 506 (1 চর হিসাবে ইউনিকোড) -150 (শব্দ) -150 (কীবোর্ড) = 206

শব্দ বাজানোর জন্য, এটি ব্যবহার করে pygame.midi। মনে রাখবেন যে pygame.midi.get_default_output_id()পদ্ধতিটি খুব ভালভাবে কাজ করে না। তাই আপনি যদি লাইন পরিবর্তন চেষ্টা করতে পারেন o=Output(get_default_output_id())থেকে o=Output(1), o=Output(2)ইত্যাদি সাধারণত সঠিক মান 0 এবং 5 এর মধ্যে নেই।

c=input()
s='C D EF G A B'.index(c[0])+{'#':1,'b':-1,'':0}[c[1:-1]]
m='0mM+'.index(c[-1])
t=s+3+m//2
R=[list(x)for x in['┌─'+'─┬─'*13+'─┐']+['│'+'  │'*14]*5+['└─'+'─┴─'*13+'─┘']]
i=3
for d in[3,6,3,3,6]*2:q=slice(i-1,i+2);R[0][q]='┬─┬';R[1][q]=R[2][q]=R[3][q]='│ │';R[4][q]='└┬┘';i+=d
X=[2]+[1,2,1,2,3,1,2,1,2,1,2,3]*2
from pygame.midi import*
init()
o=Output(get_default_output_id())
for s in[s,t,t+3+m%2]:R[[5,3][s%12 in[1,3,6,8,10]]][sum(X[:s+1])]='o';o.note_on(s+60,127,1)
for r in R:print(''.join(r))

ফলাফল

goooolf> python chords2.py
CM
┌─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┬─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │
│ o│  │ o│  │ o│  │  │  │  │  │  │  │  │  │
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
goooolf> python chords2.py
Cm
┌─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┬─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││o│ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │
│ o│  │  │  │ o│  │  │  │  │  │  │  │  │  │
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
goooolf> python chords2.py
Dm
┌─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┬─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │
│  │ o│  │ o│  │ o│  │  │  │  │  │  │  │  │
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
goooolf> python chords2.py
D+
┌─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┬─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │o││ ││o│ │ │ ││ │ │ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │
│  │ o│  │  │  │  │  │  │  │  │  │  │  │  │
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
G+
┌─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┬─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││o│ │ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │
│  │  │  │  │ o│  │ o│  │  │  │  │  │  │  │
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
goooolf> python chords2.py
Am
┌─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┬─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │
│  │  │  │  │  │ o│  │ o│  │ o│  │  │  │  │
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
goooolf> python chords2.py
C#0
┌─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┬─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │o││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │
│  │  │ o│  │ o│  │  │  │  │  │  │  │  │  │
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
goooolf> python chords2.py
EbM
┌─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┬─┬─┬┬─┬─┬─┬─┬┬─┬┬─┬─┐
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││ │ │ │ ││ ││ │ │ │ ││ │ │ │ ││ ││ │ │
│ │ ││o│ │ │ ││ ││o│ │ │ ││ │ │ │ ││ ││ │ │
│ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │ └┬┘└┬┘ │ └┬┘└┬┘└┬┘ │
│  │  │  │  │ o│  │  │  │  │  │  │  │  │  │
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘

3

জে - 82 চর

স্ব-অন্তর্ভুক্ত, কনসোল ইনপুট থেকে পঠিত। আপনি stdin দরকার চূড়ান্ত পরিবর্তন 1একটি থেকে 3। কোনও বোনাস দাবি করা হচ্ছে না, এবং কেবল ত্রিডাডগুলি আবরণ করা হচ্ছে।

+/&(0 3 6++/\_3{.#:'0mM+'i.{:e)&.((,~C`Db`D`Eb`E`F`Gb`G`Ab`A`Bb`B)i.;:)}:e=.1!:1]1

একটি ধারালো নোটের পরিবর্তে যেমন C#আপনাকে সমতুল্য সমতল নামটি ব্যবহার করতে হবে Db। (এটির জন্য সংশোধন করা কোডটি কিছুটা বেশি বাড়িয়ে দেবে)) চার প্রকারের জীবাণু 0হ্রাসের mজন্য, অপ্রাপ্তবয়স্কদের Mজন্য, প্রধান এবং +বর্ধিত।

যুক্তিটি নিম্নরূপ: আমরা 0-3-6 বেসটিতে অফসেট যুক্ত করতে শেষ অক্ষরটি ব্যবহার করি, যা তৃতীয় এবং পঞ্চম ধরণের নির্বাচন করে। এদিকে, আমরা নোটটি কোথা থেকে টানতে স্কেলের মধ্যে তা খুঁজে পেতে নোটটি ব্যবহার করি। ;:উভয় নোট শুরুতে স্কেল মধ্যে সূচিবদ্ধ সঙ্গে সামঞ্জস্যপূর্ণ, এবং পরে (দ্বারা তোলে &.) একটি মহাকাশ টানা নোট স্ট্রিং পৃথক সক্রিয়।

ব্যবহারের উদাহরণ:

   +/&(0 3 6++/\_3{.#:'0mM+'i.{:e)&.((,~C`Db`D`Eb`E`F`Gb`G`Ab`A`Bb`B)i.;:)}:e=.1!:1]1
AM
A Ch E
   +/&(0 3 6++/\_3{.#:'0mM+'i.{:e)&.((,~C`Db`D`Eb`E`F`Gb`G`Ab`A`Bb`B)i.;:)}:e=.1!:1]1
Ab0
Ab B D
   +/&(0 3 6++/\_3{.#:'0mM+'i.{:e)&.((,~C`Db`D`Eb`E`F`Gb`G`Ab`A`Bb`B)i.;:)}:e=.1!:1]1
B+
B Eb G
   +/&(0 3 6++/\_3{.#:'0mM+'i.{:e)&.((,~C`Db`D`Eb`E`F`Gb`G`Ab`A`Bb`B)i.;:)}:e=.1!:1]1
Em
E G B

প্রত্যয় 'এইচ' "সংগীত স্বরলিপি মান" এর মধ্যে একটি অনুসরণ করে?
ম্যাথিউ রডিক

@ ম্যাথিউরডিক আমি মনে করি এটি একটি ধূসর এলাকা, তাই আমি ফ্ল্যাটগুলিতে তাদের সমস্তকে ধাক্কা দিয়েছি। কার্যকারিতা কোন পরিবর্তন। আমি কেন আগে এই কাজ করিনি তা জানেন না।
অ্যালগরিদমশর্ক

2

জাভাস্ক্রিপ্ট, 224 চর

n=prompt();a="A0A#0B0C0C#0D0D#0E0F0F#0G0G#".split(0);x=1;r=a.indexOf(n[0]);n[1]=="#"&&(r++,x++);n[1]=="b"&&(r--,x++);s=r+4;l=r+7;(n[x]=="m"||n[x]==0)&&s++;s%=12;n[x]=="+"&&l++;n[x]==0&&l--;l%=12;alert(a[r]+" "+a[s]+" "+a[l])

এটি আমার প্রথম কোড গল্ফ। আমি মনে করি এটি আরও খাটো হতে পারে তবে আমি সংরক্ষণ করতে কোনও বাইট পাই না।

সমর্থন প্রধান, m, ছোটখাট জন্য 0কমান জন্য, +জন্য বৃদ্ধি, বা 37 আরো জন্য বাইট dim, aug


n[m]==0সহজভাবে হতে পারে !n[m]। একই জায়গায় অন্য জায়গায় প্রযোজ্য। মোট আপনি সহজেই 6 টি অক্ষর কেটে ফেলতে পারেন
গৌরাঙ্গ ট্যান্ডন

@GaurangTandon যেহেতু nস্ট্রিং, n[m]==0নিক্ষেপ করা হবে 0থেকে "0", তাই এটি সমান n[m]=="0""0" == 0সত্য, তবে !"0"মিথ্যা।
নাস্তা

আমি কেবল ইশারা করছিলাম কারণ আমি যখন ইনপুট দিয়েছিলাম তখন একই আউটপুট পেয়েছিলাম AM। আমিও ভুল হতে পারি।
গৌরাঙ্গ টন্ডন

2

পাইথন ( 143 134 অক্ষর)

n,a='A A# B C C# D D# E F F# G G#'.split(),input();m,i=ord(a[-1])-42,n.index(a[:-1])
print(n[i],n[(i+4-m//2)%12],n[(i-4+(-m//2))%12]) 

আমার প্রথম গল্ফ চ্যালেঞ্জ :), আরও কিছু বাইট শেভ করা যায় কিনা জানেন না।
এখানে ব্যবহৃত স্বরলিপিটি * অগ / + মাজ / মিনিট / - ম্লান
আমি কোডটিতে ধ্রুবক 42 থাকার জন্য আমি বোনাস পয়েন্টটি প্রাপ্য: পি


আপনি এর মতো কয়েকটি বাইট পেতে পারেন:n,q,a='A A# B C C# D D# E F F# G G#'.split(),[4,4,3,3],input();m,i=ord(a[-1])-42,n.index(a[:-1])
ম্যাথিউ রডিক

1

পাইথন 3: 257 - 150 = 107

জে সলিউশনটি হারাতে কেবল 25 অক্ষর খুব দীর্ঘ! আচ্ছা ভালো. এখানে কিছু ঝরঝরে ধারণা আছে, আমার মনে হয়।

I='AaBCcDdEFfGg'*2
Q='0123456789.,'*2
K="""-1#_2
-,#_0
-9#_.
____8
-6#_7
-4#_5
____3"""
r,*R,q=input()
r=I.find(r)+bool(R)
p=str.replace
for x in[0]+[8,4,7,3,6]['+Mm0'.find(q):][:2]:K=p(K,Q[x+r],I[x+r].upper())
for x in Q:K=p(K,x,' ')
print(p(K,' #','  '))

ইনপুট উদাহরণগুলির মতো, যদিও আপনার অবশ্যই ফ্ল্যাট নামের পরিবর্তে তীক্ষ্ণ নাম ব্যবহার করতে হবে। (যেমন Gb অবশ্যই F # হবে)

আউটপুট হ'ল পিয়ানোগুলির একক অষ্টাভ যা উপরে এবং বাম দিকে দেখা যায়, নোটের নামগুলি সুপারমোপ করা থাকে। কল্পনা মাত্র একটি ছোট প্রসারিত হওয়া উচিত।

$ echo C#m | python3 chords.py
-  _ 
-G#_ 
-  _ 
____ 
-  _E
-C#_ 
____ 

সুন্দর কাজ! যদিও, আমি আউটপুটটিতে নোটগুলি খেলতে দেখছি না? কারণ CM, আমাদের পড়তে হবে C E G...
ম্যাথিউ রডিক

ওহ, আমি মনে করি যে প্রশ্নটি ভুল ব্যাখ্যা করেছি। আসুন দেখি আমি কি এতে কাজ করতে পারি ...
পান্ডুবিয়ার

সংশোধন করা হয়েছে! খুব দীর্ঘ ...):
পান্ডুবিয়ার

আপনি কি bool(R)সাথে প্রতিস্থাপন করতে পারবেন না R|0?
ম্যাথিউ রডিক

নাহ, মুল বক্তব্যটি হল যে আর একটি তালিকা এবং bool(R)সর্বমোট হলে 1 (সত্য) এবং শূন্য হলে 0 (মিথ্যা)। |অপারেটর তালিকা সঙ্গে কাজ করে না ...
pandubear

1

স্কেল 537 অক্ষর - 50

import java.util.Scanner
object C extends App{
val c=Map("M"->145,"m"->137,"+"->273,"0"->73,"7"->1169,"M7"->2193,"m7"->1161,"Mm7"->2185,"+7"->1297,"+M7"->2321,"07"->585,"7b5"->1097)
val n=List("A","A#","B","C","C#","D","D#","E","F","F#","G","G#")
val o=List("","Bb","Cb","B#","Db","","Eb","Fb","E#","Gb","","Ab")
val s=new Scanner(System.in).nextLine
val v=s indexWhere{c=>c!='#'&&c!='b'&&(c<'A'||c>'G')}
val (u,m)=s splitAt v
val x=n.indexOf(u)max o.indexOf(u)
val k=c(m)
for(i<-0 to 11)if((k&(1<<i))!=0)print(n((i+x)%12)+" ")
println}

0

হাস্কেল, ২3৩ টি চর

n(s,a)="CCDDEFFGGAABB"!!(s+1-a):["b#"!!a|" b b  b b b "!!s/=' ']
t p=[(s,a)|s<-[11,10..0],a<-[0,1],n(s,a)==p]!!0
m(s,d)=n(mod s 12,d-3)
c q=[n(a,x),m(a+d,d),m(a+d+e,e)]where
 (a,x)=t$init q;f=lookup(last q).zip"0mM+";Just d=f[3,3,4,4];Just e=f[3,4,3,4]
main=print.c=<<getLine

ফলাফল

C0 ->["C","Eb","Gb"]   Cm ->["C","Eb","G"]    CM ->["C","E","G"]     C+ ->["C","E","G#"]    
C#0->["C#","F","G"]    C#m->["C#","F","G#"]   C#M->["C#","F","Ab"]   C#+->["C#","F","A"]    
D0 ->["D","F","Ab"]    Dm ->["D","F","A"]     DM ->["D","F#","A"]    D+ ->["D","F#","A#"]   
D#0->["D#","Gb","A"]   D#m->["D#","Gb","A#"]  D#M->["D#","G","Bb"]   D#+->["D#","G","B"]    
E0 ->["E","G","Bb"]    Em ->["E","G","B"]     EM ->["E","G#","B"]    E+ ->["E","G#","C"]    
F0 ->["F","Ab","B"]    Fm ->["F","Ab","C"]    FM ->["F","A","C"]     F+ ->["F","A","C#"]    
F#0->["F#","A","C"]    F#m->["F#","A","C#"]   F#M->["F#","A#","Db"]  F#+->["F#","A#","D"]   
G0 ->["G","Bb","Db"]   Gm ->["G","Bb","D"]    GM ->["G","B","D"]     G+ ->["G","B","D#"]    
G#0->["G#","B","D"]    G#m->["G#","B","D#"]   G#M->["G#","C","Eb"]   G#+->["G#","C","E"]    
A0 ->["A","C","Eb"]    Am ->["A","C","E"]     AM ->["A","C#","F"]    A+ ->["A","C#","F"]    
A#0->["A#","Db","F"]   A#m->["A#","Db","F"]   A#M->["A#","D","F"]    A#+->["A#","D","F#"]   
B0 ->["B","D","F"]     Bm ->["B","D","F#"]    BM ->["B","D#","Gb"]   B+ ->["B","D#","G"]    
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.