উদ্বোধন করা বাদ্যযন্ত্র


11

ছাত্রদল Segno এবং দা কাপো দুটি খুব বেশি ব্যবহৃত বাদ্যযন্ত্র পরিভাষা। এর অর্থ যথাক্রমে " চিহ্ন থেকে " (𝄋) এবং " শুরু থেকে "।

এখানে কোডা (𝄌) এর ধারণাও রয়েছে যা সংগীতের এক টুকরোটির একেবারে শেষ। এটি খণ্ডটির "মূল বিভাগ" এর পরে কী খেলবে।

একজন ডিএস আল কোডা ( ডাল Segno আল কোডা ), উদাহরণস্বরূপ, মানে হলো "ফিরে যেতে segno , খেলা, যতক্ষণ না আপনি যেতে বলা করছি কোডা , এবং তারপর সেখানে তিড়িং লাফ।"

বিবরণ

এই চ্যালেঞ্জটিতে আপনার কাজটি হ'ল ডাল সেগনো এবং দা ক্যাপোস এবং নাও থাকতে পারে এমন নোটের সংখ্যার সমন্বয়ে ইনপুট নেওয়া এবং উপরোক্ত উল্লিখিত জাম্পগুলি "উদ্ঘাটন" দিয়ে একই সংগীত আউটপুট করা যাতে পুনরাবৃত্তিগুলি ভার্চটিমে বিস্তৃত হয়।

ইনপুট

আপনার কোডটি ইনপুট হিসাবে একটি স্ট্রিংয়ের ফাঁক দিয়ে আলাদা করে নোট বা সিগন্যালের (এখানে একটি নোট ছাড়া কিছু হিসাবে সংজ্ঞায়িত) একটি ক্রম নেওয়া উচিত ।

  • নোট কোন হয় a, b, c, d, e, f, অথবা g, একটি ঐচ্ছিক সঙ্গে #বা bযোগ করা (এই চ্যালেঞ্জ উদ্দেশ্যে, কোন তাল যায়)।

  • C(মূলধন গ) কোডা চিহ্নিতকরণের প্রতিনিধিত্ব করে । সর্বদা শূন্য বা দুটি চোদা চিহ্ন থাকবে; প্রথম চোদা চিহ্নিতকরণটি কোথা থেকে লাফানো উচিত তা উপস্থাপন করে এবং দ্বিতীয়টি কোথা থেকে লাফ দিতে হবে তা উপস্থাপন করে।

  • একটি S(মূলধন) একটি সাইনো চিহ্নিতকরণ উপস্থাপন করে। সবসময় পারেন শূন্য বা এক হতে হবে signo উপলক্ষে (গুলি)।

  • একটি F(মূলধন চ) জরিমানা চিহ্নিত করে। এটি টুকরোটির শেষটিকে "ওভাররাইড" করে - আরও নীচের দিকে — সর্বদা হয় শূন্য বা একটি সূক্ষ্ম চিহ্ন (গুলি) থাকবে।

  • নীচের পাঠ্যের নীচের যে কোনও একটি স্ট্রিং প্রতিনিধিত্ব করে:

    • D.S. al fine: সাইনোতে যান এবং টুকরোটি শেষ না হওয়া পর্যন্ত সূক্ষ্ম চিহ্ন (যদি তা বিদ্যমান থাকে) অবধি খেলুন ।

    • D.S. al codaযান: signo পর্যন্ত, খেলা কোডা , তারপর দ্বিতীয় ঝাঁপ কোডা টুকরা শেষ না হওয়া পর্যন্ত উপলক্ষে এবং খেলার।

    • D.C. al fine: শুরুতে যান, শেষ হওয়া পর্যন্ত বা সূক্ষ্ম চিহ্নিতকরণ পর্যন্ত খেলুন ।

    • D.C. al coda: শুরুতে যান, চোদা না হওয়া পর্যন্ত খেলুন , তারপরে দ্বিতীয় কোডার চিহ্নিতকরণে ঝাঁপুন এবং টুকরোটি শেষ না হওয়া পর্যন্ত খেলুন।

    সর্বদা সর্বনিম্ন শূন্য এবং প্রতি টুকরো প্রতিটি স্ট্রিংয়ের সর্বোচ্চ একটি থাকবে one এক টুকরোতে কখনও একাধিক al fineগুলি বা একাধিক al codaগুলি থাকবে না।

আউটপুট

আপনার কোডটি একই স্ট্রিং ফর্ম্যাটে আউটপুট করা উচিত: স্পেস দ্বারা বিচ্ছিন্ন নোটগুলির একটি তালিকা।

আপনি সর্বদা ধরে নিতে পারেন যে আউটপুটটি এক বা একাধিক অক্ষর দীর্ঘ হবে।

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

ইন: a# bb c b a
আউট:a# bb c b a

ইন: a S b D.S. al fine c
আউট:a b b c

ইন: a S b C c D.S. al coda d C e
আউট:a b c b e

ইন: a b F c d D.C. al fine e f
আউট:a b c d a b

ইন: a b D.C. al fine c d F e f
আউট:a b a b c d

ইন: a b C c d D.C. al coda e f C g g#
আউট:a b c d a b g g#

ইন: a b D.C. al coda c d C e f C g g#
আউট:a b a b c d g g#

ইন: a b S c d C D.C. al coda C D.S. al fine e f F g
আউট:a b c d a b c d c d e f

ইন: a S b C c D.S. al coda C d D.S. al fine e F f
আউট:a b c b d b c d e

ইন: a b C c d D.C. al coda e f F g g# C gb a# D.C. al fine
আউট:a b c d a b gb a# a b c d e f

ইন: a F b C D.C. al coda C D.C. al fine
আউট:a b a b a

ইন: C a S b D.C. al coda C c D.S. al fine d
আউট:a b c b c d

ইন: a S b D.S. al coda C C c D.C. al fine
আউট:a b b c a b c

ইন: a F C b C D.C. al coda D.C. al fine
আউট:a b a a

বিধি

  • চিহ্নগুলি সর্বদা একটি যৌক্তিক ক্রমে উপস্থিত হবে। এটি হ'ল, এর Sপরে আর কখনও হবে না D.S.এবং সর্বদা আগে থাকবে etc.

  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে।

উত্তর:


1

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

x=>eval('n=(" "+x).replace(/D.{11}|[CSF]/g,d=>({C:4,S:5,F:6}[d]|(d[2]<"S")*2+(d[8]<"f"))).split` `;for(i=c=f=o="";v=n[++i];v<9?v<4?(n[i]=7,i=0,s=n.indexOf`5`,v==0?f=i=s:v==1?c=i=s:v==2?f=1:c=1):v==4&c?c=!(i=n.indexOf("4",i+1)):v==6&f?i=n:0:o+=v+" ");o')

ব্যাখ্যা

আরও গল্ফ করা যেতে পারে তবে আমি আপাতত শেষ করেছি।

x=>
  eval(`                                  // use eval to enable for loop without return
    n=(" "+x)                             // n = array of [ "", ...notes/commands ]
                                          // empty first element means f and c can be set
                                          //     to i (always true) in the cases below
      // DS fine => 0, DS coda => 1, DC fine => 2, DC coda => 3, C => 4, S => 5, F => 6
      .replace(/D.{11}|[CSF]/g,d=>({C:4,S:5,F:6}[d]|(d[2]<"S")*2+(d[8]<"f")))
      .split\` \`;
    for(
      i=                                  // i = position in note array
      c=                                  // c = look out for coda if true
      f=                                  // f = look out for fine if true
      o="";                               // o = output string
      v=n[++i];                           // v = note/command
      v<9?                                // if not a note
        v<4?(                             // if DS/DC
          n[i]=7,                         // change it to NOP
          i=0,                            // reset i here to save doing it in DC cases
          s=n.indexOf\`5\`,
          v==0?f=i=s:                     // case: D.S. al fine
          v==1?c=i=s:                     // case: D.S. al coda
          v==2?f=1:                       // case: D.C. al fine
          c=1                             // case: D.C. al coda
        ):
        v==4&c?c=!(i=n.indexOf("4",i+1)): // case: C
        v==6&f?i=n:                       // case: F
        0                                 // case: S
      :o+=v+" "                           // add the note
    );o                                   // return the output
  `)

পরীক্ষা

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