204 lines
3.8 KiB
Plaintext
204 lines
3.8 KiB
Plaintext
|
class Livre {
|
||
|
Titre: string
|
||
|
Date: Time
|
||
|
Nb_pages: uint
|
||
|
|
||
|
constr = func (titre: string, nb: uint) Livre {
|
||
|
ret = {
|
||
|
Titre: titre,
|
||
|
Date: time.Now(),
|
||
|
Nb_pages: nb,
|
||
|
}
|
||
|
|
||
|
return ret
|
||
|
}
|
||
|
|
||
|
func joli_titre():string {
|
||
|
return "Voici le " + this.Titre +" fabulueux qui fait: " + this.Nb_pages.as_string()
|
||
|
}
|
||
|
func mix(autre: Livre){
|
||
|
this.Nb_pages = this.Nb_pages + autre.Nb_pages
|
||
|
}
|
||
|
}
|
||
|
|
||
|
lg = new Livre("1er", 1010)
|
||
|
lg2 = new Livre("2er", 10)
|
||
|
|
||
|
list = [lg, lg2]
|
||
|
|
||
|
lg.Date = "20-12-1995"
|
||
|
|
||
|
log(lg.joli_titre())
|
||
|
|
||
|
log(list)
|
||
|
// [Livre, Livre]
|
||
|
num_1 = list[0]
|
||
|
log(num_1)
|
||
|
// {"1er", "20-12-1995", 1010}
|
||
|
|
||
|
num_1.mix(list[1])
|
||
|
// lg.mix(lg2)
|
||
|
|
||
|
log(lg.Nb_pages)
|
||
|
//
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
// nouveau test goo !!
|
||
|
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
)
|
||
|
|
||
|
type TestObject struct {
|
||
|
Numbers []int
|
||
|
Symbols []string
|
||
|
Res int
|
||
|
}
|
||
|
|
||
|
func Handle_multiplications(symbols []string, numbers []int) int {
|
||
|
ret := 0
|
||
|
|
||
|
for i, s := range symbols {
|
||
|
n1 := numbers[i]
|
||
|
n2 := numbers[i+1]
|
||
|
if s == "*" {
|
||
|
ret = n1 * n2
|
||
|
} else {
|
||
|
ret = n1 / n2
|
||
|
}
|
||
|
}
|
||
|
return ret
|
||
|
}
|
||
|
|
||
|
func Calculate1(symbols []string, numbers []int) int {
|
||
|
next_iter_symb_list := []string{}
|
||
|
next_iter_numbers_list := []int{}
|
||
|
|
||
|
fmt.Printf("init %v %v\n", symbols, numbers)
|
||
|
|
||
|
for i := 0; i < len(symbols); i++ {
|
||
|
s := symbols[i]
|
||
|
|
||
|
// }
|
||
|
// for i, s := range symbols {
|
||
|
n1 := numbers[i]
|
||
|
n2 := numbers[i+1]
|
||
|
|
||
|
if s == "-" || s == "+" {
|
||
|
next_iter_numbers_list = append(next_iter_numbers_list, n1)
|
||
|
next_iter_symb_list = append(next_iter_symb_list, s)
|
||
|
// fmt.Println("will add n SUM", n1)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
newN := 0
|
||
|
if s == "*" {
|
||
|
newN = n1 * n2
|
||
|
} else if s == "/" {
|
||
|
newN = n1 / n2
|
||
|
}
|
||
|
|
||
|
j := i
|
||
|
for {
|
||
|
if j == len(symbols) {
|
||
|
next_iter_numbers_list = append(next_iter_numbers_list, newN)
|
||
|
break
|
||
|
}
|
||
|
|
||
|
if symbols[j+1] == "-" || symbols[j+1] == "+" {
|
||
|
i = j
|
||
|
next_iter_numbers_list = append(next_iter_numbers_list, newN)
|
||
|
break
|
||
|
} else {
|
||
|
n2 := numbers[j+1]
|
||
|
if symbols[j+1] == "/" {
|
||
|
newN = newN / n2
|
||
|
} else {
|
||
|
newN = newN * n2
|
||
|
}
|
||
|
}
|
||
|
j += 1
|
||
|
}
|
||
|
|
||
|
// fmt.Println("new v:", newN)
|
||
|
|
||
|
// if i == len(symbols)-1 || symbols[i+1] == "+" || symbols[i+1] == "-" {
|
||
|
// if i == len(symbols)-1 {
|
||
|
// // fmt.Println("1st loop last")
|
||
|
// }
|
||
|
// // fmt.Println("will add n or Next LAST or SUM", newN)
|
||
|
// next_iter_numbers_list = append(next_iter_numbers_list, newN)
|
||
|
// } else {
|
||
|
// numbers[i+1] = newN
|
||
|
// }
|
||
|
}
|
||
|
|
||
|
fmt.Printf("inter %v %v\n", next_iter_symb_list, next_iter_numbers_list)
|
||
|
|
||
|
res := 0
|
||
|
for i, s := range next_iter_symb_list {
|
||
|
n1 := next_iter_numbers_list[i]
|
||
|
n2 := next_iter_numbers_list[i+1]
|
||
|
|
||
|
if s == "-" {
|
||
|
res = n1 - n2
|
||
|
} else if s == "+" {
|
||
|
res = n1 + n2
|
||
|
}
|
||
|
|
||
|
// fmt.Println("1", res)
|
||
|
|
||
|
next_iter_numbers_list[i+1] = res
|
||
|
}
|
||
|
|
||
|
return res
|
||
|
}
|
||
|
|
||
|
// func Calculate(symbols []string, numbers []int) int {
|
||
|
// res := 0
|
||
|
|
||
|
// nxt_symb := []string{}
|
||
|
// nxt_numb := []int{}
|
||
|
|
||
|
// for i := 0; i < len(symbols); i++ {
|
||
|
// s := symbols[i]
|
||
|
// n1 := numbers[i]
|
||
|
// n2 := numbers[i+1]
|
||
|
|
||
|
// if s == "" {
|
||
|
|
||
|
// }
|
||
|
// }
|
||
|
|
||
|
// return res
|
||
|
// }
|
||
|
|
||
|
// TestCalculate calls greetings.Hello with a name, checking
|
||
|
// for a valid return value.
|
||
|
func TestCalculate() {
|
||
|
tests := []*TestObject{
|
||
|
{Numbers: []int{-4, 14, 2, 5}, Symbols: []string{"-", "+", "*"}, Res: -8}, // -4-14+2*5
|
||
|
{Numbers: []int{4, 4, 2, 2}, Symbols: []string{"*", "+", "/"}, Res: 17}, // 4*4+2/2
|
||
|
{Numbers: []int{2, 5, 2, 5}, Symbols: []string{"*", "*", "-"}, Res: 15}, // 2*5*2-5
|
||
|
{Numbers: []int{-4, 14, 2}, Symbols: []string{"-", "+"}, Res: -16}, // -4-14+2
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
res := Calculate1(test.Symbols, test.Numbers)
|
||
|
if test.Res != res {
|
||
|
fmt.Println("FAILED: the expected result was supposed to be", test.Res, "but we got", res, test.Numbers)
|
||
|
} else {
|
||
|
fmt.Println("GOOD:", res, test.Numbers)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
TestCalculate()
|
||
|
}
|