السلام عليكم و رحمة الله و بركاته....
تصور أن لدينا متتابعة على الشكل التالي:
n, n+1, n+2, ..., n+i
و قام أحد الأشخاص بنزع عدد من تلك المتتابعة, ثم قام ببعثرة الأرقام فأصبح ترتيبها عشوائياً عند إدخالها لبرنامجك. هل تستطيع معرفة العدد الذي تم نزعه من المتتابعة المدخلة للبرنامج؟
ملاحظات لتسهيل كتابة الخوارزمية:
أولاً, افترض أن الأعداد المدخلة لا تقل عن عددين. فليس هناك داع للتحقق من وجود عددين فأكثر.
ثانياً, افترض أن أطراف المتتابعة لم يتم المساس بها, بالتالي فإن العنصرين n و n+i دائماً حاضران ضمن مدخلات الخوارزمية.
ثالثاً, و هذه الملاحظة تتبع من الملاحظة الثانية, أن العدد الضائع أو لنقل العدد الذي تم نزعه هو عدد من منتصف المتتابعة. بالتالي لو سميناه n+k فإن k لابد أن تحقق الشرط التالي:
0 < k < i
رابعاً, ليس مطلوباً منك التحقق من كون المدخل لبرنامج صحيح أم لا, و افترض أنك تحصل دائماً على مدخلات صالحة للخوارزمية بقصد تبسط كتابة البرنامج لا أكثر. و هذا يعني أن الأعداد المدخلة عبارة عن أعداد موجبة دائماً.
ما يلي عبارة عن أمثلة على مدخلات البرنامج و مخرجاته(العدد الضائع)...
Example 1: Input: 1 3 Ouput: 2 Example 2: Input: 3 1 Ouput: 2 Example 3: Input: 9 6 7 5 2 3 1 8 Ouput: 4 Example 4: Input: 99 96 91 95 93 98 89 97 92 94 100 Ouput: 90
ما هي أفضل خوارزمية تستطيع الوصول إليها لحل هذا السؤال؟ بمجرد كتابتك للبرنامج ضعه في الموضوع, و بعد أن نصل إلى عدد جيد من الإجابات سنقوم بمناقشتها و طرح أفضل خوارزمية لحل السؤال.
تحياتي :)





