Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Readme.md

Решение 2 задания:

a) Sequences - package (YLabJavaIntensive/YLabTask2/src/sequences)

Последовательности A - J заданы в виде нескольких значений следующим образом

  • A. 2, 4, 6, 8, 10...
  • B. 1, 3, 5, 7, 9...
  • C. 1, 4, 9, 16, 25...
  • D. 1, 8, 27, 64, 125...
  • E. 1, -1, 1, -1, 1, -1...
  • F. 1, -2, 3, -4, 5, -6...
  • G. 1, -4, 9, -16, 25....
  • H. 1, 0, 2, 0, 3, 0, 4....
  • I. 1, 2, 6, 24, 120, 720...
  • J. 1, 1, 2, 3, 5, 8, 13, 21…

Необходимо найти закономерности, по которым эти последовательности сформированы и реализовать следующий интерфейс, каждый метод которогопринимает число N и выводит в консоль N элементов соответствующей последовательности. Каждый элемент можно выводить с новой строки

b) ComplexNumbers - package (YLabJavaIntensive/YLabTask2/src/complex_numbers)

Реализовать класс, описывающий комплексное число (действительная и мнимая часть должны иметь точность double). Должны быть доступны следующие операции:

  1. Cоздание нового числа по действительной части (конструктор с 1 параметром)
  2. Создание нового числа по действительной и мнимой части (конструктор с 2 параметрами)
  3. Сложение
  4. Вычитание
  5. Умножение
  6. Операция получения модуля
  7. преобразование в строку (toString) (арифметические действия должны создавать новый экземпляр класса)

Написать код, демонстрирующий работу с созданными классами

c) RateLimitedPrinter - package (YLabJavaIntensive/YLabTask2/src/rate_limited)

Реализовать класс RateLimiterPrinter. Класс имеет конструктор, в который передается interval и метод print(), в который передается строка. Класс функционирует по следующему принципу: на объекте класса вызывается метод print(). Далее идет проверка, когда был последний вывод в консоль. Если интервал (в миллисекундах) между последним состоявшимся выводом и текущим выводом больше значения interval, переданного в конструктор - то происходит вывод значения. Иначе - не происходит, и сообщение отбрасывается. То есть класс ограничивает частоту вывода в консоль. Другими словами, сообщение не будет выводится чаще чем 1 раз в interval милисекунд. Реализовать описанный класс.

d) SnilsValidator - package (YLabJavaIntensive/YLabTask2/src/snils_validator)

Номер СНИЛС состоит из 11 цифра, и валидация номера СНИЛС выполняется по следующим правилам:

  1. Вычислить сумму произведений цифр СНИЛС (с 1-й по 9-ю) на следующие коэффициенты — 9, 8, 7, 6, 5, 4, 3, 2, 1 (т.е. номера цифр в обратном порядке).
  2. Вычислить контрольное число от полученной суммы следующим образом:
    • если она меньше 100, то контрольное число равно этой сумме;
    • если равна 100, то контрольное число равно 0;
    • если больше 100, то вычислить остаток от деления на 101 и далее:
      • если остаток от деления равен 100, то контольное число равно 0;
      • в противном случае контрольное число равно вычисленному остатку от деления.
  3. Сравнить полученное контрольное число с двумя младшими разрядами СНИЛС. Если они равны, то СНИЛС верный. Обратить внимание, что переданная строка может быть произвольной. Метод должен возвращать true тогда и только тогда, когда в строке валидный СНИЛС

e) StatsAccumulator - package (YLabJavaIntensive/YLabTask2/src/stats_accumulator)

Объект данного класса, будучи созданным, может принимать значения через метод add. Приняв значение, объект меняет свое внутреннее состояние, чтобы в любой момент времени предоставить данные о количестве переданных ему элементах, минимальному их них, максимальному из них, а также о среднем арифметическом всех переданных ему элементов. Написать решение, использующее O(1) памяти. Другими словами - нельзя хранить все переданные в метод add числа