|
9 | 9 |
|
10 | 10 | Исходный код представлен на языке программирования PHP (версия интерпретатора = 8.1.2).
|
11 | 11 |
|
| 12 | +Наиболее интересные и сложные задачи, представленные в данном репозитории (на мой взгляд): |
| 13 | + |
| 14 | +- [Решето Эратосфена (поиск последовательности простых чисел)](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/15%20-%20sieve_of_eratosthenes.php) |
| 15 | +- [Различные операции с матрицами (двумерными массивами)](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/19%20-%20matrix_arithmetic.php) |
| 16 | +- [Конвертация чисел в разные системы счислений без использования встроенных в языке методов](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/10%20-%20dec_to_hex%2C%20hex_to_dec.php) |
| 17 | +- [Подсчёт суммы всех цифр в числе с использованием регулярных выражений](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/09%20-%20sum_of_all_digits.php) |
| 18 | +- [Факторизация натурального числа (разложение на простые сомножители)](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/13%20-%20factorize_the_number.php) |
| 19 | +- [Два варианта реализации поиска уникальных элементов в списке случайных чисел](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/17%20-%20unique_elements.php) |
| 20 | + |
| 21 | +С полным списком всех 20 задач и ссылками на исходный код с решениями можно ознакомиться [здесь](https://github.com/sudomango/PHP-Algo-A/blob/main/all_tasks_readme.md). |
| 22 | + |
12 | 23 | • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
|
13 | 24 |
|
14 | 25 | <details><summary>💿 Установка и запуск решений на компьютере:</summary>
|
@@ -38,162 +49,10 @@ php script_name.php
|
38 | 49 |
|
39 | 50 | • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
|
40 | 51 |
|
41 |
| -## Список задач в репозитории |
42 |
| - |
43 |
| -<details><summary>Первый блок задач (задачи 01 - 10):</summary> |
44 |
| - |
45 |
| -<br> |
46 |
| - |
47 |
| -01\. Функция, которая проверяет, является ли указанный год високосным. |
48 |
| - |
49 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/01%20-%20is_leap_year.php) |
50 |
| - |
51 |
| -<br> |
52 |
| - |
53 |
| -02\. Функция, которая проверяет, является ли число, переданное в качестве аргумента, простым. |
54 |
| - |
55 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/02%20-%20is_prime_number.php) |
56 |
| - |
57 |
| -<br> |
58 |
| - |
59 |
| -03\. Функция, которая генерирует одномерный массив случайных целых чисел размером count. Все числа должны находиться в диапазоне min_value ... max_value. Дополнительно следует реализовать возможность генерации массива, состоящего только из уникальных (неповторяющихся) элементов. |
60 |
| - |
61 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/03%20-%20random_int_array.php) |
62 |
| - |
63 |
| -<br> |
64 |
| - |
65 |
| -04\. Фильтрация исходного массива: Дан массив из 100 случайных целых чисел. Создать два новых массива на основе первого = в первом оставить только чётные положительные числа, во втором - двузначные числа, кратные 10. Вывести оригинальный массив и оба получившихся массива на экран консоли. |
66 |
| - |
67 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/04%20-%20array_filter.php) |
68 |
| - |
69 |
| -<br> |
70 |
| - |
71 |
| -05\. Использование ассоциативных массивов: Зарплата сотрудника вычисляется по формуле = 1000$ + 20$ за каждый отработанный час + 30$ за каждого нового клиента. Подсчитать зарплату каждого из сотрудников. Вывести их в порядке от "лучшего" к "худшему". Каждый сотрудник представляет собой ассоциативный массив. |
72 |
| - |
73 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/05%20-%20salary_amount_calculate.php) |
74 |
| - |
75 |
| -<br> |
76 |
| - |
77 |
| -06\. Дан список продуктов на складе. У каждого есть срок его изготовления и срок годности (всегда указан в днях). Необходимо проверить, какие продукты на текущую дату можно считать просроченными, а какие - всё ещё свежими. Даты можно указать любые, главное, чтобы было видно, что функция работает правильно. |
78 |
| - |
79 |
| -[Исходный код решения (использование функции strtotime)](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/06%20-%20is_still_fresh_one.php) |
80 |
| - |
81 |
| -[Исходный код решения (использование методов класса DateTime)](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/06%20-%20is_still_fresh_two.php) |
82 |
| - |
83 |
| -<br> |
84 |
| - |
85 |
| -07\. Реализовать программу "Калькулятор для вклада". Пользователь вводит начальную сумму и количество месяцев, после чего должен получить финальную сумму, которая будет на вкладе по истечению указанного им срока. Условия вклада такие: любая сумма до 6 месяцев (включительно) = 6.5% годовых; если вклад делается на срок больше 6 месяцев, то для сумм больше 500.000 процентная ставка = 8%, для сумм меньших или равных 500.000 = 10%. Все вклады идут с ежемесячной капитализацией процентов (проценты каждый месяц прибавляются к сумме вклада, и в новом месяце процент считается уже от новой суммы). |
86 |
| - |
87 |
| -Так как это учебная программа, результат при выводе разрешается округлить до 2-3 знаков после запятой. |
88 |
| - |
89 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/07%20-%20deposit_calculator.php) |
90 |
| - |
91 |
| -<br> |
92 |
| - |
93 |
| -08\. Даны две строки, необходимо выяснить являются ли они анаграммами? В содержании строк следует учитывать только буквы и цифры. Пробелы и знаки препинания необходимо удалить или игнорировать их при сравнении. Сравнение сделать case-insensitive (регистронезависимым). |
94 |
| - |
95 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/08%20-%20is_an_anagram.php) |
96 |
| - |
97 |
| -<br> |
98 |
| - |
99 |
| -09\. Вывести на экран сумму всех цифр указанного числа (функция должна работать в том числе и для отрицательных чисел, и для вещественных). |
100 |
| - |
101 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/09%20-%20sum_of_all_digits.php) |
102 |
| - |
103 |
| -<br> |
104 |
| - |
105 |
| -10\. Реализовать функции dec_to_hex, hex_to_dec, dec_to_bin, bin_to_dec, rgb_to_hex, hex_to_rgb без использования аналогичных функций, встроенных в язык программирования. Входные данные = целые неотрицательные числа в указанной системе счисления в виде строки: "40AC20", "600", "1011011" и т. д. RGB-цвет должен быть представлен в виде массива из трёх целочисленных значений (0 .. 255). |
106 |
| - |
107 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_01/10%20-%20dec_to_hex,%20hex_to_dec.php) |
108 |
| - |
109 |
| -</details> |
110 |
| - |
111 |
| -<div style="margin-top: 16px"></div> |
112 |
| - |
113 |
| -• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • |
114 |
| - |
115 |
| -<details><summary>Второй блок задач (задачи 11 - 20):</summary> |
116 |
| - |
117 |
| -<br> |
118 |
| - |
119 |
| -11\. Количество вхождений элемента в последовательность: В текстовом файле записана произвольная строка или текст. Пользователь вводит символ или подстроку. Необходимо вывести, какое количество раз она повторяется в исходном тексте. Поиск сделать case-insensitive (регистронезависимым). |
120 |
| - |
121 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/11%20-%20repeated_elements_count.php) |
122 |
| - |
123 |
| -<br> |
124 |
| - |
125 |
| -12\. Реализовать функцию, которая выводит на экран все делители указанного натурального числа. |
126 |
| - |
127 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/12%20-%20find_all_divisors.php) |
128 |
| - |
129 |
| -<br> |
130 |
| - |
131 |
| -13\. Функция, которая раскладывает натуральное число (n > 1) на простые сомножители. |
132 |
| - |
133 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/13%20-%20factorize_the_number.php) |
134 |
| - |
135 |
| -<br> |
136 |
| - |
137 |
| -14\. Дан массив из натуральных чисел. Найти НОД для всех чисел в указанном массиве. |
138 |
| - |
139 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/14%20-%20nod_of_the_array.php) |
140 |
| - |
141 |
| -<br> |
142 |
| - |
143 |
| -15\. Решето Эратосфена: Вывести список всех простых чисел в диапазоне от 2 до \<user_number\>. |
144 |
| - |
145 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/15%20-%20sieve_of_eratosthenes.php) |
146 |
| - |
147 |
| -<br> |
148 |
| - |
149 |
| -16\. Реализовать две функции для целочисленной арифметики денежных единиц: одна - для сложения, вторая - для вычитания. Мы знаем, что представление дробной части вещественного числа в компьютере не всегда точное из-за особенностей двоичной арифметики. Поэтому для денежных единиц обычно создаётся отдельный объект, в котором реализованы свои методы для арифметических операций с этим объектом. Копейки считаются отдельно, а рубли - отдельно. Так как мы пока не затрагиваем ООП, предлагается реализовать описанный функционал через ассоциативные массивы (словари). |
150 |
| - |
151 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/16%20-%20money_true_calculation.php) |
152 |
| - |
153 |
| -<br> |
154 |
| - |
155 |
| -17\. Дан массив случайных чисел. Вывести на экран только уникальные (неповторяющиеся) элементы. |
156 |
| - |
157 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/17%20-%20unique_elements.php) |
158 |
| - |
159 |
| -<br> |
160 |
| - |
161 |
| -18\. Реализовать две функции: Первая вычисляет, является ли указанная строка палиндромом. Вторая делает тоже самое, но для целых неотрицательных чисел. Можно использовать любой известный алгоритм для вычисления палиндромов. |
162 |
| - |
163 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/18%20-%20palindrome_function.php) |
164 |
| - |
165 |
| -<br> |
166 |
| - |
167 |
| -19\. Матричная арифметика = целых четыре подзадачи в одной. В дальнейшем считать матрицу и двумерный массив синонимами. Все индексы будем считать с нуля. |
168 |
| - |
169 |
| -Итак, дана квадратная матрица 5-го порядка. Можно наполнить её любыми целыми числами. |
170 |
| - |
171 |
| -A\. Вывести на экран исходную и транспонированную ей матрицу. Вывод обязательно реализовать с выравниванием по столбцам. |
172 |
| - |
173 |
| -B\. Вывести сумму элементов с чётными индексами на главной диагонали. Например: A[0][0], A[2][2] и т. д. Исходная матрица может быть любого размера (но она обязательно будет квадратной). |
174 |
| - |
175 |
| -C\. Вывести последнюю цифру суммы всех элементов на главной и побочной диагоналях. |
176 |
| - |
177 |
| -D\. Найти и вывести минимальный элемент матрицы и координаты (индексы) его последнего вхождения. |
178 |
| - |
179 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/19%20-%20matrix_arithmetic.php) |
180 |
| - |
181 |
| -<br> |
182 |
| - |
183 |
| -20\. Найти и вывести на экран НОД и НОК для двух указанных натуральных чисел. Разрешается использовать любой известный алгоритм, кроме встроенных в язык программирования функций. |
184 |
| - |
185 |
| -[Исходный код решения](https://github.com/sudomango/PHP-Algo-A/blob/main/Block_02/20%20-%20nok_and_nod_of_two_numbers.php) |
186 |
| - |
187 |
| -</details> |
188 |
| - |
189 |
| -<div style="margin-top: 16px"></div> |
190 |
| - |
191 |
| -• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • |
192 |
| - |
193 | 52 | ## Некоторые примечания
|
194 | 53 |
|
195 | 54 | Весь код проверен на работоспособность на Windows 10 и Ubuntu Server 22.04, результат выполнения всегда соответствует поставленному условию задачи.
|
196 | 55 |
|
197 | 56 | 
|
198 | 57 |
|
199 |
| -Весь исходный код **служит для учебных целей**, в связи с чем в нём могут встречаться различные пояснительные комментарии, не всегда оптимальные алгоритмы, отладочная информация и так далее. |
| 58 | +Весь исходный код **служит для учебных целей**, в связи с чем в нём могут встречаться различные пояснительные комментарии, не всегда оптимальные алгоритмы, отладочная информация и так далее. |
0 commit comments