Code Poems: nel codice e nell'esecuzione
Alejandro Corredor, Ars Poetica, 2012(?)
// width=200 height=560
// Recoding of:
// Alejandro Corredor, Ars Poetica, 2012(?)
// by Antonio Belluscio
let silence = " ";
let idea = "This is'nt p0etry.";
let draft;
let poem = new Array(idea.length);
function setup() {
// createCanvas(200,510); // ???????????
draft = idea;
Write();
ReThink();
}
function draw() {
ReWrite();
}
function Write() {
pprint(draft);
}
function ReThink() {
for (let decomp = 0; decomp < draft.length; decomp++) {
poem[decomp] = draft.substring(decomp, decomp + 1);
}
}
function ReWrite() {
let seek = int(random(0, poem.length));
poem[seek] = " ";
let poetry = join(poem, "");
pprint(poetry);
if (poetry == silence) {
pprint(".");
noLoop();
}
}
// CONSOLE SIMULATION THROUGH A "PRE" HTML ELEMENT
let outputPre;
let preWidth = 160; // without padding
let preHeight = 530;
//let preHeight = "100%";
function pprint(textLine) {
// return;
if (outputPre == undefined) {
noCanvas();
outputPre = createElement("pre", "");
outputPre.position(0, 0);
outputPre.size(preWidth, preHeight);
outputPre.style("font-size","12px");
outputPre.style("padding","15px 20px");
outputPre.style("margin","0");
outputPre.style("background-color","#000");
outputPre.style("color","#fff");
outputPre.style("overflow-y","scroll");
outputPre.style("cursor","pointer");
outputPre.style("user-select","none");
outputPre.mouseClicked(regenerate);
}
outputPre.html(textLine + "<br>", true);
}
function regenerate() {
if (outputPre) {
outputPre.html("");
}
draft = idea;
Write();
ReThink();
loop();
}
Il codice/poema produce risultati diversi a ogni esecuzione.
Per rieseguire il codice della simulazione di questa pagina è possibile cliccare sul risultato ottenuto.
Sul Web Editor è presente il sorgente in p5.js della simulazione. La "traduzione" e il tentativo di ottenere un risultato simile a quello che si ottiene in Processing hanno ovviamente fatto perdere un po' il senso al codice originario e vengono segnalati a puro scopo didattico.
Per chi fosse interessato a far eseguire il codice/poema in Processing, il "testo" è:
String silence=" ";
String idea="This is'nt p0etry.";
String draft;
String[]poem=new String[idea.length()];
void setup(){
draft=idea;
Write();
ReThink();
}
void draw(){
ReWrite();
}
void Write(){
println (draft);
}
void ReThink(){
for(int decomp=0;decomp<draft.length();decomp++)
{poem[decomp]=draft.substring(decomp,decomp+1);}
}
void ReWrite(){
byte seek=byte(random(0,poem.length));
poem[seek]=" ";
String poetry=join(poem,"");
println(poetry);
if(poetry.equals(silence)){
println("."); noLoop();}
}