May 25, 2024

Решаем задачи от новой версии ChatGPT 4o #1

Привет! Сегодня мы с вами будем решать задачи на языке программирования Leo, которые для нас придумает ChatGPT 4o. Мы сможем сравнить структуру задач от старой и новой версии данной нейросети.

Начнем с запроса, я составил его следующим образом:

Как вы поняли, мы получим 4 задачи и решим их в ближайших 4х статьях. И наша первая задача выглядит так:

Давайте для облегчения задачи будем проверять не 10 чисел, а 5. Логика будет такая же, просто мы не будем писать повторяющийся код. Для начала переходим в Aleo Studio (или создаем программу в консоле и открываем в sublime text) и создаем новый проект. Назовём его ex1, то есть первое упражнение.

У нас создалась базовая программа, своеобразный аналог helloworld.

Давайте изменять нашу функцию main. На входе функции у нас будет не 2 переменные, а 5. 5 чисел, которые мы будем проверять на четность. Они будут иметь один и тот же тип u32. На выходе функции будут 2 переменных типа u32, они хранят в себе количество четных и нечетных чисел.

Теперь давайте создадим 2 переменные, которые будут хранить в себе количество четных и нечетных чисел. Мы будем изменять их при проверке числа на четность.

Если число четное, то мы будем прибавлять один к переменной ch, иначе мы будем прибавлять один к переменной nch. По умолчанию мы задаем им значение 0 и они имеют тип u32.

Теперь нам нужно запустить проверку каждого числа на четность. Начнем с логики проверки. Число является четным, если остаток от деления данного числа на 2 равен нулю. Если остаток от деления равен нулю, мы прибавляем к переменной ch 1, иначе, прибавляем к переменной nch один. Давайте проделаем это для переменной a.

Мы использовали условную конструкцию if-else и оператор rem для реализации данной задачи, синтаксис вы видите выше на скриншоте. Теперь нам нужно проверить по той же логике оставшиеся 4 переменные. Давайте сделаем это.

Теперь нам осталось лишь вернуть переменные ch и nch.

Итоговый код:

program ex1.aleo {
    transition main(a: u32, b: u32, c: u32, d: u32, e: u32) -> (u32, u32) {
        let ch: u32 = 0u32;
        let nch: u32 = 0u32;
        if a.rem(2u32) == 0u32 {
            ch = ch + 1u32;
        } else {
            nch = nch + 1u32;
        }
        if b.rem(2u32) == 0u32 {
            ch = ch + 1u32;
        } else {
            nch = nch + 1u32;
        }
        if c.rem(2u32) == 0u32 {
            ch = ch + 1u32;
        } else {
            nch = nch + 1u32;
        }
        if d.rem(2u32) == 0u32 {
            ch = ch + 1u32;
        } else {
            nch = nch + 1u32;
        }
        if e.rem(2u32) == 0u32 {
            ch = ch + 1u32;
        } else {
            nch = nch + 1u32;
        }
        return (ch, nch);
    }
}

Давайте запустим наш код с этими входными данными:

Здесь у нас 2 четных и 3 нечетных числа, соответсвенно мы должны получить результат 2u32, 3u32. Давайте запустим нашу программу.

Да, всё верно. Программа работает корректно. На этом всё, увидимся в следующей статье, где мы разберем вторую задачу от ChatGPT.