নস্টালজিক প্রাইম নম্বর জেনারেটর [বন্ধ]


16

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

বর্তমান নথি দর্শকদের এবং অনুরূপ অ্যাপ্লিকেশনগুলিতে ব্লোটের প্রভাব অনুকরণ করতে, এমন একটি প্রোগ্রাম লিখুন যা আরও শক্তিশালী মেশিনে চালিত হওয়ার সময় দৃশ্যমান পারফরম্যান্সে সমস্যা রয়েছে

সবার সাধারণ কাজ করার জন্য, এটিকে একটি প্রধান সংখ্যা জেনারেটর করুন make

  • প্রোগ্রামটিতে পরের মৌলিক সংখ্যাগুলি 2 থেকে শুরু করে প্রতিটি নতুন লাইনে প্রিন্ট করতে হবে এবং অন্য কিছুই নয়। এটি চিরকালের জন্য হওয়া উচিত (বা স্মৃতি শেষ না হওয়া পর্যন্ত)। এটার মত:
2
3
5
7
11
13
17
  • প্রতিটি লাইন মুদ্রণের মধ্যে একটি বিলম্ব হওয়া উচিত, যা কোনও মানুষের দ্বারা উপলব্ধিযোগ্য।

  • প্রোগ্রামটি যে মেশিনটিতে চলছে সেটি দ্রুত হওয়ার সাথে সাথে এই বিলম্বটি আরও দীর্ঘ হওয়া উচিত। মেশিনটি তত দ্রুত, প্রোগ্রামটি ধীরে ধীরে।

  • আমি যথাযথ মানদণ্ড নির্দিষ্ট করতে পারব না কারণ এটি ব্যক্তিগত হতে পারে তবে দুটি মেশিনের পারফরম্যান্সের মধ্যে উল্লেখযোগ্য পার্থক্য থাকলে দুটি ভিন্ন মেশিনের গতিতে একটি মানব-অনুভূত পার্থক্য থাকতে হবে।

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

  • আমি সঠিক ওপরের বা নিম্ন সময়ের সীমাটিও নির্দিষ্ট করব না, তবে এটি যুক্তিসঙ্গত সীমার অধীনে হওয়া উচিত, সুতরাং দয়া করে দুটি লাইন প্রিন্ট করার মধ্যে কোনও দিন বা বছর থাকবে না।

  • এনিয়াক থেকে আধুনিক সময়ের জন্য আমার এটি চালানোর দরকার পড়বে না, তবে এটি যথেষ্ট সাধারণ হওয়া উচিত, উদাহরণস্বরূপ, এটি কেবল দুটি নির্দিষ্ট সিপিইউ টাইপের ক্ষেত্রে কাজ করে এবং এটি নির্দিষ্ট করে একটি নির্দিষ্ট সিপিইউর নাম সনাক্ত করে এটির অনুমতি দেওয়া হয় না যার উপর এটি ধীর বা দ্রুত চলবে।

  • কোডটি সংকলক বা দোভাষী দের উপর নির্ভর করা উচিত নয়। কমলার এবং ইন্টারপ্রেটারের একই সংস্করণটি ধীর এবং দ্রুত উভয় মেশিনে ইনস্টল করা থাকলে বা বাইনারি / বাইটকোড একটি মেশিনে সংকলিত হয়ে দুটি আলাদা মেশিনে চালিত হয় তবে এটি কাজ করা উচিত।

  • আপনার প্রোগ্রামটি কীভাবে পরিচালিত হচ্ছে তার নীতিগুলি ব্যাখ্যা করুন। যেহেতু ফলাফলগুলি পুনরুত্পাদন করা কঠিন হবে, উত্তরের বৈধতা পদ্ধতির সম্ভাব্যতার উপর নির্ভর করতে পারে।

যদিও আমি এটি একটি অন্তর্নিহিত প্রতিযোগিতায় পরিণত হতে পছন্দ করতাম, দুঃখের বিষয় এই সাইটটি আর "প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ" নয় বরং কেবল "কোড গল্ফ", সুতরাং সংক্ষিপ্ততম কোডটি জয়ী হয়।


5
মেশিনটি তত দ্রুত, প্রোগ্রামটি ধীরে ধীরে। আমি এটিকে উদ্দেশ্যমূলক, যাচাইযোগ্য মানদণ্ড করার সহজ উপায় দেখছি না
লুইস মেন্ডো

1
@ লুইসমেডো: আমি সহজেই এটি করার জন্য কমপক্ষে দুটি উপায় দেখতে পাচ্ছি।
বনাম

1
@vsz আমি যে সমস্যাটি দেখছি তা হ'ল প্রজননযোগ্যতা। কেউ বলেছেন যে তারা দুটি মেশিনে পরীক্ষা করেছে এবং প্রয়োজনীয় গতির ক্ষেত্রে একটি উল্লেখযোগ্য পার্থক্য লক্ষ্য করেছে, তবে আপনি নিজের দুটি মেশিনে এই আচরণটি পুনরুত্পাদন করতে পারবেন না। তাহলে উত্তরটি কি বৈধ?
লুইস মেন্ডো 21

1
ব্যস্ত-বিভারের সাথে এটি ট্যাগ করা উচিত ?
mbomb007

2
আপনি কি বিবেচনা করবেন? "আরও শক্তিশালী মেশিন" হিসাবে বিবেচনা করেন ? একই চশমাযুক্ত আরও একটি র‌্যামযুক্ত একটি মেশিন কি আরও শক্তিশালী বলে মনে করা হচ্ছে? প্রসেসর এক সেকেন্ডে কত নির্দেশনা চালায়? উভয়? অন্যকিছু?
ফ্যাটালাইজ করুন

উত্তর:


4

পার্ল, 80 78 71 বাইট

-9 বাইটস @ দাদাকে ধন্যবাদ

$_++;`lscpu`=~/z:\s+(\d+)/,sleep$1,(1x$_)!~/^(11+?)\1+$/&&say while$_++

কমান্ডটি চালায় lscpuএবং মেগাহার্টজ-এ সিপিইউ গতি সন্ধান করে। সিপিইউ তত দ্রুত, আউটপুটগুলির মধ্যে আরও বেশি সময় ঘুমায়, প্রতি 1 মেগাহার্টজের জন্য 1 সেকেন্ড। উবুন্টু 14.04.5 এ চলছে। আমার নির্দিষ্ট মেশিনে, এটি প্রতি 800 সেকেন্ডে (13 মিনিট, 20 সেকেন্ড) প্রতিটি সংখ্যার পরীক্ষা করে। দ্রুত মেশিনে, এটি 50 মিনিটের বেশি হতে পারে। sleep$a/400পরীক্ষার উদ্দেশ্যে আরও বুদ্ধিমান কিছু পেতে এটি পরিবর্তন করুন ।


কোডটি কিছুটা পুনরায় সাজানো 71 বাইটের জন্য $_++;lscpu দেয় =~/z:\s+(\d+)/,sleep$1,(1x$_)!~/^(11+?)\1+$/&&say while++$_
দাদা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.