(warning) Страница курса (доступ бесплатный): https://stepik.org/course/54403


Предварительно: установка софта

(warning) Но есть отличный онлайн-интерпретатор: ReplIt (поработаем пока в нем):

(звезда) Все исходник из курса будут тут: 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/

Что дальше?

Далее: продолжу решать задачки из других разделов:

  1. Введение в основы
  2. Функции, структуры, указатели и другое
  3. Map, файлы, интерфейсы, многопоточность
Tags

Нет комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.