From 9571a9f81a68c21a9f0beaa84847d663a84d5d13 Mon Sep 17 00:00:00 2001 From: Max Hohlfeld Date: Mon, 10 Apr 2023 17:11:27 +0200 Subject: [PATCH] io day 2 --- io/day2.io | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++ io/matrix.txt | 3 ++ 2 files changed, 144 insertions(+) create mode 100644 io/day2.io create mode 100644 io/matrix.txt diff --git a/io/day2.io b/io/day2.io new file mode 100644 index 0000000..1104e4e --- /dev/null +++ b/io/day2.io @@ -0,0 +1,141 @@ +# Task 1: +fib := method(i, + if(i==0) then(return 0) + if(i==1) then(return 1) + + return fib(i - 2) + fib(i - 1) +) + +fib_loop := method(i, + r := 0 + s := 0 + t := 1 + + for(j, 2, i, 1, r := s; s := t; t := r + s) + + return t +) + +fib(1) println +fib(2) println +fib(3) println +fib(4) println +fib(5) println +fib(6) println +fib(7) println +fib(8) println + +"=====================================" println + +fib_loop(1) println +fib_loop(2) println +fib_loop(3) println +fib_loop(4) println +fib_loop(5) println +fib_loop(6) println +fib_loop(7) println +fib_loop(8) println + +# Task 2: +Number old_div := Number getSlot("/") + +Number / = method(divisor, + if(divisor == 0, 0, self old_div(divisor)) +) + +"Testing Task 2:" println +(6 / 0) println +(6 / 3) println + +# Task 3: +"Task 3:" println + + arr := list(list(1, 2, 3), list(4, 5, 6), list(7, 8, 9)) + arr_sum := 0 + for(i, 0, arr size - 1, 1, i println; arr_sum = arr_sum + arr at(i) sum) + arr_sum println + +# Task 4: +"Task 4:" println + + List myAverage := method( + self sum / self size + ) + + list(1, 2, 3, 4) myAverage println + # list() myAverage println + +# Task 5, 6, 7: +"Task 5, 6, 7:" println + + Matrix := Object clone + Matrix dim := method(x, y, + self content := list() + self y := y + self x := x + for(i, 1, y, 1, + self content push(list()) + + for(j, 1, x, 1, + self content at(i - 1) push(0) + ) + ) + ) + Matrix set := method(x, y, value, + self content at(y) atPut(x, value) + ) + Matrix get := method(x, y, + self content at(y) at(x) + ) + Matrix writeToFile := method(filename, + file := File clone openForUpdating(filename) + + for(i, 1, y, 1, + for(j, 1, x, 1, + file write(self content at(i - 1) at(j -1) asSimpleString, " ") + ) + + file write("\n") + ) + ) + Matrix readFromFile := method(filename, + file := File clone openForReading(filename) + lines := file readLines + + x := lines first split size + y := lines size + + self dim(x, y) + + lines foreach(i, line, line split foreach(j, v, self content at(i) atPut(j, v))) + ) + + matrixOne := Matrix clone + matrixOne dim(2, 3) + matrixOne content println + matrixOne set(1,1, 20) + matrixOne get(1,1) println + matrixOne writeToFile("matrix.txt") + + matrixTwo := Matrix clone + matrixTwo readFromFile("matrix.txt") + matrixTwo content println + +# Task 8: +"Task 8:" println + lastGuess := 0 + numberOfGuesses := 0 + targetNumber := (Date asNumber * 70) round % 100 + + while(numberOfGuesses < 10, + input := File standardInput() readLine() asNumber() + + if(input == targetNumber, "fertig!" println; break, + if(numberOfGuesses == 0, "nicht die richtige!" println, + if((targetNumber - input) abs < (targetNumber - lastGuess) abs, "hotter" println, "colder" println ) + ) + ) + + lastGuess = input + numberOfGuesses = numberOfGuesses + 1 + ) diff --git a/io/matrix.txt b/io/matrix.txt new file mode 100644 index 0000000..e84338b --- /dev/null +++ b/io/matrix.txt @@ -0,0 +1,3 @@ +0 0 +0 20 +0 0