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.
Beispiele zu Code Poetry bieten die Wiener Slams der vergangenen Jahre.
Einige Links zu Code Poetry:
Die Einreichungen 2017
Die Publikumslieblinge waren:
Nachfolgend findest du die Einreichungen:
Zungenbluetenrekursionen
von Wolfgang Schleicher: download
#!/usr/bin/env python3
import random
print("\nZUNGENBLUETENREKURSIONEN")
blueten = random.randint(6, 10)
gaensebluemchen = ["Angerblume", "Mondscheinblume", "Sommerrose",
"Monatsblume", "Herzblume" ,"Maßliebe",
"Morgenblume", "Geißblume", "Tausendschön",
"Tränenblume", "Glotzblume", "Winterkrone"]
ich_pfluecke = True
def liebt_mich(blueten):
if blueten == 0:
return False
else:
print("liebt mich!")
return liebt_mich_nicht(blueten-1)
def liebt_mich_nicht(blueten):
if blueten == 0:
return True
else:
print("\t\t liebt mich nicht!")
return liebt_mich(blueten-1)
def ich_frage(blueten):
if blueten == 0:
return True
else:
print("Ich frage!")
return ich_frage_nicht(blueten-1)
def ich_frage_nicht(blueten):
if blueten == 0:
return False
else:
print("\t\t Ich frag nicht!")
return ich_frage(blueten-1)
def lieb_dich(blueten):
if blueten == 0:
print("\nFrag, wenn du liebst, nie die", Blume, "!")
return False
else:
print("lieb Dich!")
return lieb_dich_nicht(blueten-1)
def lieb_dich_nicht(blueten):
if blueten == 0:
print("\nFrag, wenn du liebst, stets die", Blume, "!")
return True
else:
print("\t\t lieb Dich nicht!")
return lieb_dich(blueten-1)
def die_sehnsucht_zupft(blueten):
blueten = random.randint(6, 10)
if liebt_mich(blueten) == True:
print("\nDie", Blume,"gibt Anlass zur Hoffnung:\n")
die_sehnsucht_zupft_weiter(blueten)
else:
print("\nWer glaubt schon der erstbesten", Blume,"!\n")
return die_sehnsucht_zupft(blueten)
def die_sehnsucht_zupft_weiter(blueten):
blueten = random.randint(6, 10)
if ich_frage(blueten) == False:
print("\nDie",Blume,"sagt durch die Blume:\n")
blueten = random.randint(6, 10)
return lieb_dich(blueten)
print("UND JEDES NEUE ANGEBOT IST TOTER CODE")
else:
print("\nWer glaubt schon der erstbesten", Blume,"!\n")
return die_sehnsucht_zupft_weiter(blueten)
while ich_pfluecke:
Blume = random.choice(gaensebluemchen)
print("\nWer liebt, fragt gerne die", Blume, ":\n")
die_sehnsucht_zupft(blueten)
ich_pfluecke = str(input("\nWeiterpflücken mit beliebiger Taste und ,\n"
"Abbrechen mit : "))
if not ich_pfluecke:
print("\nWillst du lieber echte Blumen wählen,\n"
"kannst du auf die Symmetrie der Zungenblüten zählen.\n")
Der Text is ausführbarer Python Code.
Stefan Breitenfeld hat Zungenbluetenrekursionen in PHP übersetzt und stellt es zum Ausprobieren online zur Verfügung.
Beispielausgabe:
ZUNGENBLUETENREKURSIONEN
Wer liebt, fragt gerne die Herzblume :
liebt mich!
liebt mich nicht!
liebt mich!
liebt mich nicht!
liebt mich!
liebt mich nicht!
liebt mich!
liebt mich nicht!
liebt mich!
Die Herzblume gibt Anlass zur Hoffnung:
Ich frage!
Ich frag nicht!
Ich frage!
Ich frag nicht!
Ich frage!
Ich frag nicht!
Ich frage!
Ich frag nicht!
....
....
Frag, wenn du liebst, stets die Herzblume !
Weiterpflücken mit beliebiger Taste und ,
Abbrechen mit : _
Willst du lieber echte Blumen wählen,
kannst du auf die Symmetrie der Zungenblüten zählen.
Choice
von Claudia Hackl: download
#include
#include
#include
using mindsets std;
int main () {
create my.future;
try mindset {
sometimes.means.always;
always.seams.like.forever;
forever.leads.to.infinit.love;
}
if (mindset fails) {
try something different {
sometimes.has.a.choice;
having.a.choice.is.freedom;
freedom.leads.to.happiness;
}
if (something different fails){
reset.the.system;
delete motivational.quotes.from.the.internet;
delete beautiful.pictures.from.other.people;
delete list.of.lifegoals.you.downloaded;
delete pre.made.to.do.lists;
create your.own;
}
}
return a lifetime full of happiness;
}
#Yourown
von Claudia Hackl: download
// your own
#include using namespace std;
int main () {
create daydreamer;
// let's start the game
try mission(daydreamer) {
everybody.has.to.complete.their.own.mission;
everybody.chases.their.own.dreams;
so.let.everybody.take.their.own.path;
because.everbody.can.become.their.own.hero; even.if.we.fail,
we.can.try.again; but.always.be.careful;
try.not.to.get.stuck.in.an.infinite.loop;
}
if (mission(daydreamer) fails)
{
cout << "An exception occurred!";
cout << "What do you want to do?";
if (you want to ask for help, press 1)
{
your.own.nerds.will.hack.the.system.to.your.advantage;
be.careful.you.can.only.skip.the.queue.once;
chance of cheat will be activated; // you accomplish the mission
}
if (you want to try again, press 2)
{
some.advice.for.the.next.one;
be.true.to.yourself;
appreciate.your.opponents;
love.your.team.mates; make.the.best.out.of.everything;
never.loose.faith; remember.that.there.are.numerous.ways.to.victory; your.own.nerds.will.always.be.by.your.side;
try mission(daydreamer); // mission starts from the beginning
}
}
else // if everything works out
{
cout << "Hello World, we made it!"; return as a hero; tribute.to.your.own.nerds;
}
}
Random words
von Claudia Hackl: download
#include
using wordspace std;
int main () {
public:
my.vision;
private:
try to.speak {
random.words.come.to.my.head;
fall.into.pieces.without.even.said;
writing.them.down.for.no.purpose;
starting.my.speech.makes.me.so.nervous;
just.want.to.say.it.out.loud;
afraid.of.the.critical.crowd;
}
if to.speak fails {
boost.selfconfidence;
dont.ever.give.up;
think.outside.the.box;
}
try (mission words.for.everybody) {
open eyes;
open ears;
open mouth.for.you.me.and.everyone;
stand.up;
stand.up to.myself;
stand.up dont.sit.down;
stand.up for.others.that.dont.get.the.chance;
start babbling;
start speaking;
start discussing;
start changing;
start using random.words.for.a.reason;
turn up volume;
}
return by making changes;
}
Movement is life
von Peter Wildman: download
int elligence = 0;
boolean ofIt = true;
char ging = 'l';
int vating;
float up;
char seng = 'o';
char tered = 'v';
char riots = 'e';
char[] movement = {};
void setup() {
movement = append(movement, ging);
movement = append(movement, seng);
movement = append(movement, tered);
movement = append(movement, riots);
size(900, 800);
textSize(20);
background(0);
}
void draw() {
for (int life = elligence; life < movement.length; life++) {
float ing = noise(frameCount/(life+1))*width;
pushMatrix();
translate(ing, random(height));
rotate(ing);
fill(255, 20);
text(movement[life], 0, 0);
popMatrix();
}
}
//How it is read:
//In the beggining there is intelligence
//No Bull. Eons of it. It's true.
//Charging inside it is elivating
//Floating up. Chasing the ohhhhh!
//As if chartered
//A path is met at the base of life lines
//Diverging out
//Carried by charriots we are emergent
//Whilst charred boxes lay still
//We append the ging seng
//We append higher education
//We append riots as movements
//into a movement often
//indexed and boxed in
//But what moves over and over again?
//for coming into to this life
//amounts to intelligence
//life is
//for as long as there is movement
//life moves
//and love moves
//through this path
//drawn at the origin
//Floating
//Life and oneness
//are noise moving by a bredth
//reduced by the divisiveness of movement
//we are constantly translating
//often to seemingly random heights
//orbiting around origins
//filled with transparent light
//drawn with life's movement as it is seen
//before finally returning over again
//to intelligence, life, movement and love.
Der Text is ausführbarer Processing (PDE) Code und die englische Übersetzung im code kann vorgelesen werden, während das Code Poem läuft.
Beispielausgabe:
While True
von Thomas Hainscho: download
true = -1
WHILE true
PRINT "true"
IF NOT(true) THEN
PRINT "anything"
END IF
WEND
PRINT "everything"
Der Text is ausführbarer Just Basic Code.
Beispielausgabe:
true
true
true
true
true
true
true
true
true
....
....
Wofür schlägt dein Herz?
von Svitlana Vakulenko: Der Code ist auf Github verfügbar.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
11 November 2017
.. codeauthor: svitlana vakulenko
'''
import sys
import time
from twython import Twython, TwythonRateLimitError
from espeak import ESpeak
from twitter_settings import *
class Twitter_Processor():
def __init__(self):
self.twitter_client = self.connect_to_twitter()
def connect_to_twitter(self):
return Twython(APP_KEY, APP_SECRET,
OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
def tweets_from_list_iterator(self, list_name):
next_max_id = None
while True:
params = {'slug': list_name, 'owner_screen_name': MY_NAME, 'count': 1000000, 'max_id': next_max_id}
statuses = self.twitter_client.get_list_statuses(**params)
if statuses:
# print len(statuses)
yield statuses
next_max_id = statuses[-1]['id']
else:
next_max_id = None
class Bot():
def __init__(self, add_rate=-10):
self.twitter = Twitter_Processor()
self.speaker = ESpeak()
def say_hashtags_from_list(self, list_name):
batches = self.twitter.tweets_from_list_iterator(list_name)
for tweets in batches:
hashtags = [hashtag['text'].encode('utf-8') for tweet in tweets for hashtag in tweet['entities']['hashtags']]
for hashtag in set(hashtags):
phrase = '#' + hashtag.decode('utf-8')
delay_print(phrase)
self.speaker.say(phrase)
def delay_print(s, delay=0.1):
for c in s:
sys.stdout.write('%s' % c)
sys.stdout.flush()
time.sleep(delay)
def test_delay_print():
delay_print("hello world")
def test_espeak():
speaker = ESpeak()
speaker.say("Hello world.")
def say_hashtags_from_list(list_name):
myBot = Bot()
myBot.say_hashtags_from_list(list_name)
if __name__ == '__main__':
list_name = 'wien'
say_hashtags_from_list(list_name)
Das Program ist in Python geschrieben und liest Hashtags aus regionalen Twitterlisten vor.
Beispielausgabe:
#SNESMini#green#sorteo#hamradio#Mazedonien#sickboy#MMK#Happydeathday
#SuperMan#ÖAW#Skopje#Artemisa#MissionImpossible#NASAMgUE#RumbaFlamencoSongs
#Segwit#Asia#AstonMartin#sneakpreview#BT2017#Goodwood#wiengr#startupchallenge
#tech#WPB#WuMatters#Kochtweet#startups#Oreo#Thailand#Amazon#Wissenschaft
#Bitcoin#Salzburg#preblackfriday#Sorteo#magloop#Aquaman
The universe in a cup of coffee
von Fabio Petrillo: download
class TheUniverse extends MyCupOfCoffee {
MyMind myIlusion;
Dream iWakeUp;
static void but() {};
TheUniverse() throws MyImagination {
while(TheTime.flows()) {
expands(myIlusion);
but();
if(iWakeUp.toReality()) {
throw MyImagination.toAnotherDimension();
}
}
}
static void So() {};
TheUniverse expands(MyMind toInfinite) throws MyImagination {
try {
Dream anotherTime;
So();
return new TheUniverse();
} finally {
Please.anotherCupOfCoffe();
}
}
}
Pandoras Puzzel Box
von Andreas Bülhoff:
AENUNEADIN RE UAISSHHTU SEO M NEHEE O HE
H NEU NS UREHRETESNRINUEAHEICDV SIHCSSI
LNK AA ME SIKNPHSI TSMI ISEED EDN NNH WS
EDEC RUADSNHLDNECU EALSEAH MNGEEW ER NV
U SGELC NIFTRE MZBTFND E DETB DWTLEEERNI
SL N R RRE NNCCE OHDUSHHNP EL EEUNP WDSN
EL MASFIAS UA EEANBUBAN BCSNGIO ED EO A
AA EL ENEBREGL K DWEF GM EOE GFESDERIEG
T CD REAS NIEIAEINSE EINME RREE I IHETER
DF EESSONS CDW ONEKUAI GSSAITSAACEURUND
TTSPTIEE R MANEW LESCRO RMDRHEHHWASBLIU
MAS IN H R WEOSD IDALG DL EJEAHCN ED IIG
URE LR AEDEE DOM IZOF HFA S IBOIPHNANTN
P TSMTUN E EITNTNU RUTORAHNITMU ZIT I EC
E NB SCMNHECNTU TIEKTAC B DGNEEFSINA EE
IG KETI NIAUTLINADD ROMSETENNOANARC HVAU
N USZS E SGE MBITSNN R UFHDDTEGA C EEHC
MEETEM P A IDNS Y IR TRF HNTRTNESCEUINEH
U NMIGIU RRR MRSZMUECAG RIDEPEC S E ERR
LR NGISNKMTMGLI NT SAE I S B V ENIHN VDS
Pandoras Puzzle Box is a device that creates a local wireless network and generates a poem offered as download whenever a user logs in an tries to open a webpage. The hardware is based on the Raspberry Pi Zero W, the software is a modified Pirate Box OpenWRT hack. The poems generated are 800 character text squares with each character appearing according to the probability of the english language. Hardly readable texts appear, with flashes of semantic meaning (see one example above). However the project focuses more on the unseen omnipresence of WIFI networks and the perception changing login that triggers only partly readable texts. – Log into the network, open the box, the evil text abounds. Beware its gaze which seeks and finds its meaning in your reading.
The project consists of the actual hardware, the code, written by Fabian Roddeck, and an artist book, that includes a tutorial to build your own box, install and modify the code. When presenting the project usually a script that lets the laptop connect to the WIFI network and tries to open a page is used. The text generated by the box is then read by the OSX text to speech app, which spells letters until it finds a sequence of characters it recognizes from its dictionary. Semantics then appear as hearable shifts between noise and actual words.
This is the box:
I the antic mechanic
von Michael Beisteiner: download
i the some day
antic mechanic
the last loughing
animal
i the voice
within the voice
as_king:
r we alive
r we dead
r we nuts
or r we
digital gods
(michael beisteiner)
Das Gedicht gelesen durch das Internet.
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
- Run script
- Produce cheap shirts with meaningless design
- ???
- 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;
}
Senryū-Wettbewerb
Wir lesen immer weniger? Der Text für das digitale Zeitalter passt optimalerweise in 140 Zeichen?
Wir sagen, das Gedicht konnte in 17 Silben immer schon Raum finden, um ausdrücken, was den Menschen bewegt.
Wir suchten euere Haiku/Senryū zum Thema -
"Poems for the Digital Age/Gedichte für das Digitale Zeitalter"!
Impressum
Adresse:
Literaturkreis Podium
Helferstorferstraße 5/1-2
A-1010 Wien
Mail: contact@codepoetry.at
Tel.: +43 699 1373 3739