Verbindung hergestellt.connected.
num: 29595
-------------------------
GRUPPE: de.sci.mathematik
FROM  : Stefan Ram 
DATE  : 18 Dec 2025 20:32:24 GMT
TEMA  : Quadratwurzeln beim Abendessen
---------------------------------------------
  Habe soeben während des Abendessens ein kleines Programm
  geschrieben, das Quadratwurzeln erzeugt, die sich dem
  Argument selbständig anpassen.

  Hier sieht man drei Beispielausgaben:

 .-
\|x

 .---
\|x+y

 .-
 |x
 |-
\|y

  . Eine rechteckige Fläche aus Schriftzeichen wird durch eine "Box"
  beschrieben:

class Box:
    __slots__=["content","width","origin","baseline"]
    def __init__( self, content, width, baseline ):
        self.content=content
        self.width=width
        self.baseline=baseline
        return
    def __str__( self ):
        return "\n".join(self.content)

  . Die Wurzelklasse enthält nur die einzige Methode
  "render_ascii_display", welche eine Quadratwurzel erzeugt:

class Sqrt:
    def render_ascii_display( self, operand ):

        # add bar above
        content=["-" * operand_box.width]+operand_box.content

        new_content = []

        # add bar left
        for i, line in enumerate( content ):
            if i == 0:
                prefix = " ."
            elif i == len( content )-1:
                prefix = "\|"
            else:
                prefix = " |"
            new_content.append( prefix + line )

        content = new_content

        bar_box = Box(content, 2+operand_box.width,operand_box.baseline)
        
        return bar_box

  . Hierzu wird eine Linie über den Operanden gemalt und eine
  Linie links von ihm, die ganz oben und ganz unten noch mit
  " ." beziehungsweise "\|" verziert wird.

  Da die Klassen für Variablen, Summen und Quotienten noch nicht
  geschrieben wurden, werden diese Operanden in dem folgenden
  Hauptprogramm dann manuell formatiert:

sqrt = Sqrt()
operand_box = Box( ["x"], 1, 0 )
print(sqrt.render_ascii_display(operand_box))
print()
operand_box = Box( ["x+y"], 3, 0 )
print(sqrt.render_ascii_display(operand_box))
print()
operand_box = Box( ["x","-","y"], 1, 1 )
print(sqrt.render_ascii_display(operand_box))
print()

  . Die Ausgabe ist ganz oben zu sehen. 


head: