BuK/IIm20/Vorlesung 2 Grüning/Hilbert Python
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Python</language>
<code id="60717516e7a6a">
class stream:
def make_stream(self):
n = False
while True:
yield n
#n += 1
def __init__(self):
self.li = []
self.stream = self.make_stream()
def anext(self):
item = next(self.stream)
self.li.append(item)
return item
def next_until(self, n):
if n < len(self.li):
return self.li[n]
else:
item = None
while n >= len(self.li):
item = self.anext()
return item
def get(self, n):
if n >= len(self.li):
return self.next_until(n)
else:
return self.li[n]
def get_finite(self):
return self.li
def einzelbuchung(self, n, value, error = True):
self.get(n)
if self.li[n] == False:
self.li[n] = value
return 0
else:
if error:
print(f"Error in einzelbuchung: Zimmer {n} ist belegt! Hier wohnt {self.li[n - 1]}")
return -1
def zeig_mir(self, n):
self.get(n)
return self.get_finite()[0:n]
def kleingruppenbuchung(self, finite_bus):
for i, value in enumerate(finite_bus):
pos = i
while self.einzelbuchung(pos, value, False) == -1:
pos += 1
def check_in(self, infinite_bus):
pass
</code>
<run id="607189ec7da59">
hilberthotel = stream()
print(hilberthotel.zeig_mir(11))
hilberthotel.einzelbuchung(3, "Otto Grundmann")
print(hilberthotel.zeig_mir(12))
hilberthotel.einzelbuchung(2, "Hella Milkel")
hilberthotel.einzelbuchung(3, "Heribert Wuischke")
hilberthotel.einzelbuchung(7, "Heribert Wuischke")
print(hilberthotel.zeig_mir(12))
print()
</run>
<code id="607189ec7d97d">
class finite_bus:
def __init__(self, id, places):
self.id = id
self.places = places
def zeig_mir(self):
return [tuple((self.id, i)) for i in range(self.places + 1)]
</code>
<run id="607189ec7dab3">
kleinbus815 = finite_bus(815, 8)
print(kleinbus815.zeig_mir())
hilberthotel.kleingruppenbuchung(kleinbus815.zeig_mir())
hilberthotel.zeig_mir(12)
</run>
<code id="607189ec7d9f5">
class infinite_bus:
def __init__(self, id):
self.id = id
self.stream = self.make_stream()
def make_stream(self):
n = 0
t = tuple((self.id, n))
while True:
yield t
n += 1
t = tuple((self.id, n))
def zeig_mir(self, n):
result = []
try:
for i in range(n + 1):
result.append(next(self.stream))
except StopIteration:
pass
return result
bus3813 = infinite_bus(3813)
bus3813.zeig_mir(8)
</code>