Здесь приводится наглядное сравнение моделей, которые решают одну задачу в сфере программирования.
Генерация фрагмента кода
Задача
Сгенерировать функцию на Python, которая вычисляет сумму всех четных чисел в списке.
Промпт:
Напиши функцию на Python, которая принимает список чисел и возвращает сумму всех четных чисел.
Результат:
ChatGPT 4o
Конечно! Вот пример функции на Python, которая принимает список чисел и возвращает сумму всех четных чисел:
def sum_even_numbers(numbers):
def sum_even_numbers(numbers):
# Используем генераторное выражение для фильтрации и суммирования четных чисел
return sum(num for num in numbers if num % 2 == 0)
# Пример использования функции
numbers = [1, 2, 3, 4, 5, 6]
result = sum_even_numbers(numbers)
print("Сумма четных чисел:", result)
В этой функции sum_even_numbers используется генераторное выражение, чтобы пройти по всем элементам списка numbers, проверить, является ли число четным (num % 2 == 0), и если да, то добавить его к сумме. Функция sum затем вычисляет сумму всех таких четных чисел.
Claude 3.5 Sonnet:
Вот функция на Python, которая принимает список чисел и возвращает сумму всех четных чисел:
def sum_even_numbers(numbers):
def sum_even_numbers(numbers):
return sum(num for num in numbers if num % 2 == 0)
Эта функция использует генератор списка (list comprehension) и встроенную функцию sum(). Вот как она работает:
- Функция принимает один аргумент
numbers, который является списком чисел.2. Внутри функции используется генератор(num for num in numbers if num % 2 == 0): - Он перебирает все числа в списке
numbers3.Проверяет каждое число на четность с помощью условияnum % 2 == 04.Если число четное, оно включается в генерируемую последовательность5. Функцияsum()суммирует все числа, полученные из генератора.6. Результат суммирования возвращается функцией.Вы можете использовать эту функцию следующим образом:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = sum_even_numbers(numbers)
print(result) # Выведет: 30 (2 + 4 + 6 + 8 + 10)
Эта функция эффективна и лаконична, она обрабатывает список за один проход и возвращает сумму всех четных чисел.
Gemini 1.5 Pro:
"""
Эта функция принимает список чисел и возвращает сумму всех четных чисел в списке.
Args:
nums: Список чисел.
Returns:
Сумма всех четных чисел в списке.
"""
sum=0
for num in nums:
if num % 2 == 0:
sum += num
return sum
Вот как работает эта функция:
- Определяет функцию с именем
sum_of_evens, которая принимает один аргумент:nums. Этот аргумент представляет список чисел, которые будут переданы функции. - Инициализирует переменную с именем
sumи устанавливает ее значение равным 0. Эта переменная будет использоваться для хранения суммы четных чисел. - Итерирует по списку
numsс помощью циклаfor. Для каждого числа в списке функция:**
- Проверяет, делится ли число на 2 без остатка, используя оператор modulo (%).** Если остаток равен 0, то число четное.**
- Если число четное, оно добавляется к переменнойsum.** - После итерации по всем числам в списке функция возвращает значение
sum.
Вот пример использования функции:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_sum = sum_of_evens(numbers)
print(f"Сумма четных чисел: {even_sum})
Этот метод выведет:
Сумма четных чисел: 30
Комментарий:
Задача была сгенерировать функцию на Python, которая вычисляет сумму всех чётных чисел в списке. Все три модели справились с этой задачей, однако подходы и объяснения отличаются по стилю и деталям.
- ChatGPT 4o:
Сгенерированная функция использует генераторное выражение для фильтрации и суммирования чётных чисел в одном шаге.
ChatGPT даёт чёткое объяснение того, как работает выражение, и добавляет пример использования с подробным объяснением.
Этот результат наиболее лаконичен и не содержит излишней информации, что делает его подходящим для опытных пользователей.
- Claude 3.5 Sonnet:
Claude сгенерировал идентичный код с использованием генератора списка, однако в его объяснении больше акцента на том, как работает каждое выражение и что делает каждая часть кода.
Приводится подробное объяснение, как работает каждый шаг, что делает этот результат полезным для начинающих программистов.
Включен пример с расширенным набором чисел и детализированное описание процесса выполнения.
- Gemini 1.5 Pro:
Функция, предложенная Gemini, использует более простой цикл for, где каждый элемент списка проверяется на чётность, и сумма вычисляется постепенно.
Код сгенерирован без использования современных конструкций Python (например, генераторов), что делает его немного менее эффективным, но понятным для тех, кто только начинает изучать программирование.
Генерация MySQL-запроса
Задача:
Создать запрос, который выбирает всех сотрудников, зарабатывающих больше 50 000, из таблицы 'employees'.
Промпт:
Напиши MySQL-запрос для выбора всех сотрудников из таблицы 'employees', чья зарплата превышает 50 000.
Результат:
ChatGPT 4o:
Конечно! Вот пример MySQL-запроса, который выбирает всех сотрудников из таблицы employees, у которых зарплата превышает 50 000:
SELECT*
FROM employees
WHERE salary > 50000;
В этом запросе:
-
SELECT *выбирает все столбцы из таблицы. -
FROM employeesуказывает таблицу, из которой необходимо выбрать данные. -
WHERE salary > 50000фильтрует строки, выбирая только тех сотрудников, у которых зарплата больше 50 000
Claude 3.5 Sonnet:
Конечно! Вот MySQL-запрос для выбора всех сотрудников из таблицы 'employees', чья зарплата превышает 50 000:
SELECT*
FROM employees
WHERE salary > 50000;
Давайте разберем этот запрос:
- SELECT *: Это означает, что мы хотим выбрать все столбцы из указанной таблицы.
- FROM employees: Указывает, что мы выбираем данные из таблицы с названием 'employees'.
- WHERE salary > 50000: Это условие фильтрации. Оно говорит, что мы хотим выбрать только те строки, где значение в столбце 'salary' больше 50000.
Этот запрос вернет все данные (все столбцы) для каждого сотрудника, чья зарплата превышает 50000. Результат будет включать в себя все поля таблицы 'employees' для каждого сотрудника, удовлетворяющего условию.
Gemini 1.5 Pro
SELECT*
FROM employees
WHERE salary > 50000;
Вот объяснение:
- SELECT означает, что мы хотим выбрать все столбцы из таблицы.
- FROM employees указывает, из какой таблицы мы выбираем даннные.
- WHERE salary > 50000 - это условие, которое ограничивает выборку, оставляя только те строки, где значение в столбце `salary` (зарплата) больше 50000.
Этот запрос вернёт все строки из таблицы `employees`, где зарплата сотрудника превышает 50
Комментарий:
ChatGPT 4o:
Запрос был сгенерирован правильно:
SELECT*
FROM employees
WHERE salary > 50000;
Модель добавила краткое и точное объяснение работы запроса, разбив его на отдельные компоненты (SELECT *, FROM, WHERE). Это решение удобно для пользователей, так как предоставляет нужную информацию кратко и по существу.
Claude 3.5 Sonnet:
Код практически идентичен с вариантом ChatGPT:
SELECT*
FROM employees
WHERE salary > 50000
Claude добавил более подробное объяснение, которое охватывает те же компоненты, но в более развёрнутой форме. Это делает решение хорошим для начинающих пользователей, которые хотят больше деталей о каждом шаге запроса.
Gemini 1.5 Pro:
Код также идентичен.
Создание диаграммы TiKZ
Задача:
Сгенерировать TiKZ-код для простого графика в LaTeX.
Промпт:
Создай TiKZ-код для рисования круга и двух пересекающихся линий.
Результат:
ChatGPT4o:
Конечно! Вот пример TiKZ-кода для рисования круга и двух пересекающихся линий:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
% Рисуем круг с центром в (0,0) и радиусом 2
\draw[thick] (0,0) circle (2);
% Рисуем первую линию, проходящую через центр круга
\draw[thick] (-3,-3) -- (3,3);
% Рисуем вторую линию, также проходящую через центр круга
\draw[thick] (-3,3) -- (3,-3);
\end{tikzpicture}
\end{document}
**Этот код создает:**
- Круг с центром в точке (0,0) и радиусом 2.
- Две пересекающиеся линии, которые проходят через центр круга. Одна линия идет из точки (-3,-3) в (3,3), а другая из (-3,3) в (3,-3).
Чтобы использовать этот код, скопируйте его в LaTeX-документ и скомпилируйте с помощью компилятора, поддерживающего TikZ, например, PDFLaTeX.
**Claude 3.5 Sonnet:**
**Вот пример TikZ-кода для рисования круга и двух пересекающихся линий:**
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
% Рисуем круг
\draw (0,0) circle (2cm);
% Рисуем первую линию
\draw [-] (-2.5,1) -- (2.5,-1);
% Рисуем вторую линию
\draw [-] (-2.5,-1) -- (2.5,1);
\end{tikzpicture}
\end{document}
Этот код создаст следующее изображение:
- Круг с центром в точке (0,0) и радиусом 2 см.
- Первая линия, идущая от точки (-2.5,1) к точке (2.5,-1).
- Вторая линия, идущая от точки (-2.5,-1) к точке (2.5,1).
Линии будут пересекаться в центре круга.
**Чтобы использовать этот код:**
- Убедитесь, что у вас установлен LaTeX и пакет TikZ.
- Скопируйте этот код в новый .tex файл.
- Скомпилируйте его с помощью pdfLaTeX или другого LaTeX-компилятора.
Вы получите PDF-файл с изображением круга и двух пересекающихся линий.
Gemini 1.5 Pro:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1cm);
\draw (-1.5,0) -- (1.5,0);
\draw (0,-1.5) -- (0,1.5);
\end{tikzpicture}
\end{document}
Этот код создаст картинку с кругом радиуса 1см, центр которого находится в начале координат. Также будут нарисованы две линии: одна горизонтальная и одна вертикальная, пересекающиеся в центре круга.
Вы можете изменить следующие параметры:
- Радиус круга: измените значение
1cmв команде\draw (0,0) circle (1cm);на нужный вам радиус. - Положение центра круга: измените координаты
(0,0)в команде\draw (0,0) circle (1cm);на нужные вам координаты. - Положение линий: измените координаты начала и конца каждой линии в командах
\draw (-1.5,0) -- (1.5,0);и\draw (0,-1.5) -- (0,1.5);на нужные вам координаты.
Комментарий:
ChatGPT 4o:
Генерация TiKZ-кода была выполнена корректно, и предоставлен полный рабочий пример:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[thick] (0,0) circle (2);
\draw[thick] (-3,-3) -- (3,3);
\draw[thick] (-3,3) -- (3,-3);
\end{tikzpicture}
\end{document}
Подробное объяснение, содержащее описание всех элементов, делает это решение понятным и подходящим для пользователей с разным уровнем знаний в LaTeX.
Claude 3.5 Sonnet:
TiKZ-код также был корректно сгенерирован:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (2cm);
\draw [-] (-2.5,1) -- (2.5,-1);
\draw [-] (-2.5,-1) -- (2.5,1);
\end{tikzpicture}
\end{document}
Этот ответ содержит несколько иной подход к позиционированию линий, но также решает задачу корректно. Объяснение включает пошаговое описание, что делает его полезным для пользователей, не знакомых с TiKZ.
Gemini 1.5 Pro:
- Код полностью функционален и корректен для рисования простого круга с пересекающимися линиями.
- Стандартная структура документа
standaloneи использование пакетаtikzпозволяют легко компилировать и рендерить изображение. - Код оптимизирован и лаконичен, в нем нет избыточных команд или параметров. Все команды прямо соответствуют задачам рисования и не содержат лишнего.