একটি ASCII কী স্বাক্ষর আঁকুন


22

একটি নোটের একটি ইনপুট দেওয়া হয়েছে, ট্রেবল ক্লাফের সাথে সংশ্লিষ্ট মেজর কীটির একটি ASCII অঙ্কন আউটপুট করুন।

এখানে সমস্ত প্রধান কী (এতে ডাবল-শার্প বা ডাবল-ফ্ল্যাট অন্তর্ভুক্ত নয়) এবং তাদের সম্পর্কিত কী স্বাক্ষর রয়েছে:


পঞ্চম ডিলাক্স 4 এর বৃত্তউইকিপিডিয়া ব্যবহারকারীরা জাস্ট প্লে বিল, কপিরাইট সিসি বাই-এসএ 3.0

যদি ইনপুটটি শার্পগুলির সাথে কী হয় তবে উপযুক্ত সংখ্যার শার্পের সাথে নিম্নলিখিত ASCII শিল্পটি আঁকুন:

   #
-#-------
      #
----#----
  #
-------#-
     #
---------

---------

এবং যদি ইনপুটটি ফ্ল্যাটের সাথে কী থাকে:

---------
  b
----b----
      b
-b-------
   b
-----b---
       b
---------

এখানে সম্ভাব্য ইনপুটগুলির সংক্ষিপ্ত সংক্ষিপ্তসার পাশাপাশি তারা কতগুলি শার্প বা ফ্ল্যাট ব্যবহার করে:

   0   1   2   3   4   5   6   7
#  C   G   D   A   E   B   F#  C#
b  C   F   Bb  Eb  Ab  Db  Gb  Cb

ড্যাশগুলির পাঁচটি লাইন অবশ্যই সর্বদা আঁকতে হবে, তবে প্রতিটি লাইনে ড্যাশগুলির কয়েকটি সংখ্যা থাকতে পারে যেমন ধারালো বা ফ্ল্যাটগুলির প্রতিটি পাশের কমপক্ষে একটি কলামের প্যাডিং থাকে, যতক্ষণ না ড্যাশের প্রতিটি লাইনের দৈর্ঘ্য একই থাকে। উদাহরণস্বরূপ, এগুলি হ'ল ইনপুটটির জন্য গ্রহণযোগ্য আউটপুটগুলি Ab:

---------   ------   ---------   ----------------
  b           b           b          b
----b----   ----b-   -------b-   ------b---------

-b-------   -b----   ----b----   ---b------------
   b           b           b          b
---------   ------   ---------   ----------------

---------   ------   ---------   ----------------

সি মেজরের ক্ষেত্রে, যার কোনও তীক্ষ্ণ বা ফ্ল্যাট নেই, লাইন প্রতি কোনও ধনাত্মক সংখ্যা (এমনকি একটি) গ্রহণযোগ্য one

প্রতিটি লাইনের ফাঁকফোকর জায়গাগুলির মতো যে কোনও পরিমাণ শীর্ষস্থানীয় বা পিছনের শ্বেত স্পেসটি ঠিক আছে। অতিরিক্ত প্রতিটি শীর্ষস্থানীয় স্পেস যতক্ষণ না প্রতিটি লাইনে একই সংখ্যা রয়েছে ততক্ষণ ঠিক আছে।

আপনি চাইলে ছোট হাতের ইনপুট নিতে পারেন বা ধারালো বা ফ্ল্যাট ছাড়া ইনপুটগুলিতে একটি পিছনের স্থান থাকতে পারে you

যেহেতু এটি , তাই বাইটের সংক্ষিপ্ততম সমাধানটি বিজয়ী হবে।



3
@ নীল আহ, আপনার চ্যালেঞ্জ চুরি করার জন্য দুঃখিত> _ <পোস্টের আগে আমি মূল সাইটটি অনুসন্ধান করেছিলাম তবে স্যান্ডবক্সটি পরীক্ষা করার চিন্তা করিনি।
ডোরকনবব

উত্তর:


3

পাইথন 2 , 206 197 178 175 168 161 বাইট

মিঃ এক্সকোডারকে -12 বাইটের জন্য ধন্যবাদ!

এটি এমন একটি ফাংশন যা অক্ষরের 2D তালিকা হিসাবে ফলাফলটি দেয়। যদি ইনপুটটিতে তীক্ষ্ণ / ফ্ল্যাট না থাকে তবে এটি কোনও স্থান দিয়ে প্যাড করা উচিত।

def f(k,r=range(10)):n="CGDAEB".find(k[0])+7*' #'.find(k[1]);return[[(' -'[i%2],'b#'[n>0])[0<j<=abs(n)and`i`==(n*"1403625"+"5263748")[j-1]]for j in r]for i in r]

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


আমি মনে করি "FCGDAEB".find(k[0])-1মানচিত্রগুলি Fথেকে -1তাদের সূচক এবং অন্যদের - 1, তাই আমি মনে করি n="CGDAEB".find(k[0])+7*('#'in k)-7*('b'in k)পরিবর্তে কাজ করবে। ( 175 বাইট? )
মিস্টার এক্সকোডার

@ মিঃ এক্সকোডার এটি স্মার্ট ... আপনাকে ধন্যবাদ।
ফ্লিপট্যাক

3

কাঠকয়লা , 60 বাইট

≔⁻⁺⊖﹪⊗℅§θ¬χ⁷×⁷№θ#×⁷№θbθ←UO⁹¦⁹-¶Fθ«Jι⊖﹪⊕׳ι⁷#»F±θ«Jι⊕﹪⁺³×⁴ι⁷b

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

≔⁻⁺⊖﹪⊗℅§θ¬χ⁷×⁷№θ#×⁷№θbθ

কী স্বাক্ষরে তীক্ষ্ণ সংখ্যা গণনা করুন।

←UO⁹¦⁹-¶

স্টাভটি মুদ্রণ করুন, তবে উত্সের এক বর্গাকার যাতে প্রথম তীক্ষ্ণ / ফ্ল্যাটটি কলামের শূন্যে থাকে।

Fθ«

যে কোনও তীক্ষ্ণ উপর লুপ।

Jι⊖﹪⊕׳ι⁷#»

ধারালো এর সারি গণনা করুন এবং এটি মুদ্রণ করুন।

F±θ«

যে কোনও ফ্ল্যাটের উপরে লুপ করুন।

Jι⊕﹪⁺³×⁴ι⁷b

ফ্ল্যাটের সারি গণনা করুন এবং এটি মুদ্রণ করুন।


2

বেফুঞ্জ, 139 বাইট

~9%:4%7*+4/7%~6%1-2/7*+vv\`0:\!-g02+*2g00+1%7+g00*+3g00::<<0+55p02:_@
- b#09p01*-1*2p00:`0:-8<>10g`!**:00g2+*\!20g2%*+1g,1+:8`!#^_>$,:1-\^1

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

নোট করুন যে ইনপুটটি লাইনফিডের সাথে সমাপ্ত হবে বলে আশা করা হচ্ছে, সাধারণত ইন্টারেক্টিভভাবে প্রোগ্রামটি চালানোর সময় ঘটতে পারে।

ব্যাখ্যা

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

signum = (n%9 + n%9%4*7)/4%7 + (a%6 - 1)/2*7 - 8

এটি -7 থেকে 7 সীমাতে একটি মান ফেরত দেয়, যেখানে চিহ্নটি আমাদের জানায় যে আমাদের শার্প বা ফ্ল্যাটগুলি (ধনাত্মক বা negativeণাত্মক) প্রয়োজন কিনা এবং পরম মান আমাদের প্রয়োজনীয় শার্প বা ফ্ল্যাটগুলির সংখ্যা দেয়। পরে ব্যবহারের জন্য, আমরা সাইন, গুলি এবং দুর্ঘটনাজনিত গণনা, সিএনটি দিয়ে এর সাথে বের করি:

s   = (signum > 0)
cnt = abs(signum) 

তারপরে আমাদের দুটি নেস্ট লুপ রয়েছে, একটি সারি সংখ্যা, আর , 9 থেকে নীচে 0 পর্যন্ত পুনরাবৃত্তি এবং একটি কলাম নম্বর, সি , 0 থেকে 8 পর্যন্ত 8 নির্দিষ্ট সারি এবং কলামের জন্য, আমরা গণনা করি যে দুর্ঘটনাটি সেখানে দৃশ্যমান হওয়া উচিত কিনা? এর সাথে নির্দেশ করুন:

accidental = (r == (c*(s+3) + s)%7 + 1 + s*2) and (c > 0) and (c <= cnt)

যদি এটি কোনও দুর্ঘটনাজনক না হয় তবে সারি, r , বিজোড় বা এমনকি কি না তার উপর নির্ভর করে আমাদের একটি লাইন বা স্থান আউটপুট করতে হবে । এবং যদি এটি কোনও দুর্ঘটনাজনক হয় তবে আমাদের সাইন, গুলি এর উপর নির্ভর করে একটি ধারালো বা ফ্ল্যাট আউটপুট করতে হবে । সুতরাং আমরা নিম্নলিখিত সূত্র মূল্যায়ন:

index = (!accidental * (r%2)) + (accidental * (s+2))

যা আমাদের লাইন, স্থান, একটি ফ্ল্যাট বা ধারালোকে প্রতিনিধিত্ব করে 0 থেকে 3 ব্যাপ্তির একটি সূচক দেয়। কোনও টেবিল থেকে প্রয়োজনীয় আউটপুট চরিত্রটি অনুসন্ধান করার জন্য আমরা কেবলমাত্র সেই সূচকটি ব্যবহার করি, যা আপনি কোডের দ্বিতীয় লাইনের শুরুতে এম্বেড দেখতে পেতে পারেন।

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