Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Три задачи на знание Java от ChatGPT
Языковая модель ChatGPT составила простую, среднюю и сложную задачи по Java. Сможете ли вы решить все три задачи?
12907
Попросили языковую модель ChatGPT составить три задачи на знание Java: простую, среднюю и сложную.
К первым двум нейросеть прикрепила ответы, но третья задача осталась нерешённой. Сможете ли вы справиться с ней?
Простая задача по Java
Напишите программу на Java, которая будет считывать массив целых чисел и выводить на экран их сумму и среднее арифметическое.
Подсказки:
- Для считывания массива целых чисел используйте Scanner или BufferedReader.
- Для вычисления суммы и среднего арифметического используйте цикл
for
. - Не забудьте проверить ввод на корректность (например, что введено число и не превышает максимально возможное значение для
int
).
Решение задачи
Объяснение:
- Сначала мы создаем экземпляр Scanner для считывания ввода от пользователя.
- Затем мы просим пользователя ввести количество элементов в массиве и создаем массив с заданным размером.
- Используя цикл
for
, мы считываем каждый элемент массива и записываем его в массивnumbers
. - Далее, мы используем цикл
for-each
, чтобы посчитать сумму всех элементов массива. - Наконец, мы вычисляем среднее арифметическое деля сумму на количество элементов и выводим его на экран.
Задача средней сложности по Java
Напишите класс “Решето Эратосфена” для нахождения всех простых чисел в диапазоне от 2 до n. Класс должен иметь метод “просеивание” для построения решета и метод “вывод” для вывода всех найденных простых чисел.
Решение задачи
Этот код реализует класс SieveOfEratosthenes
, который использует алгоритм “Решето Эратосфена” для нахождения всех простых чисел в диапазоне от 2 до n. В конструкторе создается массив primes
, который инициализируется как все true
, кроме 0 и 1. Метод sieve
использует алгоритм “Решето Эратосфена” для отметки составных чисел как false
. Метод output
выводит все простые числа из массива primes
.
Сложная задача по Java
Реализуйте класс “Матрица” с методами:
- Конструктор для создания матрицы размером nxm с нулевыми значениями.
- Метод “
setValueAt(int i, int j, int value)
” для установки значения элемента в матрице по индексу i, j. - Метод “
getValueAt(int i, int j)
” для получения значения элемента в матрице по индексу i, j. - Метод “
multiplyByScalar(int scalar)
” для умножения каждого элемента матрицы на скаляр. - Метод “
add(Matrix m)
” для сложения двух матриц. - Метод “
transpose()
” для транспонирования матрицы. - Перегрузите оператор “+” для сложения двух матриц и оператор “*” для умножения матрицы на скаляр.
- Реализуйте итератор для класса матрица, чтобы проитерироваться по всем элементам матрицы.
Проверьте работу класса с помощью JUnit тестов.
Подсказки:
- Создайте класс “
Matrix
” с переменными экземпляра для хранения количества строк, столбцов и двумерного массива для хранения элементов матрицы. - Реализуйте конструктор для инициализации матрицы с заданным количеством строк и столбцов и установите все элементы в 0.
- Реализуйте метод
setValueAt()
для установки значения элемента матрицы в указанной позиции. - Реализуйте метод
getValueAt()
для получения значения элемента матрицы в указанной позиции. - Реализуйте метод
multiplyByScalar()
для умножения всех элементов матрицы на указанное скалярное значение. - Реализуйте метод
add()
для сложения двух матриц. - Реализуйте метод
transpose()
для транспонирования матрицы. - Переопределите операторы “+” и “*” для сложения и умножения матриц соответственно.
- Реализуйте итератор для класса
Matrix
, чтобы можно было выполнять итерацию по всем элементам матрицы.
Напишите тестовые примеры JUnit для проверки всех реализованных методов и убедитесь, что они работают правильно.
Рекомендуется реализовывать каждый метод по одному и тестировать их по мере выполнения, чтобы избежать большой кучи кода, который трудно отлаживать.
Ответа к этой задаче нет. ChatGPT призналась, что ей как языковой модели это не по зубам. Найдутся ли среди читателей те, кто сможет решить её?
Как может выглядеть структура класса
Обратите внимание, что приведенное выше является примером и может не работать идеально, если вы скопируете его без понимания кода, вам следует протестировать и отладить его.
Как вы считаете, справилась ли ChatGPT с формулировкой задач и их решением? Если нет, то где ошиблась языковая модель?
Сколько задач их трёх вам удалось решить? Присылайте свои решения на GitHub в комментарии.
12907
Что думаете?
10 комментариев
Сначала интересные
Это не задачи по джава. Написать модель данных с помощью jpa, подключить базу, наполнить её таблицами с помощью гибернейт, внедрить правильно зависимости, сбилдить проект, развернуть его на сервере, вот пример задачи на джава. А с этими справится любой студент на любом языке, имеющий склонности к математике и логике. Хоть третья задача и повышенной сложности, но этот скорее проверка математики, логики и знания алгоритмов.
Nikita Plotnikov, Hibernate, Spring REST. Да в Java нельзя перегрузить оператор самому, никакой, не С++ все-таки. И да, это задачки, и на Java тоже решаются. На понимание ООП задачки это.
Nikita Plotnikov, На самом деле в третьей задаче алгоритмов-то даже нет толком. Просто подставить нужные формулы и все. В плане алгоритмизации лучше идет вторая задача.
Nikita Plotnikov, Я прочитал и меня потянуло в сон.
Не вижу здесь задач даже средней сложности, не говоря уже о повышенной. Все на знание простых алгоритмов и переписывание формул из математики. Как пример найти действительно алгоритмически сложные задачи, можно заглянуть например на codewars.com в Rank:4 kyu и выше.
Переопределите операторы «+» и «*» для сложения и умножения матриц соответственно.
Это в какой версии Java в ней появилось переопределение операторов?
Alex Skokov,
Согласен, такого себе даже JS не может позволить))
Может, чат бот написал новый язык? о_О Показать все комментарии