إزالة التكرارات في الملفات النصية الكبيرة

StackOverflow https://stackoverflow.com/questions/505545

  •  21-08-2019
  •  | 
  •  

سؤال

لقد كنت أحاول حساب جميع التباديل الفريدة لـ جداً كلمة طويلة (مكافحة التفكيك)، وعلى الرغم من أنني أستطيع حساب التباديل للكلمات، إلا أنني أواجه مشاكل في إيقاف إنتاج التكرارات.

عادةً ما أقوم بتشغيل ملف List<T>.Contains() الطريقة على سلسلتي، لكن قائمة التباديل تصبح كبيرة جدًا ولا يمكنني الاحتفاظ بها في الذاكرة.لقد ارتكبت هذا الخطأ سابقًا وتمكنت من استخدام كل مساحة الذاكرة البالغة 8 جيجابايت في جهاز الكمبيوتر الخاص بي.ولمنع حدوث ذلك مرة أخرى، قمت بتغيير الكود لإلحاق التقليب المحسوب بملف وتحريره من الذاكرة.

سؤالي الرئيسي هو هذا: كيف يمكنني منع إضافة التباديل المكررة إلى ملفي دون تحميل كل شيء في الذاكرة؟ هل من الممكن، على سبيل المثال، تحميل الميجابايت القليلة الأولى بشكل انتقائي، ومسحها ضوئيًا، والمضي قدمًا حتى اكتمال الملف، أم يجب أن أبحث في اتجاه مختلف؟

هذا ليس واجبًا منزليًا، لقد أعطاني واجبي الرياضي موقفًا افتراضيًا حيث يمكن للكمبيوتر حساب 30 تبديلًا في الثانية وجعلني أعرف كم من الوقت سيستغرق حساب جميع التباديل.لم تكن هذه مشكلة، ولست بحاجة إلى مساعدة في ذلك، أردت فقط معرفة المدة التي سيستغرقها جهاز كمبيوتر حديث لأداء نفس المهمة.

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

المحلول

ماذا عن استخدام الخوارزمية التي تولد جميع التباديل بدون التكرارات؟بهذه الطريقة لن تضطر إلى التحقق منها في المقام الأول.

يؤدي بحث Google عن "الخوارزمية التي تولد التباديل" إلى ظهور عشرات المراجع لتبدأ.على سبيل المثال طرق توليد التقليب

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