بسم الله الرحمن الرحيم
تفضل أخي الجواب (متعمد فيه عدم الاختصار)
ويعالج عدم التكرار للأرقام
[html]function test (tap,a)
for k = 1,4 do
if a == tap[k] then
return true
end;end
return false
end
------------------------------------
repeat
nb_table= {0,0,0,0};
p=0;number =0
n=1000;
for j=1,4 do
v =Math.Random(0, 9);
while (test(nb_table,v)==true) do
v = Math.Random(0,9);
end
Table.Insert(nb_table, j, v);
number =number+nb_table[j]*n
n=n/10
end
p =Math.Random(2, 9);
while (test(nb_table,p)==true) do
p = Math.Random(2,9);
end
tamer = number*p
until tonumber(String.Length(tamer))==5 and tonumber(String.Mid(tamer, 1, 1))==nb_table[4] and
tonumber(String.Mid(tamer, 2, 1))==nb_table[2] and tonumber(String.Mid(tamer, 3, 1))==nb_table[3]
and tonumber(String.Mid(tamer, 4, 1))==p and tonumber(String.Mid(tamer, 5, 1))==nb_table[1]
-----------------------------------------------------------------------------------------------
Dialog.Message("Notice", number..'*'..p..'='..tamer);
[/html]
موفق
وطبعا بعد ماثبت انه لا يوجد الا حل وحيد يمكن اختصار الكود الى :
[html]repeat
nb_table= {0,0,0,0};
p=0;number =0;n=1000
for j=1,4 do
v =Math.Random(0, 9);
Table.Insert(nb_table, j, v);
number =number+nb_table[j]*n
n=n/10
end
p =Math.Random(2, 9);
tamer = number*p
until tonumber(String.Length(tamer))==5 and tonumber(String.Mid(tamer, 1, 1))==nb_table[4] and
tonumber(String.Mid(tamer, 2, 1))==nb_table[2] and tonumber(String.Mid(tamer, 3, 1))==nb_table[3]
and tonumber(String.Mid(tamer, 4, 1))==p and tonumber(String.Mid(tamer, 5, 1))==nb_table[1]
Dialog.Message("Notice", number..'*'..p..'='..tamer);
[/html]
لكن يبقى الغير مختصر هو الصحيح لمعالجة حالات مماثلة ذات الحلول المختلفة
المشاركة الأصلية بواسطة عبد الهادي بهاب
مشاهدة المشاركة
ويعالج عدم التكرار للأرقام
[html]function test (tap,a)
for k = 1,4 do
if a == tap[k] then
return true
end;end
return false
end
------------------------------------
repeat
nb_table= {0,0,0,0};
p=0;number =0
n=1000;
for j=1,4 do
v =Math.Random(0, 9);
while (test(nb_table,v)==true) do
v = Math.Random(0,9);
end
Table.Insert(nb_table, j, v);
number =number+nb_table[j]*n
n=n/10
end
p =Math.Random(2, 9);
while (test(nb_table,p)==true) do
p = Math.Random(2,9);
end
tamer = number*p
until tonumber(String.Length(tamer))==5 and tonumber(String.Mid(tamer, 1, 1))==nb_table[4] and
tonumber(String.Mid(tamer, 2, 1))==nb_table[2] and tonumber(String.Mid(tamer, 3, 1))==nb_table[3]
and tonumber(String.Mid(tamer, 4, 1))==p and tonumber(String.Mid(tamer, 5, 1))==nb_table[1]
-----------------------------------------------------------------------------------------------
Dialog.Message("Notice", number..'*'..p..'='..tamer);
[/html]
موفق
وطبعا بعد ماثبت انه لا يوجد الا حل وحيد يمكن اختصار الكود الى :
[html]repeat
nb_table= {0,0,0,0};
p=0;number =0;n=1000
for j=1,4 do
v =Math.Random(0, 9);
Table.Insert(nb_table, j, v);
number =number+nb_table[j]*n
n=n/10
end
p =Math.Random(2, 9);
tamer = number*p
until tonumber(String.Length(tamer))==5 and tonumber(String.Mid(tamer, 1, 1))==nb_table[4] and
tonumber(String.Mid(tamer, 2, 1))==nb_table[2] and tonumber(String.Mid(tamer, 3, 1))==nb_table[3]
and tonumber(String.Mid(tamer, 4, 1))==p and tonumber(String.Mid(tamer, 5, 1))==nb_table[1]
Dialog.Message("Notice", number..'*'..p..'='..tamer);
[/html]
لكن يبقى الغير مختصر هو الصحيح لمعالجة حالات مماثلة ذات الحلول المختلفة

تعليق