Klasse TweeContainer

In twee containers is plaats voor een gelijk aantal dozen $$N$$. Elke doos heeft een bepaalde massa, en deze massa is strikt positief en geheel. Het is de bedoeling om de containers zo te vullen dat hun totaalmassa's zo dicht mogelijk bij elkaar liggen. Dit kan gerealiseerd worden door dozen uit de containers te wisselen.

Schrijf een klasse TweeContainer, met volgende methoden:

Voorbeeld

a = TweeContainer([1, 2, 3, 3], [5, 2, 1, 1])
b = TweeContainer([3, 1, 2, 3], [1, 2, 1, 5])
c = TweeContainer([1, 2, 3, 3], [1, 2, 1, 6])
str(a)					# '[[1, 2, 3, 3]:[5, 2, 1, 1]]'
str(b)					# '[[3, 1, 2, 3]:[1, 2, 1, 5]]'
str(c)					#'[[1, 2, 3, 3]:[1, 2, 1, 6]]'
a == b					# True
a == c					# False
b == c					# False
a.onbalans()			# 0
b.onbalans()			# 0
c.onbalans()			# 1
a *= (1, 2)				# '[[1, 1, 3, 3]:[5, 2, 2, 1]]'
c *= (2, 3)				# [[1, 2, 6, 3]:[1, 2, 1, 3]]' 

Klasse TweeContainerGulzig

Programmeer ook de klasse TweeContainerGulzig. Deze klasse erft over van de klasse TweeContainer, en bevat een extra-methode evenwicht(), zonder argumenten. Deze methode poogt een paar containers in de TweeContainer te wisselen, en gaat hierbij als volgt tewerk:

Voorbeeld

d = TweeContainerGulzig([5, 2, 6, 5, 2, 2], [1, 7, 1, 8, 7, 10])
str(d)					# '[[5, 2, 6, 5, 2, 2]:[1, 7, 1, 8, 7, 10]]'
d.evenwicht()
str(d)					# '[[5, 10, 6, 5, 2, 2]:[1, 7, 1, 8, 7, 2]]'

c = TweeContainerGulzig([7, 2, 3, 3], [5, 2, 1, 4])
str(c)					# '[[7, 2, 3, 3]:[5, 2, 1, 4]]'
c.evenwicht()
str(c)					# '[[7, 2, 3, 3]:[5, 2, 1, 4]]'

Klasse TweeContainerPaar

Programmeer nu ook de klasse TweeContainerPaar. Deze klasse erft ook over van de klasse TweeContainer, en bevat ook een extra-methode evenwicht(), zonder argumenten. Ook deze methode poogt een paar containers in de TweeContainer te wisselen, namelijk:

Voorbeeld

c = TweeContainerPaar([7, 2, 3, 3], [5, 2, 1, 4])
str(c)		# '[[7, 2, 3, 3]:[5, 2, 1, 4]]'

c.evenwicht()
str(c)		# '[[5, 2, 3, 3]:[7, 2, 1, 4]]'

c.evenwicht()
str(c)		# '[[5, 2, 3, 3]:[7, 2, 1, 4]]'