Top.Mail.Ru

ChatGPT: экономия времени разработки или навязанный тренд

Сейчас модно хвататься тем, как увеличиваешь свою эффективность при помощи ChatGPT. Хотя многих, напротив, пугает перспектива развития искусственного интеллекта как технологии, которая может отнять работу. С целью выяснить, кто же в данной ситуации прав, оптимисты или «всепропальщики», решил попробовать ChatGPTв деле и провести с ним некоторые эксперименты.

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

Первая задача: напишите программу, которая проверяет, является ли число числом Армстронга. Число Армстронга — натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр. Пример: 3**3 + 7**3 + 1**3 = 371

Мое решение на C# выглядело так:

Решение на C#

using System;  

namespace Ex1_1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = Console.ReadLine();
            int num = 0;
            try
            {
                num = Convert.ToInt32(s);
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                return;
            }

            int res = 0;
            int count = s.Length;
            for(int i=0; i<count; i++)
            {
                int digit = Convert.ToInt32(s[i].ToString());
                res += Convert.ToInt32(Math.Pow(digit, count));
            }

            Console.WriteLine("Результат: " + res);
            if (res == num) Console.WriteLine("Это число Армстронга");
        }

    }
}

Для его написания мне потребовалось 11 минут, включая функциональное тестирование.

Решение на StackOverflow

Второй тест – это погуглить текст программы, надеясь найти ее на StackOverflow или где-то еще. Нашел в интернете такое решение:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static uint[] SplitNumber(uint n)
        {
            var result = new uint[0];
            int i = 0;
            while (n > 0)
            {
                //увеличиваем размер массива
                Array.Resize(ref result, i + 1);
                //получаем последнюю цифру
                result[i] = n % 10;
                //отбрасываем последнюю цифру
                n = n / 10;
                i++;
            }

            //переворачиваем массив
            Array.Reverse(result);
            return result;
        }

        static uint Power(uint x, uint y)
        {
            return y == 0
                ? 1 //число в нулевой степени возвращает 1
                : x * Power(x, y - 1);
        }

        static bool IsArmstrongNumber(uint number)
        {
            var digits = SplitNumber(number);
            var sum = 0u;
            var p = (uint)digits.Length; //степень
                                         //в цикле считаем сумму
            foreach (var digit in digits)
            {
                sum += Power(digit, p);
            }

            return sum == number;
        }


        static void Main(string[] args)
        {
            Console.Write("Начало диапазона: ");
            var s = Convert.ToUInt32(Console.ReadLine());
            Console.Write("Конец диапазона: ");
            var e = Convert.ToUInt32(Console.ReadLine());

            Console.WriteLine("Числа Армстронга из диапазона от {0} до {1}", s, e);
            for (uint i = s; i <= e; i++)
            {
                if (IsArmstrongNumber(i))
                {
                    Console.Write("{0} ", i);
                }
            }

            Console.ReadLine();
        }
    }
}

Решение ChatGPT

Время, включая поиск, операцию «копировать/вставить» и тестирование  заняло 5 минут. ChatGPT предложил такое решение:

using System;

class Program
{
    static bool IsArmstrongNumber(int number)
    {
        int sum = 0;
        int temp = number;
        int numDigits = number.ToString().Length;

        while (temp != 0)
        {
            int digit = temp % 10;
            sum += (int)Math.Pow(digit, numDigits);
            temp /= 10;
        }

        return (sum == number);
    }

    static void Main()
    {
        Console.Write("Введите натуральное число: ");
        int number = int.Parse(Console.ReadLine());

        if (IsArmstrongNumber(number))
        {
            Console.WriteLine($"{number} - число Армстронга");
        }
        else
        {
            Console.WriteLine($"{number} - не число Армстронга");
        }
    }
}

На этот раз создание программы заняло 5 минут, включая отсылку запроса, ожидание, копирование и вставку текста программы, тестирование.

Искусственный интеллект сопроводил ответ пояснением:

«В этой программе есть функция IsArmstrongNumber, которая принимает число в качестве аргумента и возвращает значение true, если число является числом Армстронга, и false в противном случае. Функция использует цикл while для получения каждой цифры числа и возведения каждой цифры в степень, равную количеству цифр, и затем суммирует эти значения.

В функции Main мы сначала получаем число от пользователя и затем вызываем функцию IsArmstrongNumber для проверки. Затем выводим соответствующее сообщение в зависимости от результата проверки.Надеюсь, это поможет вам реализовать программу для проверки чисел Армстронга! Если у вас возникнут какие-либо вопросы, то пишите их в комментариях».

Вывод

Использование ChatGPT действительно экономит время, но точно так же экономит время и простое гугление. Однако, задавать вопросы ChatGPT удобнее, чем гуглить, искусственный интеллект еще и объясняет свое решение.

Comments

So empty here ... leave a comment!

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

Sidebar