لحل التمرين السابق يمكننا تنفيذ المطلوب بشكل حرفي، يلزمنا لائحتين، واحدة لتخزين الناتج النهائي و أخرى لتخزين ما لدينا حتى الآن ( و التي سنضيفها للناتج النهائي عندما يجب التقسيم) بالإضافة إلى عداد يعد كم عنصر لدينا حتى الآن و هو موجود في اللائحة b، حيث سنستعمل هذا المتحول لنقوم بالتقسيم عندما يصبح لدينا عنصرين (و هو المطلوب حسب شرحك).
يمكن كتابة كود بايثون بالشكل التالي:
a = [[0, 0], [0,4], [1,3], [2,0], [2,1], [3,0], [3,1], [3,2], [4,0],[4,4]]
b = [[0,0],[0,4],[2,0],[4,4]]
new_list = []
temp = []
c = 0
for i in a:
if i in b:
c += 1
if c == 2:
new_list.append(temp)
temp = [i]
c = 1
else:
temp.append(i)
if temp:
new_list.append(temp)
for i in new_list:
print(i)
في البداية قمت بتعريف لائحتين حسب الدخل الذي قمت بإرفاقه.
ثم نقوم بتعريف المتغيرات التي تحدثت عنها، حيث أن new_list ستخزن الناتج النهائي، و temp ستكون لائحة لتخزين العناصر التي لدينا حتى الآن، و c هو عداد يعد كم عنصر لدينا منذ آخر تقسيم يوجد في اللائحة b.
نقوم بالمرور على كافة العناصر في a، في حال كان العنصر الحالي موجود في b نقوم بزيادة العداد.
الآن في حال وصل العداد إلى الرقم 2 فهذا يعني أنه لدينا عددين موجودين ضمن اللائحة b و هذا لا يجوز، لذلك علينا القيام بعملية تقسيم هنا، فنقوم بإضافة ما لدينا حتى الآن إلى اللائحة new_list ثم نقوم بجعل اللائحة temp تحتوي آخر عنصر (أي العنصر الحالي) فقط، و ذلك ﻷننا قمنا بعملية تقسيم و كافة العناصر السابقة ذهبت إلى اللائحة new_list، و يصبح العداد 1 (حيث أنه لدينا عدد واحد فقط في اللائحة temp و في اللائحة b).
في حال لم يكن العداد قد وصل إلى الرقم 2 فنقوم فقط بإضافة العنصر الحالي إلى اللائحة temp.
في النهاية نتحقق في حال كان لا يزال لدينا عناصر في اللائحة temp فنقوم بإضافتها إلى اللائحة new_list.
و نقوم بطباعة العناصر، كل عنصر في سطر.