142 lines
2.8 KiB
Io
142 lines
2.8 KiB
Io
# 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
|
|
)
|