Ahmed Hatem Ahmed

Ahmed Hatem Ahmed

عضو ماسـي
#1
السؤال الرابع من أسئلة الخوارزميات السؤال صعب شوي :rolleyes:
لنفترض ان لدينا رقمين a , b نريد جمع هذين الرقمين كيف يمكن جمعهم

مع مراعاة هذه الشروط :-
1 - لا يمكنك استخدام الجمع المباشر مثل (a + b)
2 - لا يمكنك استخدام الطرح المباشر مثل (a - b)
3 - لايمكنك استخدام دوال جاهزة
4 - لايمكنك استخدام الحلقات التكرارية for او while او شيء مثلهم

اي صورة فقط ...


----------$$$ تم اضافة الحلول $$$----------

الحلول :- (كل حل مختلف عن الاخر)
==================================

صاحب الحل : Ahmed Hatem Ahmed

PHP:
function sum(a , b)
	if (a == 0) then return b; end
	if (b == 0) then return a; end
	
	if(a > 0)then	
		a = a - 1;
		b = b + 1;
	else
		a = a + 1;
		b = b - 1;
	end
	
	return sum(a,b);
end


sum = sum(10,5);
Dialog.Message("Result",sum);
==================================​

صاحب الحل : Ahmed Hatem Ahmed

PHP:
a = 5; b = 3;

b = b / a;
b = b + 1;
a = a * b;

Dialog.Message("Result" , a);
==================================​

حل مقدم من استاذنا الحبيب (حل استثنائي) : ثامر ابو بلقيس

PHP:
x = 10; y = 8; 
sum = Math.Log10((10^x) * (10^y)) 
Dialog.Message("Result" , sum);
بالتوفيق للجميع .
 

عبد الهادي بهاب

عبد الهادي بهاب

عضو ذهبي
#2
ليس حلا لكنه تحايل ......جمع غير مباشر

PHP:
a = 1; b = 5;
x=a.."+"..b;
x = string.gsub("$return "..x.."$", "%$(.-)%$", function (s) 
return loadstring(s)() 
end) 
Dialog.Message("Notice", x);
 
عبد الهادي بهاب

عبد الهادي بهاب

عضو ذهبي
#3
حل اخر طريف نوعا ما
ليس فيه اية معادلة رياضية مباشرة


PHP:
a = 1; b = 5;

d="*"; 
Dialog.Message("Notice", # (String.Repeat(d, a)..String.Repeat(d, b)));
 
Ahmed Hatem Ahmed

Ahmed Hatem Ahmed

عضو ماسـي
#4
ليس حلا لكنه تحايل ......جمع غير مباشر

PHP:
a = 1; b = 5;
x=a.."+"..b;
x = string.gsub("$return "..x.."$", "%$(.-)%$", function (s) 
return loadstring(s)() 
end) 
Dialog.Message("Notice", x);
جميل جدا . لكن خالفت احد الشروط -- >> استخدام الدوال الجاهزة :332:
 
Ahmed Hatem Ahmed

Ahmed Hatem Ahmed

عضو ماسـي
#5
حل اخر طريف نوعا ما
ليس فيه اية معادلة رياضية مباشرة


PHP:
a = 1; b = 5;

d="*"; 
Dialog.Message("Notice", # (String.Repeat(d, a)..String.Repeat(d, b)));
لايمكتك استخدادم الدوال الجاهزة :wow:
 

محمود فهمان

عضو مشارك
#6
جمع بدون علامة؟
 

أوتومان

عضو مميز
#7
تبدو صعبة
 
Ahmed Hatem Ahmed

Ahmed Hatem Ahmed

عضو ماسـي
#9
هل السؤال صعب لهذة الدرجة ؟؟ ::x-Kill:
علي العموم سيتم اضافة الحل اليوم
 

:: التـ ج ــا ::

عضو ذهبي
#10
صراحه ما اعرف .
لكن
اللي فهمته
تعريف عملية غريبه على انها جمع
واستخدمها للجمع بدلا من ال+

لكن ما اعرف ^_^
 

ثامر أبو بلقيس

عضو مشارك
#12
هذا ليس حل ؟؟؟؟ عذرا
 

ثامر أبو بلقيس

عضو مشارك
#14
الحل الأول تم فيه تجهيز دالة
وكلا الحلين ألمح إشارة الجمع و الطرح
هكذا فهمت من السؤال ممنوع استعمال + و - تحت أي ظرف
و أضن حتى الزملاء فهموا نفس الشيء

لذلك فالطلب بالنسبة لي لم يكن مفهوما لأني من الصباح و انا مع
اللوغاريتم و نشره ولم أصل

مشكور تقبل وجهة نظري لأني لم أفهم المعطيات الشروط
 
Ahmed Hatem Ahmed

Ahmed Hatem Ahmed

عضو ماسـي
#15
الحل الأول تم فيه تجهيز دالة
وكلا الحلين ألمح إشارة الجمع و الطرح
هكذا فهمت من السؤال ممنوع استعمال + و - تحت أي ظرف
و أضن حتى الزملاء فهموا نفس الشيء

لذلك فالطلب بالنسبة لي لم يكن مفهوما لأني من الصباح و انا مع
اللوغاريتم و نشره ولم أصل

مشكور تقبل وجهة نظري لأني لم أفهم المعطيات الشروط
تم تجهيز دالة وليست دوال جاهزة مثل الموجودة ب
المكتبة Math انظر :smile: :-

PHP:
function p(a,b) return Math.Pow(a,b) end 
x = 10; y = 8; 
sum = Math.Log10(p(10,x) * p(10,y)) 
Dialog.Message("Result" , sum);
1 - لا يمكنك استخدام الجمع المباشر مثل (a + b)
لم اقل لا يمكن استخدام العلامة ابدا فقط الجمع المباشر كما هو موضح :rolleyes:
=======================================================
خلاص عادي لا يوجد مشكلة المهم تو ضوع الاجابات اذا كان لديك اجابة اخري
فم بوضعها وان شاء الرحمن سارفقها في الموضوع لتعم الفائدة
ولا تتأخر من فضلك في سؤال الان (يتعلق بالمصفوفات) :1016:​
 

ثامر أبو بلقيس

عضو مشارك
#16
ما كتبته يعادل تماما
PHP:
x = 10; y = 8; 
sum = Math.Log10((10^x) * (10^y)) 
Dialog.Message("Result" , sum);
دون اللجوء نهائيا لدالة
ثم نشر اللوعاريتم في تلك المنطقة راني مانيش لا قيها

موفق
 
Ahmed Hatem Ahmed

Ahmed Hatem Ahmed

عضو ماسـي
#17
ما كتبته يعادل تماما
PHP:
x = 10; y = 8; 
sum = Math.Log10((10^x) * (10^y)) 
Dialog.Message("Result" , sum);
دون اللجوء نهائيا لدالة
ثم نشر اللوعاريتم في تلك المنطقة راني مانيش لا قيها

موفق
جميل جدا سيتم اضافة الحل مع الاستثناء بالاعلي .
 

ثامر أبو بلقيس

عضو مشارك
#18
لبس حلا الابعد التخلص من الدالة المحجوزة

مشكور
 
Ahmed Hatem Ahmed

Ahmed Hatem Ahmed

عضو ماسـي
#19
لبس حلا الابعد التخلص من الدالة المحجوزة

مشكور
Log10 هي (السطر الثاني في الكود)

PHP:
re = Math.Log10(100)
    Dialog.Message("Math.Log10(100)",re)
    
    sz = Math.Log(100) / Math.Log(10)
    Dialog.Message("Math.Log(100) / Math.Log(10)",sz)

المشكلة الآن هي التخلص من Log ...
 

أعلى