commit.sh

This commit is contained in:
Cametendo
2026-04-29 11:49:38 +02:00
parent 372b892862
commit 75299c9236
7 changed files with 121974 additions and 0 deletions

3
week-4/apfel.txt Normal file
View File

@@ -0,0 +1,3 @@
Das ist ein Haus.
Das ist ein Hund
Das könnte sein.

29
week-4/benutzerliste.txt Normal file
View File

@@ -0,0 +1,29 @@
BENUTZERLISTE
1. PRIMÄRE NUTZER (Main Target Group)
- Alltags-Organisierer
Nutzen die App täglich oder fast täglich, brauchen schnelle Erfassung und verlässliche Erinnerungen.
- Strukturierte Listen-Nutzer
Arbeiten gern mit einfachen Listen und Kategorien, möchten Übersicht ohne Komplexität.
- Deadline-/Reminder-Nutzer
Nutzen die App vor allem für „Erinnere mich rechtzeitig“, weniger für grosse Strukturen.
2. SEKUNDÄRE NUTZER (gelegentliche Nutzer)
- Gelegenheits-Planer
Öffnen die App nur ein paar Mal pro Woche, nutzen Basisfunktionen.
- Kalender-Fokus-Nutzer
Denken zeitbasiert, nutzen die App als Ergänzung zum Kalender.
- Projekt-orientierte Nutzer
Nutzen die App temporär für grössere Schul-/Arbeitsprojekte.
3. SONSTIGE (nicht Hauptzielgruppe, aber real vorhanden)
- Interessierte Test-Nutzer
Installieren → testen → eventuell behalten.
- Minimalisten
Nutzen selten ToDos, brauchen aber manchmal schnelle Erinnerungen oder kurze Notizen.
4. NICHT-NUTZER
- Bewusste Nicht-Nutzer
Organisieren alles im Kopf oder auf Papier, wollen keine App.
- Technische Pflichtrollen
Devs, Support, Admins gehören nicht zur echten Produktzielgruppe.

18
week-4/index.html Normal file
View File

@@ -0,0 +1,18 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sketch</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="/libraries/p5.min.js"></script>
<script src="/libraries/p5.sound.min.js"></script>
</head>
<body>
<script src="markov-chain.js"></script>
</body>
</html>

68
week-4/l-system.js Normal file
View File

@@ -0,0 +1,68 @@
let angle;
let axiom = "F";
let sentence = axiom;
let len = 100;
let rules = [];
rules[0] = {
a: "F",
// b: "FF-[-F-F-F]+[+F+F+F]",
c: "FF*[*F/F/F]/[/F*F*F]",
};
function generate() {
len *= 0.5;
let nextSentence = "";
for (let i = 0; i < sentence.length; i++) {
let current = sentence.charAt(i);
let found = false;
for (let j = 0; j < rules.length; j++) {
if (current == rules[j].a) {
found = true;
nextSentence += rules[j].b;
break;
}
}
if (!found) {
nextSentence += current;
}
}
sentence = nextSentence;
createP(sentence);
turtle();
}
function turtle() {
background(51);
resetMatrix();
translate(width / 2, height);
stroke(255, 100);
for (let i = 0; i < sentence.length; i++) {
let current = sentence.charAt(i);
if (current == "F") {
line(0, 0, 0, -len);
translate(0, -len);
} else if (current == "+") {
rotate(angle);
} else if (current == "-") {
rotate(-angle);
} else if (current == "*") {
rotate(angle * 2);
} else if (current == "/") {
rotate(angle / 2);
} else if (current == "[") {
push();
} else if (current == "]") {
pop();
}
}
}
function setup() {
createCanvas(400, 400);
angle = radians(10);
background(51);
createP(axiom);
turtle();
let button = createButton("generate");
button.mousePressed(generate);
}

67
week-4/markov-chain.js Normal file
View File

@@ -0,0 +1,67 @@
let myData;
const amountOfWords = 100;
let uniqueArray = [];
let sentenceArray = [];
let exist = false;
function preload() {
myData = loadStrings("apfel.txt");
}
function setup() {
createCanvas(400, 300);
console.log(myData);
background(200);
const myDataSplit = myData.flatMap((str) => str.split(" ")).filter(Boolean);
//console.log(myDataSplit);
for (let i = 0; i < myDataSplit.length; i++) {
for (let j = 0; j < uniqueArray.length; j++) {
if (myDataSplit[i] === uniqueArray[j]) {
exist = true;
}
}
if (!exist) {
uniqueArray.push(myDataSplit[i]);
}
exist = false;
}
console.log(uniqueArray);
let map = new Map();
let nextWords = [];
for (let i = 0; i < uniqueArray.length; i++) {
nextWords = [];
for (let j = 0; j < myDataSplit.length; j++) {
if (uniqueArray[i] === myDataSplit[j]) {
nextWords.push(myDataSplit[j + 1]);
}
}
map.set(uniqueArray[i], nextWords);
// map.set("nextWords", uniqueArray[i + 1]);
}
map.set("abc", ["a", "b", "g"]);
console.log(map);
// Select a random line from the text.
/*let phrase = "";
for (let i = 0; i < amountOfWords; i++) {
let phrasePart = random(myDataSplit);
phrase = phrase + " " + phrasePart;
}
console.log(phrase); */
textAlign(LEFT, CENTER);
textFont("Courier New");
textSize(12);
// text(phrase, 20, 100, 300);
// describe(`${phrase}`);
text("- William Shakespeare", 20, 250);
}
function generateWords() {}

36
week-4/markovtest.js Normal file
View File

@@ -0,0 +1,36 @@
// An array of lines from a text file
let lines;
// The Markov Generator object
let markov;
// An output element
let output;
// Preload some seed data
function preload() {
lines = loadStrings("shakespere.txt");
}
function setup() {
// Join everything together in one long string
// Keep carriage returns so these will show up in the markov generator
let text = lines.join("\n");
// N-gram length and maximum length
markov = new MarkovGenerator(8, 400);
markov.feed(text);
//console.log(markov);
// Make the button
let button = createButton("generate");
button.mousePressed(generate);
noCanvas();
}
function generate() {
// Generate some text
let result = markov.generate();
// Put in HTML line breaks wherever there was a carriage return
result = result.replace("\n", "<br/><br/>");
createP(result);
}

121753
week-4/shakespeare.txt Normal file

File diff suppressed because it is too large Load Diff