Три задачи на знание Java от ChatGPT
Языковая модель ChatGPT составила простую, среднюю и сложную задачи по Java. Сможете ли вы решить все три задачи?
14К открытий20К показов
Попросили языковую модель 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 в комментарии.
14К открытий20К показов