Сейчас модно хвататься тем, как увеличиваешь свою эффективность при помощи 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 удобнее, чем гуглить, искусственный интеллект еще и объясняет свое решение.