আমাকে শিঙা বাজাতে সহায়তা করুন


14

ডঙ্কা একটি ভালভ-বসানো aerophone উপকরণ, সাধারণত শিবির হয় B♭। প্লেয়ার যখন যন্ত্রের অভ্যন্তরে বাতাসকে স্থানান্তরিত করতে তাদের ঠোঁট কম্পন করে তখন শব্দ হয় sound যে স্পন্দন একটি নির্দিষ্ট উপায়ে মুখ সেট করে অর্জন করা হয়, যা এমবুচার বলে। শক্ত বা আলগা ঠোঁটের সাথে বিভিন্ন এম্বুচারগুলি বিভিন্ন পিচ তৈরি করে।

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

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি এমন একটি প্রোগ্রাম বা ফাংশন তৈরি করা যা দুটি ইনপুট দেয় embouchureএবং valves, নোটটি বাজানো হচ্ছে তা নির্ধারণ করে।

এই চ্যালেঞ্জের উদ্দেশ্যে, নোটগুলি ক্রমটি অনুসরণ করবে:

B♭, B, C, C♯, D, E♭, E, F, F♯, G, G♯, A.

বিধি

  • আই / ও কোনও যুক্তিসঙ্গত পদ্ধতিতে নেওয়া / দেওয়া যায় ।
  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।
  • আপনার ব্যবহারের জন্য অনুমোদিত করছি bএবং #পরিবর্তে এবং আপনি করতে ইচ্ছুক পারেন।
  • ইনপুট valvesহতাশাগুলি ভালভের তালিকা ( 1, 3) বা বুলিয়ান তালিকা ( 1, 0, 1) হিসাবে নেওয়া যেতে পারে ।
  • এটি , তাই প্রতিটি ভাষার মধ্যে সংক্ষিপ্ততম কোড জিততে পারে।

পরীক্ষার কেস:

Valves এই পরীক্ষাগুলির ক্ষেত্রে বুলিয়ান তালিকা হিসাবে দেওয়া হয়, যেখানে 0 মানে হতাশাগুলি এবং 1 টি চাপলে।

Embouchure:    Valves:   Output:
B♭             0 0 0     B♭
B♭             0 1 0     A
B♭             1 0 1     F
C♯             0 0 1     B♭
C♯             1 1 1     G
E♭             1 0 0     C♯
G              0 1 1     E♭
G♯             1 0 0     F♯
G♯             0 0 1     F
G              1 0 0     F
F♯             1 0 0     E
D              1 0 1     A
A              1 1 1     E♭
E              1 1 0     C♯
E              0 0 1     C♯

দাবি অস্বীকার: আমি এখনও কোনও সংগীতশিল্পী নই, তাই পরীক্ষার ক্ষেত্রে আমি যে কোনও কসাই করা হতে পারে তার জন্য আমি ক্ষমা চাইছি না। সংশোধন প্রশংসা করা হয়।


2
পার্কিউশনিস্ট এখানে। অপেক্ষা করুন, আপনি এমবেচারটি এভাবেই বানান। সর্বদা ভেবেছিল এটি একটি ;-) দিয়ে শুরু হয়েছে
মেয়রমন্টি

1
আপনি ঠিক বলেছেন ঠিক আছে আমি সেগুলি সমাধান করব এবং অন্য কোনও সম্ভাব্য ভুল পর্যালোচনা করব। সতর্ক থাকুন জন্য ধন্যবাদ।
জে. সাল্লা

1
যে কেউ দীর্ঘ সময় শিংগা বাজিয়েছেন, আমি এম্বেচচার পরিমাপের দ্বারা সত্যিই বিভ্রান্ত হয়ে পড়েছি ... উদাহরণস্বরূপ একটি সি # এম্বুচার কি?
বেন্ডেল

1
F# 100E এফ না হওয়া উচিত ?
স্তর নদী সেন্ট

2
@ Bendl- তেমন কিছুই নেই। C#কোনও ভালভ না চেপে আপনি কোনও তূরীতে বাজাতে পারবেন না । কেবল নির্দিষ্ট নোট ( B♭-F-B♭-D-F-A♭-B♭...), এর ওভারটোন সিরিজ B♭। তবুও, যদি এটি কোনও আসল উপকরণ প্রতিফলিত না করে তবে চ্যালেঞ্জটি পুরোপুরি ভালভাবে সংজ্ঞায়িত।
ক্রিস

উত্তর:


4

পাইথন 3 2, 125 119 81 বাইট

lambda e,f,s,t,n=2*'A G# G F# F E Eb D C# C B Bb'.split():n[n.index(e)+2*f+s+3*t]

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

জোনাথন অ্যালানকে ধন্যবাদ প্রচুর বাইট সংরক্ষণ করেছেন।


আমার আসল সমাধান ( পাইথন 3 এ ):

n=2*'Bb B C C# D Eb E F F# G G# A'.split()
e,f,s,t=str(input()).split()
print(n[n.index(e,9)-2*int(f)-int(s)-3*int(t)])

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

@ হাইপারনিট্রিনোকে 6 বাইট সংরক্ষণ করা হয়েছে


ব্যাখ্যা

প্রথমত, আমি নোট একটি অ্যারের করতে, কিন্তু দৈর্ঘ্য দ্বিগুণ তাই আমি থেকে ঘুরে বেরাচ্ছে সম্পর্কে চিন্তা করতে হবে না Bbকরতে A

তারপরে, আমি নিম্নলিখিত ফর্ম্যাটটিতে ইনপুট নিই (উদাহরণস্বরূপ):

Bb 1 0 1

আমি তখন ব্যবহার করে প্রারম্ভিক নোটের সূচকটি পাই n.index(e,9)( দ9 এখানে রয়েছে তা নিশ্চিত করার জন্য যে আমি (দ্বিগুণ) তালিকার মাঝখানে ভাল শুরু করেছি I আমি অভিব্যক্তি দিয়ে পছন্দসই অফসেটটি গণনা করছি:

2*int(f) - int(s) - 3*int(t)

কোথায় f প্রথম ভালভ, sদ্বিতীয় ভালভ এবং tতৃতীয়টি।

শেষ অবধি, এটি সূচী সূচক থেকে অফসেটটি বিয়োগ করে তালিকায় পাওয়া নোটটি কেবল মুদ্রণ করে।


3
স্পেস দ্বারা পৃথক করে কয়েক বাইট সংরক্ষণ করুন। "<some string>".split()ডিফল্টরূপে হোয়াইটস্পেসে বিভাজন
হাইপারনিউট্রিনো

পাইথন 2 থেকে সরানোর (এড়ানো 30 বাইট সংরক্ষণ strএবং intকাস্ট ও মূল্যায়িত ইনপুট যার ফলে) এবং নোট reversing এবং এগিয়ে সমতা (এড়ানো ,9মধ্যে index। কল অনলাইন জন্য এটি ব্যবহার করে দেখুন!
জনাথন অ্যালান

... এবং আরও 8 টি ফাংশনে চলেছে (যা পাইথন 2 বা 3 তে কাজ করে) এটি অনলাইনে চেষ্টা করুন!
জোনাথন অ্যালান

@ জোনাথান অ্যালান আপনার উন্নতি থেকে আমি পাইথনের বেশ কয়েকটি গল্ফিং কৌশল শিখেছি। তোমাকে অনেক ধন্যবাদ!
ভাসিলেস্কুর

... প্রকৃতপক্ষে আপনি তালিকাটি পুনরুক্ত না করে তার মূল ক্রমে ব্যবহার করতে পারেন এবং মানগুলি বিয়োগ করতে পারেন যেহেতু negative ণাত্মক সূচকটি কখনই সীমা ছাড়িয়ে যায় না (সর্বাধিক নেতিবাচক 'Bb', 1, 1, 1আপনাকে সূচীতে নিয়ে যাবে -6যা Eপ্রয়োজন অনুসারে হবে) - এটিই টিফেল্ড রয়েছে যেহেতু সম্পন্ন
জোনাথন অ্যালান

3

ওল্ফ্রাম ল্যাঙ্গুয়েজ (ম্যাথমেটিকা) , ১০০ বাইট (এবং কার্যক্ষম ট্রাম্পের জন্য ১৩৪)

l="Bb,B,C,C#,D,Eb,E,F,F#,G,G#,A"~StringSplit~",";f=l[[Mod[#&@@#&@@l~Position~#-2#2-#3-3#4-1,12]+1]]&

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

বেশ সোজা।

l="Bb,B,C,C#,D,Eb,E,F,F#,G,G#,A"~StringSplit~",";f=EmitSound@SoundNote[l[[Mod[#&@@#&@@l~Position~#-2#2-#3-3#4-1,12]+1]],1,"Trumpet"]&

34 বাইটের দামের জন্য আরও ভাল আউটপুট।


অপেক্ষা করুন ... গণিতে অডিও আউটপুট আছে ??? দুষ্ট!
তিতাস

অবশ্যই গণিতের অডিও আউটপুট জন্য একটি অন্তর্নির্মিত আছে। এই সোনার।
জে। স্যালা

2

জেলি ,  37  36 বাইট

ØAḣ7;⁾#b“®JXrẊỤȥ’ṃnŒl$œṗ$Ḋ©i_⁸æ.J¤ị®

একটি ডায়াডিক লিঙ্ক ভালভের 1গুলি এবং এর তালিকা হিসাবে গ্রহণ করে0[second, first, third] বামদিকে প্রতিনিধিত্ব করে এমন একটি তালিকা হিসাবে গুলিগুলির একটি তালিকা হিসাবে স্বীকৃত এবং ডানদিকে অক্ষরের একটি তালিকা হিসাবে এমবউচার যা অক্ষরের একটি তালিকা ফেরত দেয় accepting

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

কিভাবে?

ØAḣ7;⁾#b“®JXrẊỤȥ’ṃnŒl$œṗ$Ḋ©i_⁸æ.J¤ị® - Link: list of integers, V; list of characters, E
ØA                                   - yield uppercase alphabet
  ḣ7                                 - head to index 7 = "ABCDEFG"
     ⁾#b                             - literal list of characters = "#b"
    ;                                - concatenate = "ABCDEFG#b"
        “®JXrẊỤȥ’                    - literal integer = 2270857278734171
                 ṃ                   - base decompress (i.e. convert to base 9 using the 'digits' "bABCDEFG#")
                                     -                 = "ABbBCC#DEbEFF#GG#"
                        $            - last two links as a monad:
                     $               -   last two links as a monad:
                   Œl                -     to lower case = "abbbcc#debeff#gg#"
                  n                  -     not equal? (vectorises) = [1,1,0,1,1,1,0,1,1,0,1,1,1,0,1,1,0]
                      œṗ             -   partition at truthy indices = [[],"A","Bb","B","C","C#","D","Eb","E","F","F#","G","G#"]
                         Ḋ           - dequeue = ["A","Bb","B","C","C#","D","Eb","E","F","F#","G","G#"]
                          ©          - copy to register and yield
                           i         - first index of E in there
                                 ¤   - nilad followed by links as a nilad:
                             ⁸       -   chain's left argument, V
                                J    -   range of length [1,2,3]
                              æ.     -   dot product (i.e. 1*second + 2*first + 3*third)
                            _        - subtract
                                   ® - recall from register
                                  ị  - index into (1-based and modular)


1

জাভাস্ক্রিপ্ট 96 বাইট

@ বাসাইলস্কুর ধারণা অনুসরণ করে, এটি জেএস-তে বাস্তবায়ন

(a,b,c,d,_="B♭,B,C,C♯,D,E♭,E,F,F♯,G,G♯,A".split`,`)=>(l=_.concat(_))[l.indexOf(a,9)-(2*b+c+3*d)]

a=(a,b,c,d,_="B♭,B,C,C♯,D,E♭,E,F,F♯,G,G♯,A".split`,`)=>(l=_.concat(_))[l.indexOf(a,9)-(2*b+c+3*d)]
console.log(a('B♭',0,0,0))
console.log(a('B♭',0,1,0))
console.log(a('B♭',1,0,1))
console.log(a('C♯',0,0,1))
console.log(a('C♯',1,1,1))
console.log(a('E♭',1,0,0))
console.log(a('G',0,1,1))
console.log(a('G♯',1,0,0))
console.log(a('G♯',0,0,1))
console.log(a('G',1,0,0))
console.log(a('F♯',1,0,0))
console.log(a('D',1,0,1))
console.log(a('A',1,1,1))
console.log(a('E',1,1,0))
console.log(a('E',0,0,1))


3 বাইট কম;) বিটিডব্লিউ ফ্ল্যাট এবং শার্পগুলি 3 বাইট হিসাবে গণনা করা উচিত না?
শিয়ারু আসাকোটো

ওহ এনভিএম (আমি এটি দেখিনি bএবং #অনুমোদিত) তবে আপনার ফ্ল্যাট এবং শার্পের পরিবর্তে bএবং ব্যবহারের প্রয়োজন #
শিয়ারু আসাকোটো

1

ব্যাচ, 188 বাইট

@set n=%1
@set/aC=0,D=2,Eb=3,E=4,F=5,G=7,A=9,Bb=10,B=11,n=(%n:#=+1%+12-%2*2-%3-%4*3)%%12
@for %%n in (C.0 C#.1 D.2 Eb.3 E.4 F.5 F#.6 G.7 G#.8 A.9 Bb.10 B.11)do @if %%~xn==.%n% echo %%~nn

ব্যবহার #এবং b: এর অর্থ এই যে Ebএবং Bbআইনী পরিবর্তনশীল নামগুলি; #এর স্ট্রিং প্রতিস্থাপন করে পরিচালনা করা হয় +1। তারপরে স্ট্রিং প্রতিস্থাপনের ফলাফলটি স্বয়ংক্রিয়ভাবে মূল্যায়ন করা হয় এবং ফলকে তালিকায় সন্ধানের আগে ভালভগুলি অ্যাকাউন্টে নেওয়া হয়।


1

স্ট্যাক্স , 32 বাইট

τ┤=Yº○!AÄΔâß₧←╥╟ö'ÄD├æñßf╧å▬tó÷╖

এটি চালান এবং অনলাইনে ডিবাগ করুন

এটি একটি নোটের নাম এবং হতাশাগুলি ভালভের একটি তালিকা নেয়। এটি নোটের নামের একটি অ্যারে তৈরি করে, তারপরে মোট ভালভের বিরতি গণনা করে এবং অ্যারেতে অফসেটে নোটটি পায়।

"AbABbBCC#DEbEFF#G" just a literal
{VA#}(Y             partition at capital letters and store in y
,]I                 get the index of the input note
,2R:t               swap 1s and 2s in valve list
{-F                 subtract valve list from note index
y@                  look up result from note array

এটি চালান




0

পার্ল 6 / রকুডো 73 টি অক্ষর

প্রযুক্তিগতভাবে এটি 83 বাইট কারণ আমি ইউনিকোডের অক্ষরগুলি রেখেছি, তবে এএসসিআই সমকক্ষের জন্য এগুলি অদলবদল করতে 73 বাইট দিতে পারে।

হচ্ছে একটি {code block}মত পরামিতি সঙ্গে $^aএই একটি ল্যামডা, একটি স্বাক্ষর সাথে আছেন ($a, $b, $c, $d)

{$_=2*$^b+$^c+3*$^d;'AG♯GF♯FEE♭DC♯CBB♭'x 2~~/$^a(\w\W?)**{$_}/~~/\w\W?$/}

ডাকা:

say { ... }("D", 1, 0, 1)
>> A

কম golfed:

sub f($a, $b, $c, $d) {
   my $totalShift = 2*$b + $c + 3*$d;
   my $doubledScale = 'AG♯GF♯FEE♭DC♯CBB♭' x 2;
   my $matchEmbOnward = $doubledScale ~~ / $^a (\w\W?)**{$totalShift} /;
   my $matchFinalNote = $marchEmbOnward ~~ / \w \W? $ /;
   return $matchFinalNote;
}

এখানে আমরা ইনফিক্স অপারেটরটি '...' x 2ব্যবহার করে একটি স্ট্রিং দ্বিগুণ করি x, তারপরে স্মার্টম্যাচ অপারেটরটি ব্যবহার করে এন নোটগুলি অনুসরণ করে এম্বেচারটি সন্ধান করি '...' ~~ /.../- রেজেক্স আটকানো আছে\w\W? যার উপরে একটি শব্দ চর থাকে তবে সম্ভবত একটি চর হয়।

আমরা যে মাধ্যমে এর এন দৃষ্টান্ত জন্য চেহারা (\w\W?)**{$_}, আমরা ইতিমধ্যে এন = হিসাব করেছি যেখানে $_প্যারাম থেকে $bথেকে $d। এটি এম্বুচার নোট থেকে ফলাফল নোটের সাথে একটি মিল দেয়, যার মধ্যে আমরা কেবল শেষটি চাই তাই আমরা এটির সাথে অন্যটির সাথে মেলে~~ /\w\W?$/

$_প্রথম গণনা অনুমতি প্রয়োজন$^b ব্লকে অন্তর্ভুক্ত পরম তৈরির ।

76 অক্ষর

স্ট্রিং ম্যাচের পরিবর্তে অ্যারে ব্যবহারের বিকল্প হ'ল আরও 3 টি অক্ষর:

{$_=<B♭ B C C♯ D E♭ E F F♯ G G♯ A>;.[((.first: $^a,:k)-2*$^b-$^c-3*$^d)%12]}

তালিকায় এমবউচারটি সন্ধান করে এটি অর্জন করা হয় @arr.first: $^a, :k, যা এর সাথে পাওয়া উপাদানটির সূচক (কী) প্রদান করে:k

অ্যারে সেট করা $_(কোনও বস্তু হিসাবে) আমাদের অনেক বেশি অক্ষর ব্যয় না করে ব্যবহার করতে .firstএবং .[ ]এটিতে অনুমতি দেয় ।


0

সি (জিসিসি) , 155 বাইট

char r[][12]={"bb","b","c","c#","d","eb","e","f","f#","g","g#","a"};u;v(z,y,x,w)char*z;{for(;u<12;u++)if(!strcmp(z,r[u]))break;u=u-2*y-x-3*w;u=u<0?12+u:u;}

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

সহজ পদ্ধতির।

ভালভ ইনপুট 0,1।

এম্বুচার ইনপুট অবশ্যই ছোট হাতের হতে হবে। মজার বিষয় হল, টিআইও strcmpi()অন্তর্ভুক্ত ছাড়া সন্ধান করছে না string.h, যেখানে মিংডাব্লু-জিসিসি এটি স্ট্যান্ডার্ড -Wimplicit-function-declarationসতর্কতা দিয়ে দেয় ।

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