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>