الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في ال Combinatorics

بدأه Khaled.Alshaya في 14 يناير 2010 · 18 رد · 1,578 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ...

جائنا البيان التالي, أقصد السؤال التالي :lol:

رأى أحد الأشخاص, سيارة تصدم سيارة أخرى, و قام سائق السيارة بالهرب. استطاع ذلك الشخص, أن يحفظ عدة معلومات من لوحة السيارة الهاربة.

مواصفات اللوحة في ذلك العالم الافتراضي:

اللوحة مكونة من ست خانات.

الثلاث خانات الأولى عبارة عن أحرف, و الثلاث الباقية عبارة عن أعداد.

نتعامل مع الأحرف الكبيرة فقط في اللغة الانجليزية.

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

أول حرفين, عبارة عن AS و لكنه لم يستطع معرفة الحرف الثالث.

في الثلاث الخانات الباقية, تأكد من وجود العددين 1 و 2 و لكنه لم يحفظ ترتيبهم. أي أن الثلاث خانات الأخيرة, تحتوي على ثلاثة أعداد, اثنان منهم 1 و 2 دون ترتيب معين.

كم عدد اللوحات المختلفة التي يمكن أن تطابق المواصفات التي أعطاها الشاهد؟

شكل اللوحة يبدو كالتالي:

A S * X X X
_ _ _ _ _ _

حيث النجمة تشير إلى الحرف الثالث, و X تشير إلى عدد من 0 إلى 9. الشاهد استطاع تذكر أن اثنان من الـ X's عبارة عن 1 و 2 و لكنه لم يستطع معرفة الترتيب. إضافة إلى ذلك, لم يستطع معرفة الرقم الثالث.

تحياتي,

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 14 يناير 2010 في 01:59

#2

السلام عليكم ...

رقمي هو :1560 :wink:

#3
اقتباس
السلام عليكم ...

رقمي هو :1560

و عليكم السلام و الرحمة,

لحسن الحظ أن هذا هو حلي :)

و لكن لسوء الحظ ليست الإجابة الصحيحة, فأنا لدي الحل النهائي,

الإجابة أنا حصلت عليها بالطريقة التالية:

1 * 1 * 26 * 2 * C(3, 2) * 10
A * S * Any Capital Letter * 1, 2 * Number of ways to choose the position of 1,2 from 3 positions * any digit
==================
1560

الجواب "الصحيح" هو 1404 و لا تسألني كيف :lol:

#4

صحيح 1560

يمكن اختيار حرف من 26 حرف ---> 26

يمكن تبديل الثلاثة خانات الاخيرة بستة طرق للثلاثة اعداد 1و2و الرقم الغامض ---> 6

الرقم الاخيرالغامض يمكن اختياره ب 10 طرق ---> 10

حاصل ضرب ماسبق

26* 6 *10=1560

توجد مسائل جميلة في الاحتمالات ، قلب صفحات القسم لتجدها . اذكر ايضا هناك مسألة عيد الميلاد المشهوره.

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#5
Khaled.Alshaya كتب:

الجواب "الصحيح" هو 1404 و لا تسألني كيف :lol:

لم تفلح أخي العزيز في انتقادك لحلي ...

Khaled.Alshaya كتب:

X تشير إلى عدد من 0 إلى 9

انتبه لاقتباسك هذا ...لقد حددت الارقام من 0 الى 9

لو كانت الارقام من 1 الى 9 .... لبصمت لك بالعشرة بأن الحل الصحيح هو 1404

بالتوفيق

#6
اقتباس
انتبه لاقتباسك هذا ...لقد حددت الارقام من 0 الى 9

لو كانت الارقام من 1 الى 9 .... لبصمت لك بالعشرة بأن الحل الصحيح هو 1404

الأعداد بالفعل من 0 إلى 9 أي عشرة أعداد.

#7

السلام عليكم ورحمة الله

هل مسموح بالتكرار فى خانات الأعداد؟

هل مسموح بالتكرار فى خانات الحروف؟

هل انت واثق ان الرقم هو 1404 وليس 1440؟ :)

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#8
عماد حمدي احمد كتب:

السلام عليكم ورحمة الله

هل مسموح بالتكرار فى خانات الأعداد؟

هل مسموح بالتكرار فى خانات الحروف؟

هل انت واثق ان الرقم هو 1404 وليس 1440؟ :)

إذا كان مسموحاً بتكرار الأحرف دون الأرقام

1248

إذا كان مسموحاً بتكرار الأرقام دون الأحرف

1440

إذا لم يكن مسموحاً بتكرار الأرقام و الأحرف

1152

إذا كان مسموحاً بالتكرار دون قيود

1560

1

[bg=#000000]

La filosofia e scritta in questo grandissimo libro che continuamente ci sta aperto innanzi a gli occhi (io dico l’universo), ma non si pu o intender se prima non s’impara a intender la lingua e conoscere i caratteri ne’ quali e scritto. Egli e scritto in lingua matematica e i caratteri sono triangoli, cerchi, ed altre figure geometriche senza i quali mezi e impossibile a intenderne umanamente parola; senza questi e un aggirarsi vanamente per un oscuro laberinto.

Galileo

لقد كُتبت الفلسفة في هذا الكتاب العظيم الذي يوجد دائماً أمام أعيننا (و أعني به الكون)، و لكن لا يمكن لأحدٍ أن يفهمه ما لم يتعلم في البدء حروفَ اللغة التي كُتب بها. لقد كُتب بلغة الرياضيات، و الحروف هي مثلثاتٌ و دوائر و أشكالٌ هندسية أخرى؛ بدون هذه اللغة يكون من المستحيل على البشر أن يفهموا و لو كلمة، بدون هذه اللغة نُمسي كمن يتخبطُ بلا هدى في متاهةٍ مظلمة.

جاليليو

[/bg]

Yasser

#9

السلام عليكم....

شكراً جزيلاً لمشاركتكم, وصلنا الحل يا أخوان :)

الفكرة, هي أننا يجب أن نأخذ في الحسبان التكرار الحاصل في حالة كون الرقم الأخير 1 أو 2:

A witness to a hit-and-run accident tells the police that the license plate of

the car in the accident, which contains three letters followed by three digits starts with

the letters AS and contains both the digits 1 and 2 (not necessarily in order). How

many different license plates fit this description?

Solution:

The car number plate consists of six characters which are three letters followed

by three digits.

Number of ways to choose the letter = 26.

Number of ways to choose the third digit (other than 1 or 2) = 8.

Number of ways to choose the position of third digit = 3.

Number of ways to permute 1 and 2 = 2.

Total # of ways = 26 x 8 x 3 x 2 = 1248.

However this number does not include the case when the third digit itself is 1 or

2 so we need to work out those cases separately.

Number of ways to permute 1, 1, 2 = 3! / 2! = 3.

Number of ways to permute 1, 2, 2 = 3! / 2! = 3.

Total Number of ways with third digit being 1 or 2 = 26 x (3 + 3) = 26 x 6 = 156

Therefore Total Number of Possible Number Plates = 1248 + 156 = 1404.

#10

لم اقتنع بالحل. مارأيكم ان نتأكد بشكل عملي .

اخ خالد ضع ال1404 حالة في مصفوفة csv file (برنامج يمكن ان يقوم بذلك) وساضع ال 1560 واعمل مقارنة لنرى الحالات الاضافية هل تنطبق عليها الشروط ام لا.

تم تعديل هذه المشاركة بواسطة ibr_exn في 15 يناير 2010 في 00:19

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#11

هذا برنامج ماتلاب بسيط لاعطاء ال 1560 حالة ويقوم بحفظها في ملف

function lst
clc
L=['A','B','C','D','E','F','J','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
n=1
for l=1:26
  for i=0:9     
      ls{n}  =['AS' L(l) num2str(i) num2str(1) num2str(2)];
      ls{n+1}=['AS' L(l) num2str(i) num2str(2) num2str(1)];
      ls{n+2}=['AS' L(l) num2str(1) num2str(i) num2str(2)];
      ls{n+3}=['AS' L(l) num2str(1) num2str(1) num2str(i)];
      ls{n+4}=['AS' L(l) num2str(2) num2str(i) num2str(1)];
      ls{n+5}=['AS' L(l) num2str(2) num2str(1) num2str(i)];
      n=n+6;
  end
end
save('lst.mat','ls');

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#12

السلام عليكم ...

أخي إبراهيم, أنا بالفعل كتبت برنامج للتأكد قبل أن أرى يصلني الحل المفصل , و لكنه كالعادة brute-forcing :)

الفكرة, هي أن نركز على الخانات الأخيرة, و التي هي الأرقام الثلاثة. لو قمنا بعد الأعداد المكونة من ثلاثة خانات, و التي تأخذ الشكل التالي: XXX حيث X يمكن أن تكون أي رقم من صفر إلى تسعة, مع إضافة شرط, أن يكون "واحد" و "اثنان" ضمن العدد... فإن هناك 54 عدداً يحقق الشرط الأخير.

بينما الصيغة التي قمنا بطرحها أنا و التي ربما وافقني فيها الأخ Devd تعطي 60 احتمالاً, مما يعني أننا نقوم بحساب أعداد مرتين ضمن الصيغة. فلو فكرنا في السؤال بطريقة أخرى,

فبدلاً من حساب احتمال الأماكن للواحد و الإثنين, ثم ضرب ذلك باحتمال الخانة الأخيرة المكونة من عشر احتمالات, نقوم بعد الـ permutations لكل رقم بين صفر و تسعة مع الواحد و الإثنين و جمع تلك الاحتمالات. فمثلاً, عندما يكون لدينا 1 و 2 و 9

P({1, 2, 9}) = 6
--------------
129
192
219
291
921
912
--------------

كما تلاحظ 6 احتمالات, و بديهياً فإن هذا الأمر سينطبق على باقي الأعداد, ماعدا الحالة الخاصة ... 1 و 2, فلو قمنا بسرد الـ permutations عندما يكون الرقم المجهول يساوي الواحد, و نفس الفكرة عندما يكون 2:

P({1, 2, 1}) = 6?
--------------
121
112
211
211
121
112
--------------

كما ترى نحن نقوم بحساب 6 احتمالات في هذه الحالة, على الرغم من وجود ثلاثة فقط! نحن افترضنا وجود ستة احتمالات, رغم أن الثلاث الأخيرة عبارة عن تكرار للثلاث الأولى لوجود رقمين متشابهين ضمن الثلاثة أعداد.

لاحظ أن هذا لاعلاقة له بكون التكرار مسموح أم لا في الخانات, لأن هذه الحالة فعلياً هي إحدى حالات تكرار الرقم نفسه في خانة أخرى :)

تحياتي,

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 15 يناير 2010 في 03:30

#13

صباح الخير

البارحة أخ خالد عندما أكدت لي بأن الارقام من 0 الى 9 (لعب الفار بعبي كما يقال في العامية :blink: )

قمت سريعا" بكتابة برنامج بالماتلاب يخرج لي المصفوفة الكاملة والتي هي بابعاد 1560*6 حسب المبدأ الذي ناقشناه سابقا"

في نهاية البرنامج كانت يدي جاهزة لتضرب الامرين التاليين لانهاء ملف هذه المسألة:

s=unique(MyMAT,'rows');
Size(s); ---------> 1404*3

من خلال الامرين يقوم ماتلاب بحذف جميع الاسطر المكررة ومن ثم يعرض أبعاد المصفوفة الناتجة... لأتفاجأ بأنه قد حذف لي 156 سطرا" (والتي تمثل عدد الاحرف 26 مضروبة بالتكرارات الستة الناتجة عن القيم 1 ,2 للمتغير X ) ...

هنا أدركت بسرعة خطأي بعدم طرح هذه التكرارات 6 من احتمالات الارقام الـ 60 ...

كان علّي التفكير بتعمق أكثر .. وأخذ الوقت الكافي لذلك

أخ ابراهيم ... انتبه الى الى كودك في الاعلى .... يعطي تكرارات ليست من شروط المسألة :)

تم تعديل هذه المشاركة بواسطة Devd في 15 يناير 2010 في 04:27

#14

السلام عليكم ورحمة الله

أخونا الفاضل خالد

كما تفضلت حضرتك , ففعلا الإجابة التى تفضلت بها صحيحه , وذلك لأن هناك بعض الحالات ستكون مكررة وبالتالى العدد النهائى سيكون أقل

Case 1) A, S, Y, 1, 2, X, where the permutation of Y is 26 and permutation of X is 10

Case 2) A, S, Y, 1, X, 2, where the permutation of Y is 26 and permutation of X is 9 (X=2 is a repetition for X=2 in Case 1)

Case 3) A, S, Y, 2, 1, X, where the permutation of Y is 26 and permutation of X is 10

Case 4) A, S, Y, 2, X, 1, where the permutation of Y is 26 and permutation of X is 9 (X=1 is a repetition for X=1 in Case 3)

Case 5) A, S, Y, X, 1, 2, where the permutation of Y is 26 and permutation of X is 8 (X=1 is a repetition for X=1 in Case 2 and X=2 is a repetition for X=2 in Case 3)

Case 6) A, S, Y, X, 2, 1, where the permutation of Y is 26 and permutation of X is 8 (X=1 is a repetition for X=1 in Case 1 and X=2 is a repetition for X=2 in Case 4)

هذا والله اعلى واعلم ،،،

تم تعديل هذه المشاركة بواسطة عماد حمدي احمد في 15 يناير 2010 في 04:27

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#15

لم انتبه لموضوع التكرار :blush: .يبدو أنها مسألة من النوع السهل الممتنع. :lol:

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#16

السلام عليكم ورحمة الله وبركاته

اخوناا الفاضل خالد

وجدت الحل هو 1152 ومرفق الكود والملف التنفيذى للتوضيح

لان حلها رياضيا هو ايضا 24 * 6 * 8 = 1152

والكود يوضح ذلك والملف المرفق

Dim counter, i, j As Integer

Dim st As String

Private Sub cmd_Combin_Click()

For i = 1 To 26

st = Chr(64 + i)

If st <> "A" And st <> "S" Then

For j = 0 To 9

If j <> 1 And j <> 2 Then

counter = counter + 1

txt_Combin.Text = txt_Combin.Text & Format(counter, "000") & vbTab

txt_Combin.Text = txt_Combin.Text & "AS" & st & j & "12" & vbTab

txt_Combin.Text = txt_Combin.Text & "AS" & st & j & "21" & vbTab

txt_Combin.Text = txt_Combin.Text & "AS" & st & "1" & j & "2" & vbTab

txt_Combin.Text = txt_Combin.Text & "AS" & st & "2" & j & "1" & vbTab

txt_Combin.Text = txt_Combin.Text & "AS" & st & "12" & j & vbTab

txt_Combin.Text = txt_Combin.Text & "AS" & st & "21" & j & vbCrLf

End If

Next j

End If

Next i

lbl_count.Caption = counter * 6

End Sub

اتمنى ان يكون الكود واضحا وبسيطا

Combinatorics .rar

#17

كود ماتلاب المعدل . 1404 حاله. تم الاخذ في الاعتبار الحالات الخاصه

function lst
clc
L=['A','B','C','D','E','F','J','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
n=1
for l=1:26
  for i=0:9    
      if i~=1 && i~=2
         ls{n}  =['AS' L(l) num2str(i) num2str(1) num2str(2)];
         ls{n+1}=['AS' L(l) num2str(i) num2str(2) num2str(1)];
         ls{n+2}=['AS' L(l) num2str(1) num2str(i) num2str(2)];
         ls{n+3}=['AS' L(l) num2str(1) num2str(2) num2str(i)];
         ls{n+4}=['AS' L(l) num2str(2) num2str(i) num2str(1)];
         ls{n+5}=['AS' L(l) num2str(2) num2str(1) num2str(i)];
         n=n+6;
      else
         if i==1 
            ls{n}  =['AS' L(l) num2str(1) num2str(1) num2str(2)];
            ls{n+1}=['AS' L(l) num2str(1) num2str(2) num2str(1)];
            ls{n+2}=['AS' L(l) num2str(2) num2str(1) num2str(1)];
            n=n+3;         
         else
            ls{n}  =['AS' L(l) num2str(2) num2str(1) num2str(2)];
            ls{n+1}=['AS' L(l) num2str(2) num2str(2) num2str(1)];
            ls{n+2}=['AS' L(l) num2str(1) num2str(2) num2str(2)];          
            n=n+3;                      
         end
      end
  end
end
save('lst.mat','ls');

26*8*6+26*1*3+26*1*3=1404

@Dved: ارجو ان تضع كود ماتلاب خاصتك. لم اتمكن من عمل الموضوع على شكل مصفوفات لذلك عملته على شكل خلايا. :happy:

اقتباس
جدت الحل هو 1152

لاحظ ان التكرار مسموح بين الخانات. اهم شيء عدم وجود حالات متكرره.

تم تعديل هذه المشاركة بواسطة ibr_exn في 15 يناير 2010 في 18:25

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#18

السلام عليكم ورحمة الله وبركاته

لقد اخطأت فعلا حيث اعتقدت ان المطلوب هو عدم التكرار بين الحروف والارقام

#19
ibr_exn كتب:

@Dved: ارجو ان تضع كود ماتلاب خاصتك. لم اتمكن من عمل الموضوع على شكل مصفوفات لذلك عملته على شكل خلايا. :happy:

I ' M Devd :sleep:

السلام عليكم ...

المعذرة على التأخير..

أخي ابراهيم حاول عند التعامل مع الحروف في المصفوفات ان تستخدم مقابلاتها من مفاتيح الـــ Ascii من الارقام

عندها يمكنك اللعب بها كما تشاء وعند الانتهاء قم بارجاعها باستخدام الوظيفة Char ...

انظر المثال ..

%          ********  S   T   A  R  T   **********
i1=1;
j1=0;
for j=65: 90 %--------> generate A to Z char
 for i=48:57 %--------> generate 0 to 9 char     
    S=uniqueperms([65 83 j 49 50 i]);%match unique permutations that generated by Perms Function
    n=size(S,1);   
    x(i1:j1+n,:) =S;   % add Rows and store new items
    i1=i1+n;
    j1=j1+n;  
  end
end

%##########################################################################
z=find(x(:,1)~=65);% find indexs that refer to not equal A (First Column)
Mytarget=removerows(x,z);%-----------> remove all the rows by z indexs from x
x=Mytarget; % set  x to new matrix result
z=find(x(:,2)~=83);% find indexs that refer to not equal S (SECond Column)
Mytarget=removerows(x,z);
x=Mytarget;
z=find(x(:,3)<65);% find indexs that refer to equal Numbers(0:9) (third Column)
Mytarget=removerows(x,z);
%##########################################################################

clear x z S
% Now Mytarget matrix contain what we need ----> size 1404 * 6
 char(Mytarget)%Now return to convert matrix by keyascii char and display result

clear Mytarget

لقد استعنت من مكتبتي الخاصة القديمة بالملف الوصفي uniqueperms.m لا أعلم ان كانت النسخ الجديدة من ماتلاب

مدعومة به ... على اية حال الملف مرفق مع المثال

بالتوفيق ....

Puzzle.rar

تم تعديل هذه المشاركة بواسطة Devd في 16 يناير 2010 في 01:31

مواضيع مشابهة