12. mai 2018
Roger Antonsen

En visuell «quine» for Processing

Det er et lite påskeegg i TED-foredraget som jeg holdt forrige helg, og det er en visuell quine for Processing.

En quine er et ikke-tomt dataprogram som ikke tar noen input og som produserer en kopi av sin egen kildekode som den eneste output. Standardtermen for slike programmer i litteraturen for beregnbarhetsteori og datavitenskap er «selv-repliserende programmer», «selv-reproduserende programmer» og «selv-kopierende programmer».

Ved denne definisjonen er ikke mitt program streng tatt en quine, fordi output er ikke kildekoden til programmet, men en visualisering av kildekoden. Dette programmet visualiserer bare seg selv. Uansett, er det moro.

Her er koden hvis du er interessert! PS. Hvis du førsøker, må du lagre programmet med navnet “SelfDrawingSketch.pde”, ellers vil det ikke funke.

String[] lines;
PFont font;
int counter;
float currentWidth, currentHeight;

void setup() {
  size(600, 800);
  lines = loadStrings("SelfDrawingSketch.pde");
  font = createFont("SourceCodePro-Regular", 12);
  textFont(font);
  stroke(0, 255, 0, 60);
  fill(255);
}

void draw() {
  background(30);
  counter = 0;
  currentWidth = 40;
  currentHeight = g.textLeading;
  for (int i=0; i<lines.length; i++) {
    textAlign(RIGHT);
    text(i+1, currentWidth-20, currentHeight);
    textAlign(LEFT);
    line(40, currentHeight, 40 + textWidth(lines[i]), currentHeight);
    for (int j=0; j<lines[i].length(); j++) {
      char c = lines[i].charAt(j);
      if (counter < frameCount) {
        text(c, currentWidth, currentHeight);
        counter++;
      }
      currentWidth += textWidth(c);
    }
    currentWidth = 40;
    currentHeight += g.textLeading;
  }
}

Legg igjen en kommentar

Epostadressen din vil bli kryptert før kommentaren lagres. Den vil kun bli brukt til å vise en gravatar. Ved å sende inn dine data, samtykker du i at all inntastet data kan lagres og vises som en kommentar.