Files
mestint/ora4.2/seged.py

69 lines
1.5 KiB
Python
Raw Permalink Normal View History

2025-03-21 13:33:57 +01:00
import bisect
import random
import functools
class Várólista:
def __init__(self):
pass
def extend(self, elemek):
for elem in elemek: self.append(elem)
def Verem():
return []
class Sor(Várólista):
def __init__(self):
self.A = []; self.kezd = 0
def append(self, elem):
self.A.append(elem)
def __len__(self):
return len(self.A) - self.kezd
def extend(self, elemek):
self.A.extend(elemek)
def pop(self):
e = self.A[self.kezd]
self.kezd += 1
if self.kezd > 5 and self.kezd > len(self.A)/2:
self.A = self.A[self.kezd:]
self.kezd = 0
return e
class RLElem:
def __init__(self,érték,elem):
self.értékem = érték
self.elemem = elem
def __lt__(self,másik):
return self.értékem < másik.értékem
def érték(self):
return self.értékem
def elem(self):
return self.elemem
class RendezettLista(Várólista):
def __init__(self, f):
self.A=[]
self.f=f
def append(self, elem):
pár = RLElem(self.f(elem),elem)
bisect.insort(self.A, pár)
def __len__(self):
return len(self.A)
def pop(self):
return self.A.pop(0).elem()
def argmin(lista, fv):
legjobb = lista[0]; legjobb_érték = fv(legjobb)
for x in lista[1:]:
x_érték = fv(x)
if x_érték < legjobb_érték:
legjobb, legjobb_érték = x, x_érték
return legjobb