আপনাকে 6 নম্বর দেওয়া হবে: 5 টি সংখ্যা [0-9] এবং একটি লক্ষ্য নম্বর। আপনার লক্ষ্যটি হ'ল অঙ্কের মাঝে অপারেটরগুলি ছেদ করা আপনার লক্ষ্য হিসাবে যতটা সম্ভব get আপনি প্রতিটি অঙ্ক ব্যবহার করতে হবে ঠিক একবার, এবং নিম্নলিখিত অপারেটর ব্যাবহার করতে পারেন অনেক হিসাবে বার হিসাবে আপনি চান: + - * / () ^ sqrt sin cos tan
। উদাহরণস্বরূপ, যদি আমাকে দেওয়া হয় তবে 8 2 4 7 2 65
আমি আউটপুট দিতে পারি 82-(2*7)-4
। এটি 64 টিতে মূল্যায়ন করে, সুতরাং আমি 1 টি স্কোর থেকে যেহেতু আমি লক্ষ্য থেকে 1 দূরে ছিলাম। দ্রষ্টব্য: আপনি অঙ্কগুলির মধ্যে দশমিক পয়েন্ট রাখতে পারবেন না।
আমি গাণিতিক এক্সপ্রেশন মূল্যায়নের জন্য এই স্ট্যাকওভারফ্লো উত্তরটি থেকে কোডটি ব্যবহার করছি । এই প্রশ্নের নীচে এমন প্রোগ্রাম রয়েছে যা আপনি এটি পরীক্ষা করে দেখতে পারেন।
চেইন ফাংশন (আপডেট!)
@ এমদাহমৌনে এই চ্যালেঞ্জের এক নতুন স্তরের জটিলতা প্রকাশ করেছেন। এর মতো, আমি একটি নতুন বৈশিষ্ট্য যুক্ত করছি: আনারি ফাংশনগুলি শৃঙ্খলাবদ্ধ। এটি পাপ, কোস, ট্যান এবং স্কয়ার্টে কাজ করে। এখন লেখার পরিবর্তে sin(sin(sin(sin(10))))
আপনি লিখতে পারেন sin_4(10)
। এটি ব্যবহারকারীর মধ্যে চেষ্টা করে দেখুন!
ইনপুট
5 টি সংখ্যার 200 লাইন-বিভাজিত পরীক্ষার কেস এবং একটি লক্ষ্য নম্বর যা স্থান দ্বারা পৃথক। নমুনা পরীক্ষার কেসগুলি তৈরি করতে আপনি প্রশ্নের নীচের অংশে প্রোগ্রামটি ব্যবহার করতে পারেন তবে অফিসিয়াল স্কোরিংয়ের জন্য আমার নিজের পরীক্ষার কেসগুলি থাকবে। পরীক্ষার কেসগুলি লক্ষ্য সংখ্যার জন্য নিম্নলিখিত রেঞ্জগুলির সাথে 40 টি পরীক্ষার 5 বিভাগে বিভক্ত হয়:
- বিভাগ 1: [0,1] (5 দশমিক পয়েন্ট)
- বিভাগ 2: [0,10] (4 দশমিক পয়েন্টে)
- বিভাগ 3: [0,1000] (3 দশমিক পয়েন্টে)
- বিভাগ 4: [0,10 6 ] (1 দশমিক পয়েন্ট)
- বিভাগ 5: [0,10 9 ] (0 দশমিক পয়েন্টে)
আউটপুট
200 লাইন পৃথক গাণিতিক এক্সপ্রেশন। উদাহরণস্বরূপ, যদি পরীক্ষার কেস হয় 5 6 7 8 9 25.807
, একটি সম্ভাব্য আউটপুট হতে পারে78-59+6
স্কোরিং
প্রতিটি প্রতিযোগিতামূলক প্রোগ্রামের চেয়ে লক্ষ্য সংখ্যার কাছাকাছি হওয়া প্রতিটি রাউন্ডের লক্ষ্য। আমি ব্যবহার করতে যাচ্ছি মারিও কার্ট 8 স্কোরিং , যা: । যদি একাধিক উত্তর একই সঠিক স্কোর পায় তবে পয়েন্টগুলি সমানভাবে বিভক্ত হয়, নিকটতম প্রান্তকে গোল করে। উদাহরণস্বরূপ, যদি 5 তম-অষ্টম স্থানে প্রোগ্রামগুলি বাঁধা থাকে তবে তারা প্রত্যেকে (8 + 7 + 6 + 5) / 4 = 6.5 => 7 পয়েন্ট পেতে পারে। 200 রাউন্ড শেষে, প্রোগ্রামটি সবচেয়ে বেশি পয়েন্ট পেয়েছিল। দুটি প্রোগ্রামের শেষে যদি একই সংখ্যক পয়েন্ট থাকে তবে টাই-ব্রেকারটি এমন প্রোগ্রাম যা দ্রুত চলমান শেষ করে।1st: 15 2nd: 12 3rd: 10 4th: 9 5th: 8 6th: 7 7th: 6 8th: 5 9th: 4 10th: 3 11th: 2 12th: 1 13th+: 0
বিধি
- আপনি কেবলমাত্র ম্যাকের সি, সি ++, জাভা, পিএইচপি, পার্ল, পাইথন (2 বা 3), রুবি এবং সুইফটের মতো প্রাক-ইনস্টল হওয়া কোনও একটি ভাষা ব্যবহার করতে পারেন। আপনার যদি কোনও ভাষা থাকে তবে আপনি একটি সংকলক / দোভাষীর সাথে ব্যবহার করতে চান যা তুলনামূলকভাবে ছোট ডাউনলোড আমি এটি যুক্ত করতে পারি। আপনি কোনও অনলাইন দোভাষী দিয়ে একটি ভাষাও ব্যবহার করতে পারেন, তবে এটি তত দ্রুত চলবে না।
- যদি আপনি ট্রিগ ফাংশন ডিগ্রি বা রেডিয়ানে গণনা করতে চান তবে আপনার উত্তরে উল্লেখ করুন ।
- আপনার প্রোগ্রামটি অবশ্যই আমার ম্যাকের 60 সেকেন্ডের মধ্যে 200 টি পরীক্ষার ক্ষেত্রে (কোনও ফাইল বা STDOUT- এ) এর সমাধানগুলি আউটপুট করতে পারে ।
- এলোমেলোতা বীজ করা আবশ্যক।
- সমস্ত পরীক্ষার ক্ষেত্রে আপনার মোট আউটপুট 1 এমবি এর বেশি হতে পারে না ।
- আপনি যদি নিজের সমাধানটির উন্নতি করে থাকেন এবং পুনরায় স্কোর করতে চান তবে সাহস করে আপনার উত্তরের শীর্ষে পুনরায় স্কোর যুক্ত করুন ।
প্রোগ্রাম
(আপনি যদি রেডিয়ান চান তবে "ডিগ্রি" যুক্তিটি "রেড" তে পরিবর্তন করুন)
- মূল্যায়নকারী পরীক্ষা
- পরীক্ষার ক্ষেত্রে আপনার প্রোগ্রামের আউটপুট স্কোর করুন
- পরীক্ষার কেস তৈরি করুন:
document.getElementById("but").onclick = gen;
var checks = document.getElementById("checks");
for(var i = 1;i<=6;i++) {
var val = i<6 ? i : "All";
var l = document.createElement("label");
l.for = "check" + val;
l.innerText = " "+val+" ";
checks.appendChild(l);
var check = document.createElement("input");
check.type = "checkBox";
check.id = "check"+val;
if(val == "All") {
check.onchange = function() {
if(this.checked == true) {
for(var i = 0;i<5;i++) {
this.parentNode.elements[i].checked = true;
}
}
};
}
else {
check.onchange = function() {
document.getElementById("checkAll").checked = false;
}
}
checks.appendChild(check);
}
function gen() {
var tests = [];
var boxes = checks.elements;
if(boxes[0].checked)genTests(tests,1,5,40);
if(boxes[1].checked)genTests(tests,10,4,40);
if(boxes[2].checked)genTests(tests,1000,3,40);
if(boxes[3].checked)genTests(tests,1e6,1,40);
if(boxes[4].checked)genTests(tests,1e9,0,40);
document.getElementById("box").value = tests.join("\n");
}
function genTests(testArray,tMax,tDec,n) {
for(var i = 0;i<n;i++) {
testArray.push(genNums(tMax,tDec).join(" "));
}
}
function genNums(tMax,tDec) {
var nums = genDigits();
nums.push(genTarget(tMax,tDec));
return nums;
}
function genTarget(tMax,tDec) {
return genRand(tMax,tDec);
}
function genRand(limit,decimals) {
var r = Math.random()*limit;
return r.toFixed(decimals);
}
function genDigits() {
var digits = [];
for(var i = 0;i<5;i++) {
digits.push(Math.floor(Math.random()*10));
}
return digits;
}
textarea {
font-size: 14pt;
font-family: "Courier New", "Lucida Console", monospace;
}
div {
text-align: center;
}
<div>
<label for="checks">Sections: </label><form id="checks"></form>
<input type="button" id="but" value="Generate Test Cases" /><br/><textarea id="box" cols=20 rows=15></textarea>
</div>
লিডারবোর্ড
বিভাগ স্কোর (জয়ের # টি):
- [0-1] ব্যবহারকারী 202729 : 40, এমডাহুমনে: 0
- [0-10] ব্যবহারকারী 202729 : 40, এমডাহুমনে: 0
- [0-1000] ব্যবহারকারী 202729 : 39, এমডাহুমনে: 1
- [0-10 6 ] ব্যবহারকারী 202729 : 33, এমডাহুমনে: 7
- [0-10 9 ] ব্যবহারকারী 202729: 0, এমডাহুমনে : 40
সম্পর্কিত: ব্যবহারকারী-নির্দিষ্ট নম্বর ব্যবহার করে একটি বৈধ সমীকরণ তৈরি করুন
cos(0)/sin(0^0)/sin(0^0)
।