Страница курса (доступ бесплатный): https://stepik.org/course/54403
Предварительно: установка софта
- Download/setup Go : https://go.dev/dl/
- Save path:
set PATH=%PATH%;"C:Program FilesGobin"
- Download IDE: Jetbrains GoLand: https://stepik.org/lesson/228259/step/6?unit=200792
- Setup IDE:
Но есть отличный онлайн-интерпретатор: ReplIt (поработаем пока в нем):
- Download Go complier: https://go.dev/dl/
- Setup here: C:Program FilesGo
Все исходник из курса будут тут: C:OSPaneldomainsgoexpstepik_go….
Начинаем учиться
Формат учебы: читаем теорию, затем сразу следом решаем задачки по изученной теме.
Пример учебного интерфейса:
Итого, за 1 день я решил ~30 задач из блока “Введение и основы“.
Запушил все исходники сюда: https://bitbucket.org/mishaikon1/goexp/src/master/
Бонус за решения: мне прислали лицензию на все продукты Jetbrains на 4 мсесяца:
(т.о., активировал триал-версию IDE GoLand на 4 мес, беспл)
Примеры решенных задачек
Все задачки были не сложными, решал за 5-10 мин. Почти не раздумывая )
Числа Фибоначчи
/** Номер числа Фибоначчи Дано натуральное число A > 1. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что φn=A. Если А не является числом Фибоначчи, выведите число -1. Входные данные Вводится натуральное число. Выходные данные Выведите ответ на задачу. Sample Input: 8 Sample Output: 6 */ package main import ( "fmt" ) func main() { var a, i, val int var fib []int fmt.Scan(&a) val = 0 // init fib numbers fib = append(fib, 0) fib = append(fib, 1) if a == 0 { fmt.Print(0) return } if a == 1 { fmt.Print(1) return } for i = 2; val < a; i++ { val = fib[i-2] + fib[i-1] fib = append(fib, val) //fmt.Println(fib[i]) if fib[i] == a { fmt.Print(i) return } } fmt.Print(-1) }
Четные элементы
/** 1.12 Массивы и срезы Дан массив, состоящий из целых чисел. Нумерация элементов начинается с 0. Напишите программу, которая выведет элементы массива, индексы которых четны (0, 2, 4...). Входные данные Сначала задано число NN — количество элементов в массиве (1 \leq N \leq 1001≤N≤100). Далее через пробел записаны NN чисел — элементы массива. Массив состоит из целых чисел. Выходные данные Необходимо вывести все элементы массива с чётными индексами. Sample Input: 6 4 5 3 4 2 3 Sample Output: 4 3 2 (!) Usage of slices here is required */ package main import "fmt" func main() { var a, n, i, j int var res []int j = 0 fmt.Scan(&n) for i = 0; i < n; i++ { fmt.Scan(&a) if i%2 == 0 { res = append(res, a) j++ } } for i = 0; i < len(res); i++ { fmt.Print(res[i], " ") } }
Цифровой корень
/** Цифровой корень Цифровой корень натурального числа — это цифра, полученная в результате итеративного процесса суммирования цифр, на каждой итерации которого для подсчета суммы цифр берут результат, полученный на предыдущей итерации. Этот процесс повторяется до тех пор, пока не будет получена одна цифра. Например цифровой корень 65536 это 7 , потому что 6+5+5+3+6=25 и 2+5=7 . По данному числу определите его цифровой корень. Входные данные Вводится одно натуральное число n, не превышающее 10^710 7 Выходные данные Вывести цифровой корень числа n. Sample Input: 3456 Sample Output: 9 */ package main import ( "fmt" "strconv" ) /** Return digital root of number */ func digital_root(n int) int { var res, i int res = 0 var a string a = strconv.Itoa(n) for i = 0; i < len(a); i++ { val, err := strconv.Atoi(string(a[i])) if err == nil { res += val } } if res > 9 { return digital_root(res) } return res } func main() { var a int var res int fmt.Scan(&a) res = digital_root(a) fmt.Print(res) }
Стрелка часов
/** 1.5 Переменные и ариф. операции, ввод/вывод данных Часовая стрелка повернулась с начала суток на d градусов. Определите, сколько сейчас целых часов h и целых минут m. Входные данные На вход программе подается целое число d (0 < d < 360). Выходные данные Выведите на экран фразу: It is ... hours ... minutes. Вместо многоточий программа должна выводить значения h и m, отделяя их от слов ровно одним пробелом. Sample Input: 90 Sample Output: It is 3 hours 0 minutes. */ package main import "fmt" func main() { var g int fmt.Scan(&g) var h, m int // 360 degrees = 12 hours h = g * 12 / 360 // 360 degrees = 60 minutes m = 2 * (g % 30) fmt.Print("It is ") fmt.Print(h) fmt.Print(" hours ") fmt.Print(m) fmt.Print(" minutes.") }
Все решения
Репозитарий со всеми моими решениями из вводного раздела:
https://bitbucket.org/mishaikon1/goexp/src/master/stepik_go/1_intro_basics/
Что дальше?
Далее: продолжу решать задачки из других разделов:
Нет Ответов