জোরে জোরে 0 থেকে 9 পর্যন্ত অঙ্ক করুন


15

ইলেক্ট্রনিক্স.এসই থেকে এই প্রশ্নের দ্বারা অনুপ্রাণিত , আপনার জন্য এখানে একটি চ্যালেঞ্জ:

একটি প্রোগ্রাম বা সাবরুটাইন লিখুন যা দশমিক অঙ্কের (0 থেকে 9) অনুক্রমের মধ্যে নেয় এবং বিদ্যমান স্পিচ সংশ্লেষের সরঞ্জামটি ব্যবহার না করে এগুলি উচ্চস্বরে কথা বলে ।

ইনপুট:

আপনি যে কোনও যুক্তিসঙ্গত বিন্যাসে ইনপুট ডিজিট সরবরাহ করার জন্য বলতে পারেন, যেমন ASCII অঙ্কগুলির একটি স্ট্রিং, পূর্ণসংখ্যার অ্যারে, একটি বিসিডি-এনকোডেড নম্বর ইত্যাদি your কমান্ড লাইন প্যারামিটার, স্ট্যান্ডার্ড ইনপুট থেকে এটি পড়ুন বা অন্য কোনও যুক্তিসঙ্গত উপায়ে এটি পান obtain

আপনার প্রোগ্রামটি প্রতি অনুরোধে কমপক্ষে আট ডিজিট বলতে সক্ষম হবে । আপনি পারে অনুমান প্রথম সংখ্যা শূন্য নয়, যদি না তা শুধুমাত্র অঙ্ক নয়।

আউটপুট:

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

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

স্কোরিং:

স্ট্যান্ডার্ড স্কোরিংয়ের নিয়মগুলি প্রয়োগ করা হয়: আপনার স্কোরটি আপনার কোডের দৈর্ঘ্য বাইটে বা, যদি আপনার কোডটি ইউনিকোড পাঠ্যে, ইউনিকোড অক্ষরে লেখা থাকে is সর্বনিম্ন স্কোর জয়। যে কোনও ভাষা যায়।

যেমন ইলেক্ট্রনিক্স.এস.ই-তে মূল প্রশ্নটি এম্বেড প্রোগ্রামিং সম্পর্কে ছিল তাই আমি অনুভব করেছি যে নিম্ন স্তরের ভাষা ব্যবহার করে লেখকদের কাছে একটি হাড় টস করা উপযুক্ত হবে: যদি আপনার সমাধানটি সংকলিত ভাষায় লেখা হয় তবে আপনি দৈর্ঘ্য গণনা করতে বেছে নিতে পারেন আপনার স্কোর হিসাবে বাইটে এক্সিকিউটেবল ফাইল সংকলিত । (হ্যাঁ, জাভা .classফাইলের মতো প্রাক-কম্পাইলড বাইটকোডও ঠিক আছে)) আপনি যদি এই বিকল্পটি ব্যবহার করতে চান তবে অনুগ্রহ করে আপনার উত্স কোড সহ আপনার উত্তরে (উদাহরণস্বরূপ একটি হেক্স ডাম্প) সংকলিত এক্সিকিউটেবলের একটি অনুলিপি অন্তর্ভুক্ত করুন এবং আপনি এটি তৈরি করতে ব্যবহৃত সংকলক সংস্করণ এবং বিকল্পগুলি।

একটি সম্মানজনক উল্লেখ সহ +50 রেপ বন্টি সহ প্রথম উত্তরটি দেওয়া হবে যা মূল প্রশ্নের মানদণ্ডও পূরণ করে , অর্থাত্ এমবিইউতে 4 কেবি ফ্ল্যাশ এবং 1 কেবি এসআরএম চালাতে সক্ষম AM

সীমাবদ্ধতা:

আপনি যদি আপনার স্কোরের অংশ হিসাবে বলা ফাইল বা সংস্থানগুলির দৈর্ঘ্য না গণনা করেন তবে আপনি এমন কোনও ফাইল বা নেটওয়ার্ক সংস্থান ব্যবহার করতে পারবেন না যা আপনার নির্বাচিত ভাষার স্ট্যান্ডার্ড রানটাইম পরিবেশের অংশ নয় unless (এটি উদাহরণস্বরূপ ওয়েব থেকে অডিও নমুনা লোড করা যায় না))

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


পুনশ্চ. আমি নিজের সমাধানটি পরে পোস্ট করতে পারি, যদি আমি এটিকে এমন কিছু তৈরি করতে পরিচালিত করি যা আসলে বোধগম্য মনে হয়। আপনার নিজের পোস্ট করতে লজ্জা পাবেন না, যদিও; এই মুহুর্তে, কোনও উত্তর একটি ভাল উত্তর।
ইলমারি করোনেন

1
আমাদের কি কথ্য অঙ্কের একটি ডাটাবেস ডাউনলোড করার অনুমতি দেওয়া হয়েছে (এবং এর আকারটি স্কোরের দিকে গণনা করুন) বা আমাদের নিজস্ব ভয়েস রেকর্ড করতে হবে? আমি সন্দেহ করি আমি আলগোরিদিমভাবে বক্তৃতার নমুনা উত্পন্ন করতে পারি।
জন ডিভোরাক

উম্ম ... "আউটপুট" বিভাগটি নির্দিষ্ট করে না যা আমাদের স্পিচ নমুনার আউটপুট করতে হবে। আমাদের কি কেবল দশ বার বীপ দেওয়ার অনুমতি দেওয়া হচ্ছে?
জন ডিভোরাক

@ পিটারটেলর: আপনি যদি তাদের স্কোরের অংশ হিসাবে তাদের আকারটি গণনা করেন তবে ঠিক আছে। আমি কেবল চিন্তিত ছিলাম যে সেখানে কোনও সিস্টেম থাকতে পারে যেখানে তার স্ট্যান্ডার্ড রানটাইম পরিবেশে কোথাও কবর দেওয়া অঙ্কগুলির অডিও নমুনা রয়েছে।
ইলমারি করোনেন

3
যেহেতু এমন লোকদের একটি অবিচল প্রবাহ বলে মনে হচ্ছে যারা হেভিওয়েট লাইব্রেরিগুলির আশেপাশে তুচ্ছ র্যাপারগুলি প্রশ্নটি পড়ে না এবং পোস্ট করেন না, "এটি নিজেই করুন" দিকটির দিকে আরও বেশি জোর দেওয়া সমীচীন worth
পিটার টেলর

উত্তর:


10

রুবি - 3710 = 90 টি অক্ষরের কোড + 3620 বাইট ডেটা

require'zlib'
$><<$*[0].chars.map{|x|Zlib::Inflate.inflate File.open(x).read}.join(?0*5e3)

ইনপুট: একটি একক কমান্ড লাইন আর্গুমেন্ট, পড়ার জন্য সংখ্যা

আউটপুট: কাঁচা শব্দ ডেটা, পিসিএম 8 বিট / 8 কেএইচজেড

এটি যতক্ষণ না কোনও ইনপুট স্ট্রিং পড়তে পারে

  • এটিতে কেবল এমন অক্ষর রয়েছে যা বৈধ ফাইলের নাম। কেবলমাত্র চার অক্ষরের জন্য, আপনি সমস্ত অক্ষরকে সেট সেট করে বাড়িয়ে দিতে পারেন।
  • আপনার কাছে প্রয়োজনীয় ফাইল রয়েছে।
  • ওহ, কেন আপনি স্পেস ডি ওহ এনস্প্রেট্রোপে স্পেস ইম ইন আমি দে স্পেস টি আইচ আই এস পিরিয়ড

5e3দুটি শব্দের মধ্যে বিরতি এনকোড করে। এখানে, 5ks উদাহরণ ~ = 0.6 সে। পছন্দসই টুইঙ্ক।

এখন, জটিল অংশটি 4K-তে নমুনা ফাইলগুলি পাওয়া এবং তবুও সেগুলিকে সহজেই এবং পর্যাপ্ত মানেরগুলিতে সংক্ষেপিত করতে সক্ষম হবে। এগুলি আমি কীভাবে পেয়েছি তা এখানে:

  • একটি টেক্সট টু স্পিচ ইঞ্জিন নিন যা সাউন্ড ফাইল তৈরি করতে সক্ষম। উইকিপিডিয়া একটি আছে
  • আদর্শভাবে একসাথে কাছাকাছি হয়ে এটিকে সমস্ত অঙ্কযুক্ত একটি পাঠ্য খাওয়ান। আমি http://en.wikedia.org/wiki/Base_13 ব্যবহার করেছি
  • ডাউনস্যাম্পেল।
  • একটি শব্দ সম্পাদকের প্রতিটি অংশ কাটা ।
  • একটি কাঁচা ফাইল হিসাবে সংরক্ষণ করুন।
  • প্রতিটি নমুনা বাতিল করুন (লো-অর্ডার বিটগুলি বাতিল করুন)।
  • চুপসে।

এখন, একটি নমুনা হার এবং ডেসিমেশন পরিমাণ নির্বাচন করতে হবে। খুব বেশি, এবং শব্দটি বোধগম্য হবে না। খুব সামান্য, এবং আপনি ফিট না। আমি 8kHz / 3b স্থির হয়েছি। সেগুলি এখানে রয়েছে: https://github.com/honnza/drop/raw/master/digits.zip

  • 8KHz * 4 বি / নমুনা এবং উচ্চ মানের - খুব বড়
  • 8KHz * 3 বি / নমুনা - নিম্নমানের, তবে এটি 4K এর সাথে ফিট করে
  • 8 কেএইচজেড * 2 বি / নমুনা - কেচ্ছু ছিঃ [বুঝতে পারছেন না]
  • 2KHz * 8 বি / নমুনা - খুব বড়
  • 2 কেএইচজেড * 3 বি / নমুনা - কেচছ ছিঃ ছিঃ
  • 1 কেএইচজেড * 8 বি / নমুনা - কেচ্ছু ছিঃ

এখানে ডেসিমেশন লিপি:

require'zlib'
Dir.glob "*.raw" do |fname|
  File.open fname[/\d/], "wb" do |out|
    File.open fname do |input|
      bytes = input.bytes.to_a
      bytes.map! {|x|x&0xE0}
      dfl = Zlib::Deflate.deflate(bytes.pack("C*"),9)
      dfl.each_byte do |byte|
        out.print byte.chr
      end
      puts "done #{fname}: #{dfl.size}"
    end
  end
end

মূল চ্যালেঞ্জ হিসাবে: কোড এবং ফাইল টেবিলের জন্য 476 বাইট স্থান রয়েছে। এটি একটি ডিফল্ট লাইব্রেরির সাথে আমরা কতটা ছোট পেতে পারি তার উপর নির্ভর করে এটি কিছুটা বেশি হতে পারে। যদি প্রয়োজনীয় হয় তবে আমরা অল্প কিছুটা আগ্রাসীভাবে অডিও নমুনাগুলি ক্রপ করে এখানে এবং সেখানে কয়েকটি কোণ কাটতে পারি। [fo:r]অথবা[o:] আসলেই কিছু যায় আসে না তবে এটি বাইট সংরক্ষণ করে। সংখ্যা ক্রপ করার সময় আমি কিছুটা দানশীল হয়েছি। এছাড়াও, একটি ভিন্ন ডেসিমেশন স্কিম বা ডাউনস্যাম্পলিংয়ের জন্য কিছু ডেসিমিনেশন উত্সর্গ করতে সহায়তা করতে পারে - আমি এগুলি পরে খেলব। এছাড়াও, ডিফল্ট শিরোনামগুলি ফেলে দেওয়া খুব অল্প পরিমাণে জায়গা বাঁচাতে পারে।

সাউন্ডের নমুনাগুলি প্রতিরোধ করা বেশ সহজ, তবে 4K সামান্য বাধা। আপনি যদি 4 কে স্পেসে আবদ্ধ না হন তবে আমি কম সিদ্ধান্ত গ্রহণের পরামর্শ দিচ্ছি। নমুনা প্রতি 4 বিট আসলে বেশ ভাল ভাড়া এবং এটি কিছুটা বড়।


+1, খারাপ নয়। স্বচ্ছতাটি যদিও প্রান্তিক, যদিও: আমি কয়েকটি এলোমেলো সংখ্যার প্রতিলিপি চেষ্টা করেছি এবং প্রায় 70% সাফল্যের হার পেয়েছি। (আমি 99% এর কাছাকাছি কোনও কিছুর আশা করছিলাম।) আমি সম্মানজনক উল্লেখযোগ্য জিনিসটি সম্পর্কে বেড়া সম্পর্কে এখনও কিছুটা: আপনি যখন খুব সুন্দর যুক্তি দিয়েছিলেন যে 4K এভাবে অর্জনযোগ্য হতে পারে তবে আপনি তা করেননি আসলে এটি প্রদর্শিত। এমনকি যদি আপনি সি এর জন্য রুবি আঁকেন (যা করা যথেষ্ট সহজ বলে মনে হয়; আমি সেই অংশটি বিশ্বাসের সাথে নিতে আগ্রহী), আপনি কি সত্যিই বাকী ফ্ল্যাশ স্পেসে একটি ডিফল্ট ডিকোডারকে ফিট করতে পারবেন ? এছাড়াও, আমি যেমনটি উল্লেখ করেছি যে শব্দটির মানটি বেশ খারাপ।
ইলমারি করোনেন

পুনশ্চ. আরও ভাল সংক্ষেপণের কয়েকটি টিপস: আপনি সমস্ত নমুনাগুলিকে নাল বাইটের (যা ভালভাবে সংকোচিত হওয়া উচিত) দিয়ে একটি নির্দিষ্ট দৈর্ঘ্যে প্যাড করতে পারেন এবং সেগুলি একটি সংকোচিত ফাইলের সাথে সংযুক্ত করতে পারেন, তারপরে এটি সঙ্কুচিত করে টুকরো টুকরো করতে পারেন। এছাড়াও, এই উত্তর থেকে KZIP কৌশল আপনাকে আরও উন্নত সংকোচনের উপহার দিতে পারে। অবশেষে, সঠিক কপির সাথে সমতুল্য ফোনমেজগুলি প্রতিস্থাপনের জন্য সম্মিলিত সাউন্ড ফাইলটি সম্পাদনা করার চেষ্টা করুন।
ইলমারি করোনেন

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

আমি সাফল্যের 70% হার সম্পর্কে খুব অবাক হয়েছি - আমি সংখ্যাগুলি বুঝতে সহজ বলে খুঁজে পেয়েছি। আপনি কোন সংখ্যাটিকে সবচেয়ে বেশি বিভ্রান্ত করেছেন?
জন ডিভোরাক

একটি কর্টেক্স এম 0 এ এটি পোর্ট করা সম্ভবত জিজ্ঞাসা করার জন্য কিছুটা বেশি (যদিও আপনি যদি এটি করতে পারতেন তবে তা দুর্দান্ত হত!) তবে আমি মনে করি যে একা একা বাইনারি (+ ডেটা ফাইলগুলি, যদি থাকে) এর অধীনে ফিটিং হয় 4k একটি যুক্তিসঙ্গত বিক্ষোভ বলে মনে হবে। (ফাইল আই / ও এর জন্য লিবিকের সাথে স্ট্যাটিকালি লিঙ্ক করার দরকার নেই, যেহেতু আপনার এম্বেড থাকা ডিভাইসে এটির প্রয়োজন হবে না, তবে ডিফল্ট কোড অবশ্যই গণনা করা উচিত)) মূলত, এমন কিছু যা আপনি মূল প্রশ্নের উত্তর হিসাবে পোস্ট করতে পারেন ইলেক্ট্রনিক্স.এস.ই এবং আত্মবিশ্বাসের সাথে বলুন "আপনি যদি আপনার ডিভাইসের জন্য এটি সংকলন করেন তবে আমি এটি ফিট করব" bet
ইলমারি করোনেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.