سؤال

لدي قائمة ببدء الجلسة وأوقات التوقف ، بتنسيق مثل ذلك:

23/11/09 15:18:32, 23/11/09 15:18:40
23/11/09 15:20:02, 23/11/09 15:20:32
23/11/09 15:20:10, 23/11/09 15:20:40

هذا في Excel في الوقت الحالي ، ابدأ DateTime في نهاية عمود واحد DateTime في الآخر.

في الأساس ما أريد القيام به هو بعض المعالجة بعد هذه البيانات. لست متأكدًا مما يجب استخدامه حتى الآن ، سواء أكان لتطبيق طلبي الخاص ، أو مجرد استخدام Excel ، وهو المكان الذي كنت آمل في المساعدة.

في الأساس ما أريد القيام به هو العمل ، لفترة زمنية X ، قل للبساطة ، الساعة 15:00 - 16:00. استنادًا إلى هذه الجلسات ، أريد معرفة عدد الاتصالات المتزامنة خلال تلك الساعة.

أي اقتراحات أفكار ، كيف ، ماذا تستخدم؟ Excel؟ VS2008؟

أظن أن الشيء الجميل الوحيد في الاحتفاظ به في Excel هو أنه يمكنني بسهولة إنتاج الرسوم البيانية ، إلخ ... وكنت دائمًا أعاني من العمل مع كائنات DateTime في Vs.

هل كانت مفيدة؟

المحلول

أعتقد أن هذه ليست مشكلة سهلة على الإطلاق. اسمحوا لي أن أعيد وضع مشكلتك: يمكنك النظر في كل اتصال كقطعة على خط ، مع قيمة بداية وقيمة نهائية. ما تحاول العثور عليه هو أكبر مجموعة فرعية من الأجزاء التي لها تقاطع غير فائق ؛ عدد العناصر في تلك المجموعة الفرعية هو عدد الاتصال المتزامن. إذا تمكنت من حل ذلك ، فيجب أن يكون العثور على الإجابة عن زمن محدود تافهة (مجرد "اقتطاع" كل اتصال بحيث إذا كانت قيمة البدء قبل بدء الفترة ، يبدأ الاتصال عند بداية الفترة).
الآن السبب في أنني أعتقد أن هذا أمر صعب هو أنه إذا كنت تأخذ ثلاثة قطاعات ، على سبيل المثال ، من 1:00 إلى 2:00 ، 1:00 إلى 1:15 و 1:45 إلى 2:00 ، تتداخل كل 3 ، لكن لديك فقط 2 اتصالات متزامنة. لذا ، فإن مجرد التحقق من عدد الاتصالات الأخرى التي تتداخل مع كل اتصال لن يكون كافياً ، فسيتعين عليك في الواقع التفكير في كيفية تداخل التداخل ، إذا جاز التعبير.
يمكن القيام بمعظم الأشياء في Excel ، على الأقل إذا كنت تستخدم VBA ، لذلك لا أعتقد أن هذه مشكلتك حقًا - المشكلة هي الخوارزمية نفسها.
يحرر: لقد فعلت بعض الحفر السريع ، ويبدو أن ذلك خوارزمية مارزولو قريب مما تحاول القيام به. سأحفر المزيد ، لكن هذا قد يمنحك نقطة انطلاق.
تحرير 2 تتمثل إحدى الطرق "الرخيصة" للحصول على إجابة / تقريب لائق هو تحطيم الفترة التي تفكر فيها على فترات صغيرة متتالية (على سبيل المثال: كسر ساعة واحدة في قطاعات لمدة 5 دقائق) وللحسب كل جزء ، احسب الروابط التي تتداخل. يجب أن يكون ذلك أسرع من محاولة تحديد الجزء الذي تتقاطع فيه معظم الأجزاء!

نصائح أخرى

أعتقد أن طريقة غير فعالة حقًا هي أن تتقدم من خلال قيمة بداية المكالمات ، والتحقق من كل قيمة نهاية مكالمة أكبر ، وزيادة العداد إذا كانت أكبر (كونها مكالمة متزامنة)

ثم في وقت معين يمكنني أن أقول عدد الاتصالات المتزامنة ...

لا تعتقد أنه يساعدني كثيرًا إذا أردت أن أقول شيئًا مثل عدد المتزامن بين الساعة 14:00 و 15:00

آه

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top