Dmitry Telenkov преди 5 дни
родител
ревизия
fdb2327b5a
променени са 2 файла, в които са добавени 139 реда и са изтрити 1 реда
  1. 81 0
      go/stepik/1/function.go
  2. 58 1
      go/stepik/1/slice.go

+ 81 - 0
go/stepik/1/function.go

@@ -0,0 +1,81 @@
+package main
+
+import "fmt"
+
+func main() {
+	// minimumFromFour()
+	// fmt.Println(fibonacci(9))
+	// ExampleMyPrint()
+	// ExampleExpandSlice1()
+	// ExampleExpandSlice2()
+	a, b := sumInt(1, 2, 3)
+	fmt.Println(a, b)
+}
+
+func minimumFromFour() int {
+	var min, val int
+	fmt.Scan(&min)
+	for i := 0; i < 3; i++ {
+		fmt.Scan(&val)
+		if val < min {
+			min = val
+		}
+	}
+	return min
+}
+
+func vote(x int, y int, z int) int {
+	if (x + y + z) >= 2 {
+		return 1
+	} else {
+		return 0
+	}
+}
+
+func fibonacci(n int) int {
+	var fn int
+	var f1, f2 = 1, 1
+
+	if n == 1 || n == 2 {
+		return 1
+	}
+	for i := 2; i < n; i++ {
+		fn = f1 + f2
+		f1 = f2
+		f2 = fn
+	}
+	return fn
+}
+
+func myPrint(a ...interface{}) {
+	for _, elem := range a {
+		fmt.Printf("%v ", elem)
+	}
+}
+
+func ExampleMyPrint() {
+	myPrint(1, "Hello", 3.14, true)
+}
+
+func ExampleExpandSlice1() {
+	s := []interface{}{1, 2, 3, 4, 5}
+
+	fmt.Println(s)
+	fmt.Println(s...)
+}
+
+func ExampleExpandSlice2() {
+	s1 := []int{1, 2, 3, 4, 5}
+	s2 := []int{6, 7, 8, 9, 10}
+
+	s1 = append(s1, s2...)
+	fmt.Println(s1)
+}
+
+func sumInt(n ...int) (int, int) {
+	var sum int
+	for _, elem := range n {
+		sum += elem
+	}
+	return len(n), sum
+}

+ 58 - 1
go/stepik/1/slice.go

@@ -16,8 +16,12 @@ func main() {
 	*/
 	// createSlice()
 	// funcForSlice()
-	sliceCapacity()
+	// sliceCapacity()
 	// mySlice()
+	// deleteElement()
+	// copySlice()
+	// foo1()
+	foo2()
 }
 
 func createSlice() {
@@ -78,3 +82,56 @@ func mySlice() {
 
 	// firstSlice :=
 }
+
+func deleteElement() {
+	a := []int{1, 2, 3, 4, 5, 6, 7}
+	a = append(a[0:2], a[3:]...)
+	fmt.Println(a)
+}
+
+func copySlice() {
+	a := []int{1, 2, 3}
+	b := make([]int, 3, 3)
+	n := copy(b, a)
+
+	fmt.Printf("a = %v\n", a)
+	fmt.Printf("b = %v\n", b)
+	fmt.Printf("Скопировано %d элементов\n", n)
+	// fmt.Printf("%v", b)
+	// fmt.Printf("%d %d\n", len(b), cap(b))
+}
+
+func foo1() {
+	var n, val int
+	fmt.Scan(&n)
+	var mySlice []int
+	for i := 0; i < n; i++ {
+		fmt.Scan(&val)
+		mySlice = append(mySlice, val)
+	}
+	fmt.Println(mySlice[3])
+}
+
+func foo2() {
+	var n, max int
+	fmt.Scan(&n)
+	mySlice := make([]int, n)
+	for i := 0; i < n; i++ {
+		fmt.Scan(&mySlice[i])
+	}
+
+	for index, value := range mySlice {
+		fmt.Printf("Index: %d, value: %d\n", index, value)
+		if value > max {
+			max = value
+		}
+	}
+
+	for _, value := range mySlice {
+		fmt.Println(value)
+	}
+
+	fmt.Println(max)
+	fmt.Printf("Создан slice %v\n", mySlice)
+	fmt.Printf("len: %d, cap: %d\n", len(mySlice), cap(mySlice))
+}