সারণী নোট


9

চ্যালেঞ্জ

একটি তালিকাতে একটি নোট দেওয়া হয়েছে, আপনাকে অবশ্যই সংশ্লিষ্ট ট্যাবলেটচারটি ফিরিয়ে দিতে হবে।

মন্তব্য

নোটগুলি অবশ্যই A থেকে G অন্তর্ভুক্ত এবং অষ্টভের পরিসীমা 2 থেকে 6 অন্তর্ভুক্ত থাকতে হবে। ফর্ম্যাটটি নোট-অষ্টক যা #একটি তীক্ষ্ণ bপ্রতিনিধিত্ব করে এবং একটি ফ্ল্যাট প্রতিনিধিত্ব করে। যেমন: A7বা F#3

ট্যাব

ত্যাবল্যাচারটি সংগীত রচনার একটি পদ্ধতি যা ডায়াগ্রামিকভাবে উপকরণ উপস্থাপন করে। এটি সাধারণত তাদের পাঁচটি লাইন হিসাবে সংখ্যার প্রতিনিধিত্ব করে।

লাইনগুলিতে লেখা সংখ্যাগুলি পছন্দসই পিচটি প্রাপ্ত করার জন্য ব্যবহৃত পোকার প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, কর্মীদের উপরের লাইনে লিখিত 3 নম্বরটি ইঙ্গিত দেয় যে প্লেয়ারটিকে উচ্চ ই (প্রথম স্ট্রিং) এর তৃতীয় ফ্রেটে নীচে চাপতে হবে। সংখ্যা 0 বাদামকে বোঝায় - এটি একটি উন্মুক্ত স্ট্রিং।

ফ্রেট সংখ্যা 22 টির বেশি না হতে পারে এবং গিটারটি ছয়টি স্ট্রিং।

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

ট্যাবটির শুরুটি দেখতে দেখতে এইরকম হওয়া উচিত:

e |-----
B |-----
G |-----
D |-----
A |-----
E |-----

এবং শেষটি দেখতে হবে:

-----|

সব লাইনের জন্য।


(সূত্র: justinguitar.com )

উদাহরণ

Input: C3 C3 D3 E3 F3

Output:

e |-----------------------------------|
B |-----------------------------------|
G |-----------------------------------|
D |-----------------0-----2-----3-----|
A |-----3-----3-----------------------|
E |-----------------------------------|

জয়লাভ

সংক্ষিপ্ততম কোডটি জয়ী


আমাদের আউটপুটে আমাদের কি উপযুক্ত স্ট্রিং ব্যবহার করা দরকার? আমাদের কেবল ট্যাবলেটর আউটপুট করা থেকে বিরত রাখতে পারে যা কেবল ই স্ট্রিং ব্যবহার করে?
danmcardle

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

এক অক্টেভ দ্বারা একটি নোট বাড়াতে, আমরা ফ্রেটের মানটিতে 12 টি ফ্রেট যুক্ত করতে পারি। এটি রোধ করার কোনও নিয়ম আছে যা আমি মিস করেছি?
danmcardle

@ ক্র্যাজেডগ্রিমলিন আপনি করতে পারেন, তবে এটি কেবল দুটি অকটভ সরবরাহ করে।
বিটা ক্ষয়

আমি কেবল প্যাডেন্টিক হচ্ছি, তবে আপনি কখনও বলেননি যে আমার 1000 ফ্রেট সহ সত্যই দীর্ঘ গিটার থাকতে পারে না।
danmcardle

উত্তর:


8

পাইথন 3 - 329 328 319 300

কোডগ্রাফ.সে এটি আমার প্রথম পোস্ট, এবং সম্ভবত প্রায় অনুকূল নয়; আমি এখানে অনেকগুলি পোস্ট পড়েছি তবে আমার প্রথম কোড গল্ফটি সম্ভবত 50 ঘন্টা আগে করেছি। চেষ্টা করতে চেয়েছিলেন, যদিও!

সম্পাদনা: 1 বাইট সরানো হয়েছে, সেখানে কোনও অতিরিক্ত ড্যাশ আউটপুট দেওয়ার দরকার নেই

সম্পাদনা 2: 9 বাইট সরানো হয়েছে, নোটের স্ট্রিং থেকে কিছু স্পেস সরিয়েছে

সম্পাদনা 3:filter() জেনারেটরে রূপান্তর করে 19 বাইট সরানো হয়েছে

a,b='C B#oC#DboD oD#EboE FboF E#oF#GboG oG#AboA oA#BboB Cb',input().split()
for f in range(6):print('eBGDAE'[f]+' |-----'+''.join([((str(d[-1])if f==6-len(d)else'')+'-'*6)[:6]for d in[[c-d+9for d in b"%*/48="if c+9>=d]for c in[12*int(g[-1])+a[:a.index((g[:-1]+' ')[:2])].count('o')for g in b]]])+'|')

কিছুটা নাড়িত:

a='C B#oC#DboD oD#EboE FboF E#oF#GboG oG#AboA oA#BboB Cb' # string of notes
b=input().split()                                         # read user input
for f in range(6):                    # loop through the strings

  print('eBGDAE'[f] + ' |-----' +     # string identifier and start of string
  ''.join([                           # join notes of tablature
  ((str(d[-1])                        # highest string the note can be played on
  if f == 6 - len(d)                  # if this is the correct string print the fret
  else '')                            # if not then only dashes
  + '-' * 6)                          # print the dashes after the fret
  [:6]                                # but only until 6 chars per note

  for d in [                          # loop through strings
  [c - d                              # calculate fret number
  + 9                                 # add back the 9 (explained below)
  for d in b"%*/48="                  # string values increased by 9 as ASCII bytes
  if c + 9 >= d]                      # filter to remove too high-pitched strings

  for c in [                          # loop through note values
  12 * int(g[-1]) +                   # octave value
  a[:a.index(                         # part of note string before this note
  (g[:-1] + ' ')[:2])]                # unique note identifier
  .count('o')                         # o's (frets) between C and this note
  for g in b]]])                      # loop through notes

  + '|')                              # end tablature

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