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

С момента его выпуска некоторые университеты начали запрещать этот инструмент искусственного интеллекта, чтобы предотвратить мошенничество и плагиат.

После того, как он показал себя замечательно в написании эссе, может ли ChatGPT также решать вопросы программирования?

В этой статье я выбрал пять вопросов по программированию в LeetCode, популярной платформе для практики программирования, и попросил ChatGPT решить их за меня.

  • Две суммы
  • Обратное целое
  • Самые длинные допустимые скобки
  • Число палиндрома
  • Первый недостающий положительный результат

Вот результаты.

Задача № 1: две суммы

(Сложность: простая) Учитывая массив целых чиселnums и целоеtarget, верните индексы двух чисел так, чтобы в сумме они составлялиtarget .

Вы можете предположить, что каждый ввод будет иметь ровно одно решение, и вы не можете использовать один и тот же элемент дважды.

Вы можете вернуть ответ в любом порядке.

Пример:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Ограничения:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • Существует только один правильный ответ

Я скопировал весь вопрос вместе с примерами и ограничениями и вставил их в ChatGPT, и вот ответ.

Я прогнал его через LeetCode, и бум! Это было принято как правильное решение.

Проблема № 2: обратное целое число

(Сложность: средняя) Получив 32-битное целоеx со знаком, вернитеxс перевернутыми цифрами. Если обращение x приводит к тому, что значение выходит за пределы диапазона 32-битных целых чисел со знаком [-231, 231 - 1], возвращается 0.

Предположим, что среда не позволяет хранить 64-битные целые числа (со знаком или без знака).

Примеры:

Input: x = 123
Output: 321

Input: x = -123
Output: -321

Input: x = 120
Output: 21

На этот раз я попросил ChatGPT решить проблему на C++. Вот решение, которое оно мне дало.

И снова это было принято. Потрясающий!

Теперь давайте зададим более сложный вопрос.

Проблема № 3: самые длинные скобки

(Трудность: сложная) Для строки, содержащей только символы '(' и ')', вернуть длину самых длинных допустимых (правильных) скобок.

Примеры:

Input: s = "(()"
Output: 2
Explanation: The longest valid parentheses substring is "()".

Input: s = ")()())"
Output: 4
Explanation: The longest valid parentheses substring is "()()".

Input: s = ""
Output: 0

Я попросил ChatGPT дать решение на C.

К сожалению, программа завершилась со следующей ошибкой:

Он терпит неудачу, когда ввод пуст.

ChatGPT также может отлаживать код для вас.

Просто скопируйте фрагмент кода и скажите ИИ исправить код в тех случаях, когда ввод пуст.

ИИ не только даст вам правильный код, но и объяснит, в чем проблема, и покажет правильный способ ее решения.

Это невероятно полезно для программистов.

Подумайте о том, чтобы проводить экспертную оценку и отладку с помощником ИИ вместо вашего вспыльчивого коллеги.

И да, новый ответ был принят на LeetCode.

Задача № 4: Число палиндрома

(Сложность: легкая) Учитывая целое число x, вернуть true, еслиxявляется палиндромом, иfalseв противном случае.

Примеры:

Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.

Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

На этот раз я попросил ИИ дать мне решения на Python, C++ и C#.

Давайте посмотрим, сможет ли он получить правильные ответы на всех языках.

Решение на Python

Ответ был принят.

Решение на C

Решение было отклонено из-за ошибки целочисленного переполнения.

Решение на C++

Ответ был правильным и принятым.

Проблема № 5: первый пропущенный положительный результат

(Сложность: сложно) Учитывая массив несортированных целых чисел nums, вернуть наименьшее отсутствующее положительное целое число.

Вы должны реализовать алгоритм, который работает за O(n) времени и постоянно использует дополнительное пространство.

Примеры:

Input: nums = [1,2,0]
Output: 3
Explanation: The numbers in the range [1,2] are all in the array.

Input: nums = [3,4,-1,1]
Output: 2
Explanation: 1 is in the array but 2 is missing.

Input: nums = [7,8,9,11,12]
Output: 1
Explanation: The smallest positive integer 1 is missing.

Решение и объяснение ChatGPT:

И снова ответ был принят.

Последние мысли

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

Но, как я только что убедился, ChatGPT может делать гораздо больше, чем просто решать проблемы. Он также может предоставить объяснения для каждого найденного решения. Это помогает кодерам лучше понять основную логику и структуру их решений, что может быть неоценимо для того, чтобы стать лучшим программистом.

Это начало конца для StackOverflow?

Что вы думаете?

Будьте в курсе последних новостей и обновлений в сфере творческого ИИ — следите за публикацией Генеративный ИИ.

Пожалуйста, поддержите мою работу на Medium напрямую и получите неограниченный доступ, став участником по моей реферальной ссылкездесь. Хорошего дня!