Язык Go. Сортировка пузырьком

О… как много в этом «чпоке»!.. Сортировать «пузырьком» нас учили еще в школе. Почему бы не замутить код этой сортировки на Го? 😀 И пусть она редко оказывается полезной — это весьма годное упражнение для начинающих.

Наша программа будет принимать на ввод строку целых чисел, разделенных пробелами, преобразует их в срез (slice) целых чисел и  отсортирует этот срез по возрастанию.. Код:

Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Алгоритм Фишера-Йетса

Пользователь вводит через пробел несколько любых чисел, букв, слов или чего угодно. Ну допустим даже он вводит номиналы карт (раздача в покере), типа A 3 J Q 10. Наша задача эти карты перемешать.

Для этого оч клёво (и просто) использовать Алгоритм Фишера-Йетса. Этот алгоритм работает путем итерации массива, начиная с последнего элемента, и замены текущего элемента на случайно выбранный элемент. Процесс повторяется до тех пор, пока не будет достигнут первый элемент. В результате получается случайно перетасованный массив.

Вот мой кучерявый код этого «тасования»:

Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Консольный калькулятор

Напишем простенький консольный калькулятор, производящий базовые арифметические операции. Сначала мы задаем ему числа, с которыми мы хотим проводить операции при помощи команды add <число> (можно задать несколько чисел). Затем мы можем использовать команды inc, acc, sub, mul, div, mod; чтобы производить вычисления: нужно ввести индекс числа, с которым нужно работать, а затем аргументы оператора. Show может быть использована для отображения введенных ранее чисел; exit, чтобы выйти из программы.

Пример вывода:
add 42 13
Operands: 42 13
inc 0 1
[43 13]
mod 1 3
[43 1]
exit

Код:

Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Интерфейсы

Самая зубодробительная для новичков в golang — это интерфейсы. Приведу тут примеры кода, который я разбирал, чтобы их выкурить, надеюсь и вам поможет. Идея такая — смотрим код; потом закрываем его и по памяти пытаемся написать с нуля по данному плану:

  1. пишем код через обычные функции
  2. переделываем функции в методы
  3. добавляем интерфейс

Пример номер раз: Читать далее

Рубрика: Go | 5 комментариев

Язык Go. Замыкания и Числа Фибоначчи

Задание номер 26 в Туре Го.

Реализуйте функцию Фибоначчи, которая возвращает функцию (замыкание), возвращающую последовательные числа Фибоначчи (0, 1, 1, 2, 3, 5, …).

Решение: Читать далее

Рубрика: Go | 2 комментария

Язык Go. Карты (тип maps)

Итак, вот и упражнение 23 из Тура Го.

Реализуйте функцию WordCount. Она должна возвращать карту (тип данных map) подсчетов каждого «слова» в строке s. Функция wc.Test запускает набор тестов против предоставленной функции и выводит успех или неудачу. Для выполнения задания имеет смысл использовать функцию strings.Fields.

Решение:

Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Двумерные срезы (2D)

Из главы номер 18 тура в Го.. Вообще, задания в этом туре весьма зудодробительные B) Итак…

Реализуйте функцию Pic. Она должна вернуть фрагмент длины dy, каждый элемент которого представляет собой фрагмент dx 8-битных беззнаковых целых чисел. Когда вы запустите программу, она отобразит вашу картинку, интерпретируя целые числа как значения градаций серого (ну, или голубого).. Нарисует что-то вроде картинки слева. Читать далее

Рубрика: Go | Оставить комментарий

Язык Го. Принадлежит ли точка кругу

Прошлый пример по теореме Пифагора весьма простой. Возьмем задачку из этой же темы, но посложнее. Допустим у нас есть окружность в центре оси x и y (т.е. центр по координатам 0,0). Напишем проверку нахождения произвольной точки внутри окружности.

Тут нам снова поможет Пифагор 🙂 В общем случае, формула такова: Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Теорема Пифагора

Продолжаем упражняться в Го и попутно вспоминать школьную программу 🙂 «Пифагоровы штаны на все стороны равны!» Ну или перефразируя в более скучном варианте: квадрат длины гипотенузы прямоугольного треугольника равен сумме квадратов катетов:
c^2 = a^2 + b^2

Наша титаническая задача такова: найти третью сторону прямоугольного треугольника. А вот и код:

Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Перевод символьной строки в числовой срез

Напишем простую программу на Го, которая будет брать строку,  разбивать ее на элементы среза, конвертируя каждый элемент в цифру.

Для начала весь код, а ниже я его подробно разберу:

Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Число в слова

Напишем программу, которая печатает числа в виде текста. Ограничимся диапазоном от 1 до 1000.

Вот первый пример кода, кучерявый:

Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Алгоритм Ньютона

Задание нумер 8 в Го Туре…

Циклы и функции

Чтобы поиграть с функциями и циклами, давайте реализуем функцию квадратного корня: задав число x, мы хотим найти число z, для которого z² наиболее близок к x.

Компьютеры обычно вычисляют квадратный корень из x с помощью цикла. Начиная с некоторого предполагаемого z, мы можем скорректировать z, основываясь на том, насколько близко z² к x, получая лучшее предположение:

z -= (z * z - x) / (2 * z)

Примечание Игроглаза: Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Среднее из введенных в строку чисел

Давайте напишем программу, которая считывает N чисел через пробел (в одной строке) и вычисляет их среднее значение.

Задачка вроде простая, но решить ее можно по-разному. Вот мой вариант: Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Медиана

Сегодня вспомним, что такое медиана и накодим её нахождение на гошечке. Медиана — это число ровно посередине упорядоченного списка. Весьма полезная штука в статистике; нужна, чтобы получить не среднюю температуру по больнице, а реальное значение 🙂 Например, у нас список 55, 1, 22, 7, 92… чтобы найти медиану:

  1. упорядочиваем его. Получим: 1, 7, 22, 55, 92
  2. ищем то, что посередине.. это 22 (кэп одобряэ)

Если у нас четное количество элементов в списке, то медиана — среднее из суммы двух соседних значений. В общем, вот код самого простого варианта: Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Количество букв в предложении

Подсчитаем количество символов в тексте — сколько какой буквы сколько раз встречается. Можно сделать это при помощи карт (map), но есть и другой, С-style способ — через знаковую арифметику: Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Забавный базовый пример if/else

Есть такой ресурс для новичков в языке Go — «A Tour of Go«. Там в самом начале забавный пример под номером 7: Читать далее

Рубрика: Go | Оставить комментарий

Язык Go. Простые программы для новичков

Язык Го очень похож на Си. Приведу несколько простейших программ.

Начнём… Вычислить 2 в 12 степени.

Читать далее

Рубрика: Go | Оставить комментарий