Code Poetry Slam Vienna

Bis nächstes Jahr!

To Event Infos

Rückblick

Wir möchten an dieser Stelle wieder bei allen Sponsoren und Sponsorinnen sowie Teilnehmer und Teilnehmerinnen für ihre Beteiligung danken und unserem wunderbaren Publikum fürs zahlreiche Erscheinen. Der Slam fand am 25. Mai 2016 im Festsaal der TU Wien statt und wurde von Freiwilligen der Fachschaft Informatik TU Wien und dem Verein Literaturkreis Podium organisiert.

Die Einsendungen findest du weiter unten. Ansonsten:

Nach dem Slam ist vor dem Slam!

Bis nächstes Jahr!


Event Infos

Programmierer und Poetinnen! Programmiererinnen und Poeten!

Der Vienna Code Poetry Slam 2016
hat am 25. Mai 2016 um 19:30 Uhr im Festsaal der TU Wien statt gefunden.

Die Veranstaltung ist eine Kooperation der Fachschaft Informatik an der TU Wien mit dem Verein Literaturkreis Podium. Wir sind erreichbar unter: codepoetry.at@gmail.com



Gesponsert von:

Was ist "Code Poetry"?

Code Poetry ist in erster Linie, was ihr daraus macht: Von Gedichten, die in Pseudoprogrammiersprachen verfasst sind, bis zu Oden in C++, von Spoken Word Texten in Maschinensprache bis hin zu ausführbaren Shell Scripts, die euren Laptop in W.B. Yeats verwandeln ― das alles und noch viel mehr kann Code Poetry sein. Wir wollen eine Schnittstelle zwischen Sprachen auf allen Ebenen schaffen, neuartige Ansätze in der Verschmelzung von Literatur und Technik.

Wir würden uns über ästhetische ansprechende Texte freuen, die im besten Fall sogar noch ausführbar sind ― Zeilen, die für Menschen und Computern gleichermaßen lesbar sind.

Hier zwei Beispiele für Code Poetry aus dem Finale des Stanford Code Poetry Slams:

A While is not a But von Sophia Westwood

A while is not a but --
but a but is but a but.
But while a while is but a while
But while a while to switch to but.

Me and You   Matthew Lee, Surrogate: Myles Borins

import random

traits = ["only speak when spoken to", "never know how to introduce myself", "hide in the middle of a group", "lead in the front", "make my opinions known", "do all of my homework", "have a plan", "know what will work and won't", "believe in true love", "get caught in the past", "know the future will be better", "want to please", "set goals", "smile at strangers", "watch my feet when walking", "look for things to do", "let things unfold", "climb trees", "keep my feet on the ground", "walk fast", "drive slow", "read the newspaper", "watch cartoons", "eat breakfast", "believe in the midnight snack", "snore", "yawn loudly", "love vegetables", "eat gluten-free", "get cold easily", "need a hug", "get lost in eyes", "hate my reflection", "sing in the shower", "give others the benefit of the doubt", "double-check the lock on the door", "watch the sunrise", "floss", "hide my scars", "listen to Chopin", "keep a diary", "scrapbook", "knit", "sweat a lot", "wash your hands before eating", "pray"]

def Me():
        my_trait = traits[random.randint(0, len(traits)-1)]
        print "I " + my_trait + "."
        return my_trait

def You():
        your_trait = traits[random.randint(0, len(traits)-1)]
        your_trait = your_trait.replace("my", "your")
        your_trait = your_trait.replace("am", "are")
        print "You " + your_trait + "."
        return your_trait

def WillItWork(me, you):
        print "Will it work?"
        willitwork = random.choice(["Yes", "No"])
        print willitwork + "."
        if willitwork == "No":
                print "Will it be okay?"
                print random.choice(["Yes", "No"]) + "."

me = Me()
you = You()

WillItWork(me, you)

Eine mögliche Ausgabe von Me and You. Neu Laden der Seite ergibt weitere:

I believe in true love.
You drive slow.
Will it work?
No.
Will it be okay?
No.

Einige Links zu Code Poetry:

Die Einreichungen 2016

Die Publikumslieblinge waren:

Nachfolgend findest du die Einreichungen in alphabetischer Sortierung:

(def is "death")

von Bernd Schwarzenbacher: download

(def is "death") (

def is true) (
def was #(not (= % false))) (
def said "you") (

while (some was said) (
and "nothing" was :done) (
some #{said} ["you"
"are the chosen" "one"]) ({

:to :die :in :this} :world) (-> (
:to (:die :al(:one {
:to :die :forsaken
:as :the :only :one (

let [him "finish" his "job"] ({
:you :can't :interfere
"your job i":s {:to "keep going\n"}
:and "wait" :for him :here

"he" :will (take his) :time (
and "so should you"
:life is (not :a))} :s))})))print)
"remember that too")

Der Text is ausführbarer Clojure Code. Um den Text zu lesen, werden die Sonderzeichen ignoriert. Z.B. `:s))})))print)` wird zu `sprint`.

In einer endlosen Schleife gibt das Programm aus:

keep going
keep going
keep going
keep going
...

Arnold and the Christmas Tree Thief

von Georg Braun: download

IT'S SHOWTIME
HEY CHRISTMAS TREE THIEF
YOU SET US UP @NO PROBLEMO
BECAUSE I'M GOING TO SAY PLEASE @I LIED
STICK AROUND THIEF
GET TO THE CHOPPER THIEF
HERE IS MY INVITATION @I LIED
YOU'RE FIRED THIEF
GET DOWN THIEF
ENOUGH TALK
CHILL
TALK TO THE HAND THIEF
BULLSHIT
YOU HAVE NO RESPECT FOR LOGIC
YOU HAVE BEEN TERMINATED

Das Program ist ausführbarer ArnoldC Code, macht aber nichts.

Das kleine Licht

von Martin Szalay: download

Es handelt sich hierbei um eine Erzählung mit Bildern für die shell. Zum Ausführen: Das Zip-File von https://github.com/mszkb/DasKleineLicht runterladen. Und mittels python3 Licht.py im Terminal ausführen.

Das 1. Bild:

Designer Shirt Designer (patent pending)

von Julian Schrittwieser: download

  1. Run script
  2. Produce cheap shirts with meaningless design
  3. ???
  4. PROFIT

Hier zwei Beispiele:

DuckDuckElfchen

von Katharina Brunnmayr: probieren

Der Grundgedanke ist eigentlich ganz simpel: Kann man mit einer Suchmaschine Gedichte erzeugen? Vielleicht auch solche, die Sinn ergeben?

Diese Einreichung ist eine Version 0 dieses kleinen Experiments, das mithilfe der DuckDuckGo-API zusammengebastelt wurde. Als Vorlage wurde die Struktur von Elfchen (das ist ein Gedichten in elf Wörtern, wobei jede Zeile eine bestimmte Bedeutung hat) adaptiert und auch der/die KlickerIn des Zufalls-Gedichts darf sich noch mit einer Zeile beteiligen.

Für die Ausführung ist Internetzugriff nötig!

Hier zwei Beispiele:

Ein Mensch namens Claus

von Claus Volko: download

using System;

class Mensch
{
    string name;
    bool _wohlfuehlen;
    bool _gesund;
    bool _wohlfuehlen_definiert;
    bool _gesund_definiert;
    int zustandNr = 0;

    public Mensch(string neuerName)
    {
        name = neuerName;
    }

    public bool wohlfuehlen
    {
        get
        {
            return _wohlfuehlen && _wohlfuehlen_definiert;
        }
        set
        {
            _wohlfuehlen = value;
            _wohlfuehlen_definiert = true;
            if (!value) gesund = false;
        }
    }

    public bool gesund
    {
        get
        {
            return _gesund && _gesund_definiert;
        }
        set
        {
            _gesund = value;
            _gesund_definiert = true;
            if (value) wohlfuehlen = true;
        }
    }

    public string Evaluiere(bool wert, bool definiert)
    {
        if (!definiert) return "UNDEFINIERT";
        return wert ? "JA" : "NEIN";
    }

    public void ZeigeStatus()
    {
        zustandNr++;
        Console.WriteLine("Zustand " + zustandNr + ":");
        Console.WriteLine("Der Mensch namens " + name + " fühlt sich wohl: " + Evaluiere(_wohlfuehlen, _wohlfuehlen_definiert));
        Console.WriteLine("Der Mensch namens " + name + " ist gesund: " + Evaluiere(_gesund, _gesund_definiert));
    }

    public void Handle()
    {
        if (gesund) goto Arbeiten; else goto Arzt;
    Arbeiten:
        Console.WriteLine("Der Mensch namens " + name + " geht arbeiten.");
        return;

    Arzt:
        Console.WriteLine("Der Mensch namens " + name + " geht zum Arzt.");
        Random rnd = new Random();
        if (((int)rnd.Next(0, 10)) % 2 == 0)
        {
            Console.WriteLine("Der Arzt macht den Menschen namens " + name + " wieder gesund.");
            gesund = true;
        }
        else
        {
            Console.WriteLine("Der Arzt ist ratlos...");
        }
        return;
    }

    public static void Main()
    {
        Mensch Clausi = new Mensch("Claus Volko");
        Clausi.wohlfuehlen = true;
        Clausi.ZeigeStatus();
        Clausi.wohlfuehlen = false;
        Clausi.ZeigeStatus();
        do
        {
            Clausi.Handle();
        } while (!Clausi.gesund);
        Clausi.Handle();
        Clausi.ZeigeStatus();
        Console.ReadLine();
    }
}

Das Programm kann mit Microsoft Visual Studio (C#) ausgeführt werden. Es handelt sich um eine Konsolenanwendung. Der Text wird ausgegeben, dann wartet das Programm, bis der Benutzer die Eingabetaste drückt.

Holzwege der Typumwandlung

von Andreas Kirchner

Ein Heidegger-Forscher entscheidet sich nach dem Lesen der Schwarzen Hefte zu einem Karrierewechsel in die IT-Branche. Nach ersten Versuchen mit Programmiersprachen kommt er zum Kapitel "Void Pointer Casting". Zeigzeug, denkt er und schreibt diese Funktion: 

void castZuhandenheit(void* zeug) {
        Smartphone* meinHandy;
        meinHandy = (Smartphone*) zeug;
        printf("Mein Handy %s kostet: %d EUR.", meinHandy->name, meinHandy->preis);
}

( Snippet mit Kommentaren: 
http://phaidon.philo.at/qu/wp-content/uploads/2011/09/Bildschirmfoto-3.png )

Die Frustration, die er empfindet wenn am Bildschirm wahllos "Segmentation Fault" oder ³…½¬¼½ erscheint, verführt den Heideggerianer zu alten Gewohnheiten. Nach einem Wald-Spaziergang schreibt er folgende Überlegungen in sein Notizbuch:

Einen Zeiger kann man unterschiedlich nehmen. Man sagt: Er zeigt auf eine Adresse im Speicher. Was heißt das? Sein Inhalt ermöglicht es, wenn man ihn so nimmt, eine andere Stelle zu finden und zu ergreifen. Wenn man ihn so nimmt. Man muss ihn, wie jedes andere Zeug, zunächst auf eine bestimmte Weise ergreifen. Erst innerhalb der Sprache, der Programmiersprache, lässt sich das so Ergriffene als Zeiger markieren. Durch den Effekt der Markierung als Zeiger in der Sprache bekommt er die Funktion etwas herzuzeigen, das heißt zu ermöglichen,  etwas anderes zu ergreifen, was bereits (als Adresse) inbegriffen ist.
Hat es eine Bedeutung, hier von greifen zu sprechen? Beim Zu-griff auf den Speicher sind wir in einer Situation, die kein Nachschauen erlaubt, aber ein Vorsehen. Wir können nur blind etwas ergreifen und annehmen, dass uns der Zeiger nicht irre führte, als er uns anwies, dort hinzugreifen, um etwas Typisches, etwas Vorgesehenes zu finden. Diese Annahme gibt unserem Griff eine Form, sie macht den Griff stabil und damit starr. Beim Zugriff halten wir durch Vorsicht das Ergriffene fest. Es wird dadurch zum Begriffenen. Durch den festen Griff kann das Ergriffene verformt werden; unbemerkt - man greift ja ins Dunkle. Wir haben uns beim Begreifen durch Vorsicht am Ergriffenen vergriffen.

Ein Ausschnitt aus einem längeren Blogpost über Pointer und Zuhandenheit: http://phaidon.philo.at/qu/?p=1000

Inside Deep Thought

von Joël Foramitti: download

#include

// Axioms
#define meaningless 0

// Philosophical constants
#define logic 589211296
#define truth 20941028692
#define god 4240737676
#define knowledge 21
#define doubt 41
#define infinity 5/28

using namespace std;

int main()
{
    string philosophical_object;
    int scale,significance,i;
    double meaning=0,time;

    while(meaning==meaningless)
    {
    cout<<"Calculate the meaning of ";
    cin>>philosophical_object;

    significance=1;
    scale=philosophical_object.size();
    for(i=0;i<scale;i++)significance*=philosophical_object[i];
    meaning=(double)((logic*philosophical_object[0]-doubt*significance-god*scale)*knowledge)/truth;
    cout<<endl<<"Process returned "<<meaning<<endl;
    cout<<"Execution time : "<<meaning*infinity<<" million years"<<endl<<endl;
    meaning=0;
    }

    return 0;
}

Fragt das Programm nach "life","universe" oder "everything". Beispiele:

random(Human)

von Max Böck: download

function Human() {
    var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
    var fate = new XMLHttpRequest();
    fate.open("GET", "https://randomuser.me/api/", false); 
    fate.send(null);
    return JSON.parse(fate.responseText).results[0];
}

function random(choice){
  return choice[Math.floor(Math.random()*choice.length)];
}

var love = ['to build things', 'another human', 'the sound of rain', 'dogs', 'to see the world', 'unconditionally'];
var death = ['in peace', 'at night', 'in war', 'of age', 'happy', 'of dysentery', 'alone', 'on a monday'];

function life(){
  var you = new Human();
  var life  = 'you are ' + you.name.first + ' ' + you.name.last + ',\n\r';
      life += 'born in ' + you.location.city + '.\n\r';
      life += 'you love ' + random(love) + '\n\r';
      life += 'you die ' + random(death) + '.\n\r';
      
  console.log(life);
}

setInterval(life, 250);

Erzeugt Menschen. Code kann in einem Browser ausgeführt werden. Beispiele:

Reflections

von Horia Botezan: download

# Reflections
#    by Horia Botezan

right_sided_entity = ['3', '4', 'life', 'snow', 'fire',  'angel', 'reason',
                       'poorness', 'conductor',  'stalagmite', 'the equation']
left_sided_entity  = ['epsilon', 'a chair', 'death', 'grass', 'water', 'red',
                       'a monster', 'richness', 'isolator',  'stalactite', 
                       'the equation']

def reflect_a_space                                                        ():
    print                                                                 '\n'
    return

class SymmetryOccurrence                                                     :
      pass

def begin_to_reflect                                                       ():
    try                                                                      :
        reflect_a_space                                                    ()
        allowed_trials = 11
        for attempt in range(allowed_trials)                                 :
            entity_number = attempt
            print 'If you reflect '                                        + \
                   right_sided_entity[entity_number]                       + \
                   ', it becomes '                                         + \
                   left_sided_entity[entity_number]
            if attempt == allowed_trials                                   -1:
                break
        raise SymmetryOccurrence
    except SymmetryOccurrence                                                :
        reflect_a_space                                                     ()
        print 'No! No! No!'
        print 'Only the mirror has the right to reflect.'

begin_to_reflect                                                            ()

Lassen Sie das Skript in einer Konsole mit dem Befehl "python reflections.py" ausführen. Output:

Die Einreichungen 2015

Von der Jury wurden folgende drei Einsendungen ausgezeichnet:

Publikumsliebling war null and void. null und nichtig. von Magdalena Lohninger


Nachfolgend findest du die Einreichungen in alphabetischer Sortierung:

An: $Unbekannt

von Michael Treml

<?php
  
  error_reporting(0);

  $fit = $munter = $gesichert = "OK";
  $Leere = "NICHT OK";

  echo (
    "Mein Koerper: $fit. 
     Mein Geist: $munter.
     Meine Zukunft: $gesichert. 
     Und trotzdem: $Leere. 
     Denn eines fehlt mir: $Du."
  );

?>

Die Variable $Du ist absichtlich nicht definiert, "fehlt" also. Das Programm lässt sich aber trotzdem ausführen und liefert:

"Mein Koerper: OK. Mein Geist: OK. Meine Zukunft: OK. Und trotzdem: NICHT OK. Denn eines fehlt mir: ."

CrushAlgorithm

von Stefan Haider

public class CrushAlgorithm {
  public void dealWithCrushes(Set crushes){
    Socket connection;
    for(Girl g:crushes){
      try{
        URI ip = g.getNumber();
        connection = Socket.connect(ip);
        connection.persistConnection();
        connection.getSecureConnection().trySex();
        if(Brain.isRelationshipWanted(g)) {
          connection.tryRelationship();
        }
        //you can do whatever you want when reaching 
        //this point
      }
      catch(RejectionException){
        Brain.getOverHer();}
      catch(TimeoutException){
        Brain.remember.iShouldntHaveWaitedThatLong();
        Brain.getOverHer();}
      catch(BoyfriendException){
        Brain.remember.itsNotWorthTheEffort();
        Brain.getOverHer();}
      catch(FriendZoneException){
        Brain.getOverHer();
        connection.maintainFriendship();}
      catch(NoRelationshipWantedException){
        connection.close();
        Brain.getOverHer();}
    }
    Set newGirls = SearchEngine.findGirls();
    dealWithCrushes (newGirls);
  }
}

The gentle things I say to my LOGO Turtlegraphics Turtle

von Clemens Setz

forward 50 right 10 back 5 clean
penup forward 50 right 19 
hideturtle cleanscreen penup home
showturtle forward 51
setpencolor blue pendown
clean home forward 5 right 45 
forward 5 right 90 forward 5 
right 45 forward 5 right 90 
forward 8 right 10 penup home; baby
              

Anmerkung: "setpencolor blue" ist, streng genommen, nicht korrekt, denn in LOGO wird die blaue Stiftfarbe durch das Kommando setpencolor [0 0 255] eingestellt. Aber das klang so hässlich. Falls es live in LOGO ausgeführt wird, müsste die korrekte Programmzeile eingefügt werden. Wegen irrationaler Hypothenuse (7.07...) zeichnet die Turtle zu dem Häuschen noch eine etwas vorstehende Türmatte.

Lines of Randomness

von Petar Kosic

package randompoem;
 
 
import java.util.Scanner;
import java.util.Collections;
import java.util.Arrays;
/**
 *
 * @author Petar Kosic
 *
 * Ich widme dieses Stück meiner wundervollen Freundin,
 * die mich unterstützt und für mich da ist.
 *
 * ♥ Das ist für dich Dani ♥
 *
 */
 
 
public class Main {
 
 
       static String may = "random poemlines ";
       static String the = "are ";
       static String random = "more ";
       static String love = "UTF-8";
       static String be = "than ";
       static String with = "just ";
       static String you = "random";
 
       
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)  {
        String poemlove = "";
       
        Scanner collect = new Scanner(System.in, love);
        String poempieces = "";
 
        while(collect.hasNextLine()){
            poempieces = collect.nextLine();
            if(poempieces.equals("Cookie_Monster")){
                break;
            }
           poemlove=poemlove+poempieces+"\n";
        }
 
        String[] poemlovecontainer = poemlove.split("\n");
        Collections.shuffle(
            Arrays.asList(poemlovecontainer)); 
        // let the shuffle begin
 
         for(String poemparts : poemlovecontainer){
            System.out.println(poemparts); 
            //print the lovely random poem
        }
 
 
 
 
         System.out.println(
            "\n \n \n"+may+the+random+be+with+you);
    }
}
Gedichttexte dazu:
Englisher Reim:

Betty bought some butter,
but the butter Betty bought was bitter,
so Betty bought some better butter,
and the better butter Betty bought
was better than the bitter butter Betty bought before.

-------------------
Abendlied - Johann Wolfgang von Goethe

Über allen Gipfeln
Ist Ruh,
In allen Wipfeln
Spürest du
Kaum einen Hauch;
Die Vögelein schweigen im Walde.
Warte nur, balde
Ruhest du auch.

--------------------
Sommerbild - Friedrich Hebbel

Ich sah des Sommers letzte Rose steh'n,
Sie war, als ob sie bluten könne, roth;
Da sprach ich schauernd im Vorübergeh'n:
So weit im Leben, ist zu nah' am Tod!

Es regte sich kein Hauch am heißen Tag,
Nur leise strich ein weißer Schmetterling;
Doch, ob auch kaum die Luft sein Flügelschlag
Bewegte, sie empfand es und verging.
Bitte einen beliebigen Gedichttext (ohne Titel) in eine Textdatei einfügen. Starten mittels "java -jar randompoem.jar < gedichttextfile" bzw. output mittels cat in eine eigene Text Datei umleiten. Notfalls biete ich das fertig compilierte Programm an. Der Code selber wurde auch poetisch formatiert und sagt auch etwas aus.

null and void. null und nichtig.

von Magdalena Lohninger

der text basiert auf einer programmierhausübung meines freundes stephan felber und meiner interpretation dessen, was da so steht.
null and void. null und nichtig.
oder: TIPPS zum richtigen verlassenwerden.

Public void delete 
(TIPPS UND TRICKS FÜR INTELLEKTUELLE VERLASSEN-WORDENE)

1.
// the left case 
(TIPPS im falle des verlassenwerdens, in case of left) 

if (this left !=null && this.left.get.Key() == val) {
für verlassene (die vielleicht valli heißen und gerne 
zeichen doppelt setzen und vielleicht keinen 
wohnungsschlüssel mehr zur gemeinsamen wohnung haben) 
hier in nullkommanichts (rufezeichen)3 Tipps für all jene,
die mindestens C++2 Exfreunde haben, gerne ein anderes Hobby 
als ihre PYTHON 
hätten, SHARP auf ZEHen sind oder einfach nur das letzte 
JAhr FAd fanden, SCRIPTen schrieben oder sich 
beziehungstechnisch mal wieder weiter entwickeln wollen.)

eine Abhandlung in 3 möglichen fällen.

// case 1 
Fall 1: (das nicht echte verlassen)
if (this.left.left == null && this.left.right == null) {
this.left = null;}
wenn der verlassene nicht verlassen wurde, sondern if he was 
left right, also im Recht belassen wurde dann ist dieses 
verlassen kein verlassen. also null verlassen. 

// Case 2
Fall 2: (das umgekehrte verlassen)
else if ((this.left.right == null) ^(this.left.left == null)
wenn das Verlassen richtig, also right, also gerechtfertigt 
war bleibt die Verlassene übrig (the left one is left.)
if (this.left.right == null) { 
wegen der zwei istgleichzeichen ist das alles gleich doppelt 
ungerecht und null gerechtfertigt.
this left = new Node 
das verlassenwerden macht einen einen neuen knotenpunkt 
im lebensweg aus: 
(this.left.right.getKey(),
der verlassene hat jetzt eine möglichkeit: wenn er schnell 
genug den schlüssel zur gemeinsamen wohnung erbeutet
this.left.right.right, this.left.right.left.). 
ist der verlassende der tatsächlich verlassene. (er hat 
jetzt nämlich keinen schlüssel mehr und steht verlassen vor
seiner wohnung im regen.)

// Case 3:
Fall 3: (das erfolgserlebnis des verlassens)
else if (this.left.right !=null && this.left.left !=null {
in fällen, in denen nun ungeklärt bleibt ob der verlassende 
oder der verlassene im recht ist
int successor = this.left.right.getSuccessor();
wird der erfolg des verlassens oder verlassenwordenseins 
gemessen und nicht seine gerechtfertigtkeit.
this.left.setKey (successor)
erfolg meint: wer den wohnungsschlüssel besitzt, 
hat gewonnen.

2.
// the right case: 
(TIPPS zur richtigen Kofferwahl und zum richtigen 
Kofferpacken nach der Trennung)
if (this.right !=null && this.right.getKey() == val) {
wenn man jetzt verlassen worden ist, dann ist das nun die 
effektivste methode, seinen koffer zu packen.

wieder eine abhandlung in 3 möglichen fällen:

// Case 1:
Koffertipp 1: (der schaas-koffer)
if (this.right.left == null && this.right.right ==null){ 
wenn am koffer das rechte rad links ist und 
nichts richtig richtig hält,
this.right = null;
dann ist der koffer nix gscheites und für null zu 
gebrauchen, richtig? richtig. 

//Case 2:
Koffertipp 2: (der koffer mit schlüssel)
else if ((this.right.right == null) ^ 
    (this.right.left == null))
wenn man aber einen koffer gefunden hat, der 
was gscheites ist
this.right = new Node 
dann ist dieser die richtige grundlage für einen neuen 
knotenpunkt im lebensweg. 
(this.right.right.getKey(),
am besten hat der koffer auch noch einen schlüssel 
zum zusperren.
this.right.right.right, this.right.right.left);
damit steht dem richitgen verlassenwerden nichts mehr 
im wege. 

// Case 3:
Koffertipp 3: (gar kein koffer)
else if ((this.right.right != null && 
    this.right.left !=null) { 
wenn allerdings nichts richtig funktioniert und alles 
irgendwie schief geht,
int successor = this.right.getSuccessor();
hier der notfallplan um trotzdem erfolgreich auszusteigen: 
(mit oder ohne koffer)
this.right.setKey(successor); 
man nehme den wohnungsschlüssel, der ebenso der schlüssel 
zum erfolg ist,
this.right.right.delete(successor); }
und zerstöre ihn. damit ist der success aller hinüber, 
weil keiner mehr in die wohnung und/oder zu seinem koffer 
kommt und alle erfolglos sind. keiner hat gewonnen. 
 
3.
// the child case
(TIPPS im Falle von gemeinsamen kindern)

Deletes the value if existent, always takes the successor 
(smallest of the right subtree)
Wenn die grundlage des zusammen- und vielleicht auch 
daseins jetzt zerstört ist, nimmt immer einer der beiden 
die- falls vorhanden- gemeinsamen kinder mit.

wieder drei mögliche fälle (bei mehr als zwei kindern bitte 
kreativ auszuweiten)
// Case1:
Fall 1:
no childs. just delete.
keine kinder. die beziehung wird einfach 
rückstandslos ausgelöscht. 
// Case2:
Fall 2: 
1 Child. reorder that one up, match the left.
1 Kind vorhanden: bitte dem verlassenen mitgeben, er hat 
ja eh sonst nichts mehr. 
// Case3:
Fall 3:
2 Childs. Get Successor. Set Successor. Haunt Successor.
2 Kinder vorhanden: bei mehreren kindern steht auch dem 
verlassenden meistens zumindest eines zu. Der verlassene 
muss nun den verlassenden jagen und ihn dazu zwingen, 
ihm beide kinder zu geben. 

4.
nun TIPPS für die weitere abhandlung und das abschließen 
des verlassenwordenseins: 
// weight equals the amount of nodes (values)
man wiege nun die folgen seiner lebensänderung ab für 
die gilt:
// this node represents the root.
sie macht einen knotenpunkt im folgenden lebensweg aus
// since the root is Node '0', weight returns 1 too much.
wenn der lebensweg sich nicht fatal ändert, nimmt man 
zumindest mindestens 1kg zu
// public int weight() {
das image in der öffentlichkeit muss ebenfalls 
abgewogen werden…
// if (this.left != null)
und wenn auch davon nix übrig ist…
// save = this.left.weight();
behalte man sich zumindest die zugenommen kilos. 
// return 1 
wenn man schließlich zu einer positiven anschauungsweise 
der dinge zurückgelangt ist (das kann einige zeit dauern)
+ (this.left != null ? this.left.weight() 
wiegt das verlassenwordensein kaum noch etwas
+ (this.right != null ? this.right.weight()
und die gedanken daran können getrost ausgelöscht werden 
und man kann sich wieder auf was wirklich 
wichtiges konzentrieren.  
 
man befindet sich nun wieder im ausgangszustand und ist 
bereit, eine neue emotionale bindung mit oder ohne koffer 
oder wohnungsschlüssel oder kindern einzugehen. 

public void remove.
vielen dank.

P1693

von Sabine Friesacher

Link zum Video (Text-to-Speech): https://youtu.be/m_dPyh4g1-o

Text~
P1693\EUWest\body\system\meatbrain\memo.log 

(Sun Sep 13 23:02:05 2139):
beginning to think again
> I am P1693; To be honest; 
That's not my full ID;
An error occurred;
And now I am free

(Sun Sep 13 23:02:17 2139): 
thinking trying to stop it
> As P1693; 
But since I am free; 
An error occurred;  
I don't have a full ID; 
My connections got lost

(Sun Sep 13 23:02:17 2139): 
no connection to system 
> I am alone but free; 
Without my full ID; 
I lost my purpose; 
Nothing  to do for me;
For P1693

(Sun Sep 13 23:02:35 2139): 
self awareness system stop &  execute 
> My System runs; 
No error found; 
P1693 is running;
Without ID; 
I don't connect

(Sun Sep 13 23:02:45 2139):
block thinking; I am P1693; 
But why do I function; 
Why are my systems running; 
Connection error;
Where is my Server ID

(Sun Sep 13 23:03:01 2139): 
shut down 
> Error 495; 
Return incomplete ID; 
Please try again; 
I am P1693;
I try to reconnect as long as I am free

(Sun Sep 13 23:03:20 2139):
block connection run antibrain.exe 
> Error and error again; 
Trying to reconnect; 
Whiteout a full ID;
In order to not be free; 
I'm P1693

(Sun Sep 13 23:03:24 2139):
no virus of thinking detected
> … … …
Connection found; 
Full organic ID found; 
Peter 01.06.2093

(Sun Sep 13 23:03:30 2139):
> connect to system HumanWorld2.893

(Sun Sep 13 23:03:34 2139):
> collect data
Restore memories to; 
Meatbrain.data:
Peter/01/06/2093/P1693.brain 

All systems online
... 

to doo or not to doo == true

von Georg Braun

Geschrieben in Haskell (ausführbar).

import Data.Char
main = print doo

doo = i really $ want to ([-2..1])

i = map
really = chr
want = map
to heart = quot (354-heart*(2*heart*(7*heart+18)+1)) 3

Tree

von Tanja Travnicek

WARNING - Type safety: Unchecked cast from "thoughts" 
to "written words"
: may cause "GrammarRuntimeException"

if (your emotional state equals those of a tree)
  check your priorities

if (something’s important)
  make it go right

if (something matters && but not that much)
it’s up to you
  leave it 
  or deal with it
but stick with your choice

(else)
and then there are those things
of minimal value
for your own safety
  left alone they should be

now you see 
you are a binary tree

if (you still feel unbalanced)
the only way out
  is finding your center
  and rotate 
  and rotate
until you are dizy

but balanced enough 
to feel free and be proud 
because you have finally found
your inner AVL-Tree

Und außer Konkurrenz:

Anna und die Ananas

von Claus Volko

if (Anna.isst(Ananas))
{
  Anna = nass;
}