توفيق اسحيمة نشر 17 ديسمبر 2021 أرسل تقرير نشر 17 ديسمبر 2021 (معدل) إستبدل علامة الإستفهام بواحد من ال Arithmetic Operators لتخرج بالنتيجة المطلوبة غير مسموح التعديل على الأرقام و النتيجة المطلوبة هي صفر console.log(10 ? 20 ? 15 ? 3 ? 190 ? 10 ? 400); // 0 تم التعديل في 21 ديسمبر 2021 بواسطة Wael Aljamal توضيح السؤال 1 اقتباس
0 Sam Ahw نشر 17 ديسمبر 2021 أرسل تقرير نشر 17 ديسمبر 2021 Arithmetic Operators أو العمليات الحسابية في الجافاسكريبت هي: + , - , * , / , % هل قمت بمحاولة حل السؤال؟ أرجو أن تنشر الطرق التي جربتها والناتج الذي ظهر معك 1 اقتباس
0 توفيق اسحيمة نشر 17 ديسمبر 2021 الكاتب أرسل تقرير نشر 17 ديسمبر 2021 بتاريخ 10 دقائق مضت قال Sam Ahw: Arithmetic Operators أو العمليات الحسابية في الجافاسكريبت هي: + , - , * , / , % هل قمت بمحاولة حل السؤال؟ أرجو أن تنشر الطرق التي جربتها والناتج الذي ظهر معك نعم اخي لقد حاولت استخراج النتيجة عبر استخدام العمليات الحسابية لكن دائما ما يكون الناتج اما اكبر من الصفر او اصغر من الصفر صراحة لقد حيرني هادا التمرين واود بشدة معرفة كيفية حله. شكرا لك اقتباس
0 Wael Aljamal نشر 18 ديسمبر 2021 أرسل تقرير نشر 18 ديسمبر 2021 لحل السؤال علينا فهم الخوارزميات العودية حيث يقوم التابع function باستدعاء نفسه ولكن للمرحلة التالية من حل المشكلة، ولكل استدعاء حالة مميزة عن باقي الحالات، في مسألتنا يجب تجريب وضع جميع المعاملات الرياضية مكان كل اشارة استفهام ثم الانتقال للإشارة الاستفهام التالية و تجريب جميع المعاملات.. لذلك سيكون لدينا دالة تقبل مصفوفة فيها الرموز ورقم الخطوة وفيها حلقة تجرب استبدال ؟ بقيمة جميع المعاملات ثم تستدعي الخطوة التالية (إشارة الاستفهام التالية).. عندما نقوم بتبديل جميع الإشارات يبقى مهمة عمل تقييم للتعبير الرياضي، والتأكد هل القيمة هنا تساوي 0 حسب شرط المسألة؟ هنا استخدمت مكتبة math والدالة evaluate للتحقق. يوجد 180 حل مختلف للمسألة const math = require("./math.js"); // مكتبة خارجية const operands = ["+", "-", "*", "/", "%"]; // مصفوفة المعاملات let sequence = "10 ? 20 ? 15 ? 3 ? 190 ? 10 ? 400"; // السلسة التي تعبر عن المعادلة let maxStep = sequence.split("?").length - 1; // عدد إشارات الاستفهام let numberOfSolutions = 0; // عدد الحلول sequence = sequence.split(" "); // تحويل السلسة لمصفوفة لنتمكن من تعديل القيم // لايمكن تعديل قيم String // لأنها نمط immutable //console.log(maxStep); function solve(seq, step) { // دالة الحل تقبل مصفوفة القيم و الرموز و الوسيط الثاني هو رقم إشارة الاستفهام //console.log(step); if (step === maxStep) { // بعد الوصول لآخر خطوة نحسب التعبير let fin = seq.join(""); // دمج المصفوفة //console.log(fin); if (math.evaluate(fin) === 0) { // نمرر السلسسة للتقييم وفي حال وجود حل numberOfSolutions++; console.log("solution ", numberOfSolutions, ": ", fin); // نطبع الحل } return; } let index = step * 2 + 1; // حساب دليل العنصر الحالي الذي نريد تبديله let nextStep = step + 1; // رقم الخطوة التالية for (let op = 0; op < operands.length; op++) { // تجريب المعاملات seq[index] = operands[op]; // استبدال المعامل مكان إشارة استفهام هذه الخطوة solve(seq, nextStep); // استدعاء الدالة للخطوة التالية } } solve(sequence, 0); // استدعاء أساسي console.log("numberOfSolutions: ", numberOfSolutions); // طباعة عدد الحلول الملفات: math js.rar 2 اقتباس
السؤال
توفيق اسحيمة
إستبدل علامة الإستفهام بواحد من ال Arithmetic Operators لتخرج بالنتيجة المطلوبة
غير مسموح التعديل على الأرقام و النتيجة المطلوبة هي صفر
توضيح السؤال
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.