Практика по языку Leo. Часть 3. feat. ChatGPT.
Привет! Сегодня мы с вами напишем 2 программы на языке программирования Leo. Сначала я дам вам свои объяснения и мы вместе напишем код, а дальше посмотрим, что нам скажет chatGPT по нашему коду.
Данная статья есть в формате видео, можете посмотреть его по ссылке.
1 задача.
Для начала открываем Aleo Studio и создаем новый проект.
Задача звучит следующим образом. Безумный титан Танос собрал все 6 камней бесконечности и намеревается уничтожить половину населения Вселенной по щелчку пальцев. При этом если население Вселенной является нечетным числом, то титан проявит милосердие и округлит количество выживших в большую сторону. Помогите мстителям подсчитать количество выживших.
Задача достаточно простая, давайте её решим.
В функцию поступает одна переменная, которая хранит в себе количество населения Вселенной, она будет иметь тип u32. На выходе будет также переменная типа u32.
transition main(public a: u32) -> u32 {
Далее нам нужно просто изменить переменную а
Нам сначала нужно найти половину жителей, а после прибавить 1, если количество жителей четное. Мы сделаем это с помощью оператора "%", который обозначает остаток от деления. Если остаток от деления на 2 равен 0, то число четное и мы ничего не прибавляем. Если число нечетное, тогда остаток от деления на 2 равен 1 и мы прибавим эту единицу. Реализация через код выглядит так:
После этого мы возвращаем переменную а
;
Полный код выглядит следующим образом.
Переходим в файл во вкладе inputs и указываем входные данные.
Поскольку число четное, по результату работы программы мы должны получить значение 501. Давайте запустим наш код.
Всё правильно. Давайте посмотрим объяснение ChatGPT.
Задача 2. Объяснение ChatGPT.
Эта программа написана на языке программирования Aleo. Она содержит функцию main
, которая принимает один аргумент a
типа u32
(32-битное целое число без знака) и возвращает значение типа u32
.
Цель программы состоит в вычислении значения a
, которое равно половине значения a
, округленному вверх до ближайшего целого числа. Вот как работает программа:
- Внутри функции
main
переменнаяa
изменяется следующим образом:a = a / 2u32 + a % 2u32
. - Оператор
/
выполняет деление значенияa
на 2 и возвращает целую часть результата деления (округленную вниз). - Оператор
%
выполняет операцию остатка от деления значенияa
на 2 и возвращает остаток от этого деления. - Затем результаты деления и остатка складываются вместе, чтобы получить округленное вверх значение
a
. - В конце функция
main
возвращает значение переменнойa
, которое будет содержать округленное вверх значение исходного числа.
Чтобы использовать эту программу, вы можете вызвать функцию main
с аргументом типа u32
и она вернет округленное вверх значение этого числа.
Задача 2. Нахождение суммы цифр трехзначного числа.
Как вы понимаете из названия, в программу поступает трехзначное число, это будет переменная а
с типом u32.
На выходе будет переменная типом u32, хотя можно использовать и u8, так как сумма цифр трехначного числа не может быть больше 27.
transition main(a: u32) -> u32 {
Далее нам нужно создать 3 переменные, которые будут хранить в себе цифры этого числа.
Также создадим переменную, которая будет хранить в себе сумму этих цифр и мы будем ее возвращать по результату работы данной программы.
Теперь мы делаем следующее. Находим остаток от деления данного числа на 10. Это и будет последняя цифра числа, а после делим число на 10.
Делаем так и со второй цифрой.
В отношении к третьей цифре мы можем поступить иначе. Так как мы уже поделили число 2 раза на 10, то и осталась лишь первая цифра трехзначного числа (так как цифры могут быть только целыми в leo).
Осталось найти сумму ээтих цифр.
Осталось указать входные данные. Например, число 999. На выходе должны получить 27.
Да, мы получили корректный результат. Давайте попросим ChatGPT объяснить код.
Задача 2. Объяснение ChatGPT.
Эта программа написана на языке программирования Aleo. Она содержит функцию main
, которая принимает один аргумент a
типа u32
(32-битное целое число без знака) и возвращает значение типа u32
.
Цель программы состоит в вычислении суммы цифр числа a
. Вот как работает программа:
- Внутри функции
main
создаются временные переменныеa1
,a2
,a3
иc
, все типаu32
, и инициализируются значением 0. - Затем число
a
обрабатывается следующим образом: - Оператор
a.rem(10u32)
возвращает остаток от деления значенияa
на 10, то есть последнюю цифру числаa
. Это значение присваивается переменнойa1
. - Затем значение
a
делится на 10, чтобы удалить последнюю цифру. - Повторяется процесс получения остатка от деления и деления на 10 для оставшихся двух цифр числа
a
, которые присваиваются переменнымa2
иa3
. - Затем переменные
a1
,a2
иa3
складываются в переменнуюc
, чтобы получить сумму цифр числаa
. - В конце функция
main
возвращает значение переменнойc
, которое будет содержать сумму цифр числаa
.
Чтобы использовать эту программу, вы можете вызвать функцию main
с аргументом типа u32
и она вернет сумму цифр этого числа.
Вывод
Меня не перестает удивлять ChatGPT тем, что он может анализировать задачу, которую выполняет программа. До встречи в 4ой статье!