ওয়াইএমসিএতে থাকা মজাদার


15

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

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

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

 45.766   49.611   60.889
 64.661  109.816  113.591
124.810  128.687  173.830
177.620  188.950  192.724
204.013  207.739  219.057

"এম", "সি" এবং "এ" অক্ষর যথাক্রমে 0.930 s, 1.395 s এবং প্রতিটি "ওয়াই" এর পরে 1.628 এস আসে come পরীক্ষার উদ্দেশ্যে, এই আপেক্ষিক সময়গুলিকে পূর্ববর্তী "Y" এর সময় যুক্ত করে নিখুঁত সময়ে রূপান্তরিত করা হয়।

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

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

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

উত্তর:


3

সি, 161 154 অক্ষর

#define P(d,x)w(d);puts(#x);
w(n){usleep(n<<16);}
y(d){P(d,Y)P(14,M)P(7,C)P(3,A)}
b(){y(664);y(35);y(147);y(35);}
main(){b(b(b(w(34))));y(148);y(33);y(148);}

পরীক্ষকটি পাস হয় তবে কেবল fflush(stdout);প্রতিটি পরে যুক্ত করা হয় puts। যেহেতু প্রশ্নটি পরিষ্কারভাবে জানিয়েছে যে fflushএটি প্রয়োজনীয় নয়, তাই আমি এটি পরীক্ষককে একটি সমস্যা হিসাবে গ্রহণ করি।

যুক্তি:
wঘুমায়, সময়টি 16.384 65.536 এমএস ইউনিটে দেওয়া হয় । এই রেজোলিউশন সঠিক পর্যাপ্ত সময় এবং ছোট স্থিরতা (আমার সম্ভবত 100 মাইল চেষ্টা করা উচিত) অনুমতি দেয়।
Pকিছুক্ষণ অপেক্ষা করে একটি অক্ষর মুদ্রণ করে।
yপ্রাথমিক বিলম্বের পরে, ওয়াইএমসিএ সিকোয়েন্স মুদ্রণ করে।
b4 ওয়াইএমসিএ সিকোয়েন্সগুলি মুদ্রণ করে - এই 4 * ওয়াইএমসিএ একই সময়ে পর্যাপ্ত সময় সহ 3 বার ঘটে।
main3 * 4 * ওয়াইএমসিএ সিকোয়েন্সগুলি এবং আরও 3 টি মুদ্রণ করে।


"পরীক্ষকের একটি সমস্যা" - আপনি ঠিক বলেছেন , দৃশ্যত পাইপগুলি "ইন্টারেক্টিভ" ডিভাইস নয় :( আমি সময় পাওয়ার সাথে সাথে পাইপের পরিবর্তে এটি একটি পিটিওয়াই (যা আরও বাস্তব হওয়া উচিত) ব্যবহার করব to ।
দয়া

ঠিক আছে, আমি পিটিওয়াই ব্যবহার করতে পরীক্ষকটি পরিবর্তন করেছি এবং আপনার প্রোগ্রামটি পরীক্ষায় উত্তীর্ণ হয়েছে। আমি stdbuf নামক একটি ইউটিলিটি সম্পর্কেও জানতে পেরেছি যা সি স্ট্যান্ডার্ড I / O লাইব্রেরির ডিফল্ট বাফারিং আচরণকে ওভাররাইড করতে কিছু LD_PRELOAD কৌশল ব্যবহার করে।
প্লিজ স্ট্যান্ড

4

রুবি 180 135 124 118 108 104

[458,k=22,*[97,k,435,k]*2,*[98,k]*2,98].flat_map{|e|[e,9,5,2]}.zip(%w(Y M C A)*15){|a,b|sleep a/1e1;p b}

আমি কেবল বুঝতে পেরেছি যে প্রতিটি চিঠির চারপাশে ডাবল কোট নিষিদ্ধ করার নিয়মগুলিতে কিছুই নেই। যাইহোক,
জমাটি


@ জেপিভিডিমারভে অনেক ধন্যবাদ! আপনি ঠিক বলেছেন। দুটি দশমিক ড্রপ করার কোনও তাত্পর্যপূর্ণ প্রভাব নেই। এছাড়াও, আমি এটি করার পরে আমি লক্ষ্য করেছি যে আমি যদি ± 0.1 মানগুলিকে টুইঙ্ক করি তবে এমন কিছু নিদর্শন রয়েছে যা অ্যারে কম অক্ষরে তৈরি করতে দেয়।
ক্রিশ্চিয়ান লুপাস্কু

আপনি চিঠি তৈরি করার %w(Y M C A)*15পরিবর্তে কি করতে পারেন 'Y M C A'.split*15? আপনার আউটপুট প্রয়োজন না হলেও এটি eachসম্ভবত একটিও হতে পারে map। ওহ, আর লিখতে পারেন 10.0যেমন 1e1!
পল প্রেস্টিজ

@ ক্রন ধন্যবাদ! আমি ভেবেছিলাম এই কোডটি আরও বেশি গল্ফ করার মতো আমি আর কিছু করতে পারি নি, তবে আমি অবশ্যই ভুল ছিলাম। :-)
ক্রিশ্চিয়ান লুপাস্কু

0

পাইথন 2.6 ( 82 ) ( 214 ) ( 219 ) ( 196 ) ( 185 ) (152)

সংশোধন করা হয়েছে। ভিডিওটির বিরুদ্ধে দৌড়াদৌড়ি এবং সঠিক বলে মনে হচ্ছে। বেশিরভাগ ক্ষেত্রে যথাযথতা 3 থেকে 2 থেকে হ্রাস করে কয়েকটি চরিত্রকে নিরাপদে সংরক্ষণ করা হয়েছে (টিপটি @ জেপিভিডিমারভের জন্য ধন্যবাদ)

একমাত্র সমস্যাটি হ'ল পরীক্ষকরা সময়গুলির মধ্যে একটি বিশাল তাত্পর্য দেখায়। এটি সিঙ্ক থেকে শুরু হয়ে সিঙ্কে ফিরে আসার চেষ্টা করে। দুটি পরীক্ষার ক্ষেত্রে এটি শুরুতে সিঙ্কের বাইরে 175 সেকেন্ডেরও বেশি সময় ছিল এবং সিঙ্কে ফিরে আসার পরে 0.32 এবং 0.451 সেকেন্ডের মধ্যে ফিরে আসে।

import time;s=time.sleep
for t in[45.8,2.1,9.5,2,43.4,2,9.5,2.1,43.4,2,9.6,2,9.5,2,9.6]*15:
 i=0;s(t)
 while i<4:s([.1,.9,.5,.2][i]);print'YMCA'[i];i+=1

আপনি কি উপরে তালিকাভুক্ত পনের বার এটি চালাতে পারবেন? এটিও মনে হয় যে আমার মেশিনে আপনাকে -uকমান্ডে কমান্ড লাইন বিকল্পটি অন্তর্ভুক্ত করতে হবে ।
প্লিজ স্ট্যান্ড

@ প্লিজস্ট্যান্ড সম্পন্ন হয়েছে, এখন এটি 15 বার চলে। আমি -u যোগ করার বিষয়ে জানি না, আমার এটির দরকার নেই। আমার পাইথন ২. have আছে, যদি এটি সাহায্য করে
এলসার

স্পষ্ট করার জন্য, আপনার প্রোগ্রামটি প্রায় 45.766 s এর পরে প্রথম "Y" মুদ্রণ করা উচিত এবং -uএটি পরীক্ষক প্রোগ্রামের জন্য প্রয়োজনীয় (যা একটি পাইপ ব্যবহার করে), সরাসরি টার্মিনালে আউটপুট দেওয়ার জন্য নয়।
দয়া

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

হুম, আমি কোনও বিকল্প ব্যবহার না করেই টেস্টারে আমার কোডটি পাস করতে পারি
এলসার

0

গণিত, 157

p=Print[Pause@#;#2]&

(#~p~"Y";.93~p~"M";.465~p~"C";.233~p~"A")&/@{45.766,2.217,9.65,2.144,43.527,2.147,9.591,2.249,43.515,2.162,9.702,2.146,9.661,2.098,9.69}

সময়টি নিশ্চিত করতে আমি পুরো ভিডিওটি দেখেছি। ওয়াইএমসি এ .... ওয়াইএমসি এ ...

এটি কম নির্ভুলতার সাথে সংক্ষিপ্ত হতে পারে, তবে তারপরে আমাকে ভিডিওটি আবার দেখতে হবে যাতে এটি শেষের দিকে .125 এর বেশি না হয়ে বন্ধ হয়ে গেছে। হাঃ হাঃ হাঃ

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