#php #104 Лада Домашние задания

Домашнее задание 15.09

  1. Прошлое дз п. 12 - дорешать
  2. Создать картинку с числом и поместить ее в другую картинку, повернув на 90 градусов
  3. Дана матрица. Переставить так строки местами, чтобы в первом столбце шли числа по порядку (каждое следующее увеличивалось на 1). Если это невозможно, вывести матрицу без изменений.
  4. Дан текст - слова разделены пробелами и точками. Найти самое длинное слово, в котором нет цифр.

Домашнее задание 31.08

  1. Прошлое дз п. 12 и п. 11  - решить без стандартных функций
  2. Написать удаление, добавление и редактирование ноутбука (как на уроке с books, код в репозитории)
  3. Дана строка из цифр. Добавить пробелы через каждые три цифры, начиная справа. Например, '23456789' -> '23 456 789'
  4. Дана строка, содержащая арифметический пример: числа со знаками плюс или минус без скобок. Вычислить значение. Например, '-12+23-13' равно -2
  5. Заменить в строке все email на '[email]'. Например, 'this is abc@mail.ru and v2@site.com' -> 'this is [email] and [email]'
  6. Найти в строке все слова, которые начинаются на заглавную букву, далее в нижем регистре буквы, далее дефис, далее 2 или 4 цифры. Наприме, Moscow-24, Minsk-2020
  7. Дана матрица из чисел. Переставить строки так, чтобы сначала шли строки, у которых больше нулей.
  8. Дана матрица из чисел. Удалить строку матрицы, в которой количество нулей максимально.
  9. Дана матрица из чисел. Переставить строки матрицы случайным образом.
  10. Найдите наибольший элемент матрицы и заменить все нечетные элементы на него.
  11. Поменять местами столбцы матрицы так, чтобы элементы первой строки оказались упорядоченными.
  12. Написать игру с компьютером. По очереди игроки называют числа от 1 до 3 до тех пор, пока сумма всех названных чисел меньше 20. Выигрывает тот, кто сделал последний ход.
  13. Без laravel создать форму для добавления ноутбука в базу данных с арифметической капчей, которую уже сделали раньше.
  14. Нарисовать флаг Турции
  15. Laravel: новая сущность Актер: фамилия, имя, отчество, год рождения, название последнего фильма, кол-во лет работы. Создать миграцию, модель, показать таблицу в blade со всеми актерами с фильтром (4 параметра). Добавить добавление актера и удаление.
  16. Написать запросы в Laravel:
    1. Показать всех актеров
    2. Показать всех актеров, у которых год рожения больше 2000
    3. Показать всех актеров, упорядоченные по году рождения и у которых опыт больше 10 лет
    4. Показать всех актеров, упорядоченные по году рождения по убыванию и у которых имя Иван
    5. Показать всех актеров, у которых год от 2000 до 2020, опыт не более 5 лет и фамилия содержит фрагмент 'ов'
  17. Регулярные выражения в php:
    1. Найти все table и tables и tbl и tbls
    2. Найти все годы от 2000 до 2024
    3. Найти номер числа  в формате xyyyxx, где x – четная цифра, y – нечетная цифра.
    4. Время в формате ЧЧ:ММ:СС
    5. Найти названия файлов с расширениями .xlsx, .doc, .txt, .pdf. Названия начинаются с document_ и имеют формат document_год_двецифры.расширение. Например, document_2024_12.doc или , document_24_12.txt

Домашнее задание 27.08

  1. Все задачи в виде функций и отдельных файлов (если не laravel)
  2. Сделать каптчу в виде арифметического примера (число от 1 до 99 плюс/минус число от 1 до 99). Например, 17 + 15. Добавить случайные отрезки.
  3. Сделать каптчу из п. 2 под размер изображения, то есть функция принимает на вход ширину и высоту, создает изображение такого размера и на нем пропорционально показывает каптчу.
  4. Сделать с нуля регистрацию (без laravel) - форма, каптча (из прошлого дз, где 4-5 букв), проверка правильности введенных данных (в том чисел каптчи через сессию). То есть повторить решение с урока.
  5. С помощью mysqli получить все ноутбуки из бд и показать в виде таблицы.
  6. Даны три изображения в папке (например, 1.jpg, 2.jpg, 3.jpg). Повернуть первое на 45 градусов и поместить в центр второго, после этого второе повернуть на 45 градусов и поместить в центр третьего. При необходимости изменить размер фото с помощью imagescale
  7. Нарисовать закрашенную звездочку. Нарисовать флаг Вьетнама
  8. Нарисовать несколько рядов одинаковых закрашенных звездочек
  9. Нарисовать 100 звездочек случайного размера, цвета и положения.
  10. Cоздать матрицу 3 x 4, заполнить ее числами 0 и 1 так, чтобы в одной строке была ровно одна единица, и вывести на экран.
  11. Дана строка, содержащая полное имя файла (например, 'c:\WebServers\home\testsite\www\myfile.txt'). Выделите из этой строки имя файла без расширения.
  12. Дана строка и число. Дополнить строку слева и справа пробелами так, чтобы длина строки стала равна данному числу, а исходный текст строки был в центре итоговой строки. Например, '   abc' и 7 -> слева уже есть 2 пробела, значит, добавляем справа 2 пробела и получаем '  abc  '.

Домашнее задание 24.08

  1. Прошлое дз - дорешать, сделать с нуля задачу про квадраты в ряд
  2. Laravel - создать форму для добавления в бд ноутбука (на основе задачи с прошлого дз, где таблица с ноутбуками)
  3. Сделать картинку с капчей - 3-4 случайные буквы в ряд, случайный цвет, размер, угол и несколько отрезков
  4. Сделать картинку с многоугольником - алгоритм с урока

Домашнее задание 21.08

  1. Прошлое дз - задача про 10 квадратов и доделать функцию drawStar и задача 6 про флаг Сенегала
  2. Показать флаг Дании
  3. Показать флаг Тринидад
  4. Создайте массив со случайными числами. Затем между каждой парой элементов этого массива вставьте новый элемент, равный сумме значений соседних элементов.
  5. Сгенерировать случайный номер телефона России. Формат: +7(код)номер, код - задать несколько вариантов (из 3 цифр) в коде и выбирать случайно, номер - 7 цифр.
  6. Дана строка. Получить массив слов из нее. Разделители слов - цифры или пробел. Использовать preg_split

Домашнее задание 18.08

  1. Показать изображение: флаг Чехии
  2. Показать изображение: 10 одинаковых квадратов в горизонтальный ряд, размер квадратов подобрать так, чтобы между ними и расстояния от крайних квадратов до границ изображения были одинаковыми
  3. Показать изображение: на фоне одного изображения три других под разными углами
  4. Показать изображение: три случайных треугольника случайного цвета
  5. Показать изображение: 100 случайных кругов (изучить функцию imagearc самостоятельно)
  6. Показать изображение: флаг Сенегала
  7. Показать изображение: флаг Боснии

Домашнее задание 12.08

  1. Регулярные выражения: найти все годы с диапазона 2011-2034
  2. Почитать статью про картинки
  3. Картинки (документация): показать изображение: синий фон, текст: You are welcome
  4. Показать изображение: 100 прямоугольников случайных размеров случайного цвета в случайных позициях
  5. Показать изображение: 5 горизонтальных рядов одинаковых квадратов случайного цвета
  6. Показать изображение: слово hello - каждая буква расположена в квадрате
  7. Показать изображение: 100 случайных букв в случайных местах случайного размера случайного цвета под случайным углом.
  8. Показать изображение: квадрат со стороной 150 ровно в центре изображения (то есть центр квадрата совпадает с центром прямоугольника-изображения)
  9. Написать генерацию числа от 10000 до 99999, в котором должна быть хотя бы одна цифра 8.
  10. Сгенерировать массив из 10 чисел: 7 нулей и 3 единицы. Единицы расположены на случайных местах в списке.

Домашнее задание 11.08

  1. Дан двумерный массив из чисел. Переставить элементы массива так, чтобы сначала шли те, у которых кол-во отрицательных чисел больше. Например, $a=[[1, 2], [-1, -1, 5, -5], [5, -5], [1, 1]]; -> [[-1, -1, 5, -5], [5, -5], [1, 2], [1, 1]];
  2. Сгенерировать двумерный массив из чисел (матрица из n строк и m столбцов, то есть в массиве n подмассивов, в каждом подмассиве m чисел). Вывести на экран строку матрицы, в которой сумма чисел, стоящих на четных позициях, наибольшая.
  3. Дана строка из слов, разделенных пробелами. Перевернуть в строке все слова, состоящие только из цифр.
  4. Дан массив чисел. Найти наибольшее кол-во подряд идущих нулей в нем. Например, [0, 1, 0, 0, 0, 2, 3, 0, 0] -> 3
  5. Регулярные выражения (использовать preg_match_all и в пару задачах preg_match)
    1. Найти все dog и dogs и doggs
    2. Найти все годы от 2000 до 2024
    3. Найти номер авто Номер в формате xYYYxx, где x – буква, y – цифра.
    4. Время в формате ЧЧ:ММ:СС
    5. Найти аааbbbccc, где a - не менее 2, b - от 2 до 5, с - любое кол-во, или ссccbbbaaa, где с - не менее 2, b - от 5 до 7, с - не более 2,
    6. Найти все номера телефонов вида +375(33)1231231 - круглые скобки могут осутствовать, код может быть 33, 44, 29, после скобок - 7 цифр
    7. Дана строка. Выведите все подозрительные слова, похожие на email, встречающиеся в строке (то есть слова с @).
    8. Дана строка. Получить массив слов из нее. Разделители слов заданы в строке: " ?.,!" Использовать preg_split
    9. Найти все даты вида 03.12.2024 или 03.12.24 то есть день.месяц.год, причем год может быть или из 4 цифр, или из 2 последних
    10. Найти все даты вида 03.12.2024 или 03.12.24 или 03/12/2024 или 03/12/24
    11. Найти названия текстовых файлов с расширениями .xlsx, .doc, .txt, .pdf. Названия начинаются с file_ и имеют формат file_дата_цифры.расширение. Например, file_02122024_12452.doc
    12. Найти все фрагменты вида 'city: name.', где name - название города с большой буквы. Например, city: Minsk,  city: Moscow

Домашнее задание 08.08

  1. Справочник Регулярные выражения
  2. Сервис для тестирования регулярных выражений (выбрать php >= 7.3) и еще один запасной сервис
  3. Создать миграцию для хранения данных о ноутбуках: модель, год выпуска, стоимость, кол-во на складе. Создать модель. Добавить несколько ноутбуков в бд через код в кортроллере. Написать запрос для получения всех ноутбуков, которых более 200 на складе, год от 2022 до 2024, в модели есть слово Asus. Cоздать view с таблицей всех ноутбуков, кнопкой удаления каждой записи и фильтром (поля фильтра: поиск по фрагменту модели, год, мин. стоимость, макс. стоимость).
  4. Дана строка. Получить строку из всех букв, которые встречаются в этой строке, без повторов, в алфавитном порядке.
  5. Дан массив чисел. Найти кол-во перемен знаков. Например, 1 -2 3 3 -4 -> 3 (то есть 1 -2 и -2 3 и 3 -4), 1 -2 -2 -2 -> 1 (то есть 1 -2)
  6. Регулярные выражения:
    1. Найти cat
    2. Найти все цифры
    3. Найти cat и cats
    4. Найти все числа от 1000 до 9999
    5. Найти номера вида AAA-BBBB-CCC, A - любая цифра кроме 0, B - 0 или 1, C - любая цифра.
    6. Петя запомнил номер телефона смутно: +3753331133 и далее две цифры. Найти все походящие номера.
    7. Найти ac, abc, abbc, abbbc, ... (b - любое кол-во)
    8. Найти все числа от 1000 до 9999 без цифр 5, 6, 7, 8
    9. Найти все числа длиной от 3 до 5, состоят из цифр и точки, которая перед последней цифрой.
    10. Найти все слова от 4 до 15 символов, начинаются с буквы, состоят из букв, цифр и символа _
    11. Найти ссылки: начинаются на https или http, далее точка, далее только буквы или цифры, далее точка, далее домен из 2 или 3 букв. Например, https://www.site.ru

Домашнее задание 05.08

  1. С дз 30.07 задача 6 доделать
  2. Сгенерировать рандомное число от 1 до 100000. Найти сумму цифр этого числа, которые больше первой цифры. Например, для 453611 сумма равна 5+6 = 11, так как 5 > 4, 6 > 4.
  3. Дан массив чисел. Переставить в нем числа так, чтобы сначала шли отрицательные, потом нули, потом положительные.
  4. Дано массив чисел. а) Сдвинуть все его элементы циклично вправо на один элемент. Например, 2, 4, 1, 5 -> 5, 2, 4, 1. б) Сдвинуть все его элементы циклично вправо на k элементов.
  5. Дано натуральное число. Найти кол-во его простых делителей. Например, для 6 делители: 1, 2, 3, 6, из них простые: 2, 3, то есть ответ: 2. Что такое простое число
  6. Дан текст в стиле snake, то есть слова в нижнем регистре через нижнее подчеркивание. Написать функцию, которая переводит этот текст в Camel, то есть слова слитно, каждое слово с большой буквы. Например, 'test_example_case' => 'TestExampleCase'

Домашнее задание 02.08

  1. Задачи с прошлого дз
  2. Создать миграции и модель для сущности Product (Товар). Поля: название, описание, кол-во единиц товара на складе, цена. Создать страницу для показа всех товаров и фильтр. Поля фильтра: название (поиск по фрагменту), кол-во товара, минимальная цена, максимальная цена.
  3. Для сущности Car сделать фильтр. Поля: марка, год выпуска, цвет.
  4. Для сущности Student сделать фильтр. Поля: фамилия, номер группы, минимальный рейтинг, максимальный рейтинг.
  5. Доп. необязательное задание: для пункта 3 в фильтре поле цвет сделать в виде выпадающего списка (select)
  6. Написать функцию, которая на вход получает две строки с кол-вом часов и минут в формате "2 h 40 min". Найти результат суммы этих периодов времени в таком же формате. Например, дано: "1 h 40 min", "0 h 22 min".  Результат: "2 h 2 min"

Домашнее задание 30.07

  1. Для каждой сущности (Book, Car, Student) показать в виде таблицы в браузере весь список из бд и сделать возможность удаления любой строки.
  2. Запросы в бд. Books:
    1. Показать все книги
    2. Показать все книги, у которых год больше 2000
    3. Показать все книги, упорядоченные по году
    4. Показать все книги, упорядоченные по году по убыванию
    5. Показать все книги, у которых год от 2000 до 2020, кол-во скачиваний не менее 100, рейтинг больше 3 и автор Джек Лондон
  3. Запросы в бд. Cars:
    1. Показать все авто
    2. Показать все авто, упорядоченные по марке
    3. Показать все авто, у которых год выпуска от 2000 до 2020, цвет зеленый, кол-во передач больше 4 и марка audi и упорядоченные по id по убыванию
  4. Запросы в бд. Students:
    1. Показать всех студентов
    2. Показать все студентов, упорядоченные по номеру группы
    3. Показать все студентов, у которых фамилия Иванов, год рождения не более 2002, номер группы от 1 до 5, отчество не null и упорядоченные по специальности по убыванию
  5. Дан массив фамилий. Найти кол-во однофамильцев. Например, ['ivanov', 'petrov', 'ivanov', 'petrov', 'ivanov', 'petrov'] - 6,  ['ivanov', 'petrov', 'ivanov'] - 2, ['ivanov', 'petrov'] - 0
  6. Дан массив, элементами которого являются массивы, содержащие фамилии учеников. Например, a = [['ivanov', 'petrov'], ['ivanov', 'sidorov'], ['ivanov', 'petrov', 'leonov']]. Найти учеников, которые есть в каждом подмассиве. Найти учеников, которые есть только в одном подмассиве. Найти учеников, которые есть только ровно в 2 подмассивах. Найти учеников, которые есть только в k (k - число дано) подмассивах.

Домашнее задание 28.07

  1. Ссылка на проект laravel и коммит за сегодня
  2. Задачи с прошлого дз 12-14
  3. Создать миграцию для таблицы books с помощью php artisan make:migration ... . Про книгу известны заголовок, автор, год, описание, кол-во скачиваний книги, рейтинг книги - число от 1 до 5. Создать модель с помощью php artisan make:model ... и добавить 5 записей в бд через laravel
  4. Создать миграцию для таблицы cars с помощью php artisan make:migration ... . Про автомобиль известны марка, год выпуска, цвет, кол-во передач (от 1 до 5), описание. Создать модель с помощью php artisan make:model ... и добавить 5 записей в бд через laravel
  5. Создать миграцию для таблицы students с помощью php artisan make:migration ... . Про студента известны фамилия, имя, отчество, год рождения, специальность, номер группы (1-10). Создать модель с помощью php artisan make:model ... и добавить 5 записей в бд через laravel
  6. Найдите количество различных элементов данного массива.
  7. Найти в массиве все серии подряд идущих одинаковых элементов и удалить из них все элементы кроме одного.
  8. Дана строка, состоящая из слов, разделенных символами, которые перечислены во второй строке. Показать все слова.
  9. Удалите в строке все символы "!".
  10. Дан email в строке. Определить, является ли он корректным (наличие символа @ и точки, наличие не менее двух символов после последней точки, наличие символов до @).
  11. Строка состоит из слов, разделенных одним или несколькими пробелами. Поменяйте местами наибольшее по длине слово и наименьшее.

Домашнее задание 24.07

  1. Ссылка на проект laravel Все задачи оформить через отдельный роут и вид.
  2. В данном натуральном числе найдите количество цифр, которые больше 3, но меньше 8.
  3. Найдите наименьшую цифру в данном натуральном числе.
  4. Для данного натурального числа найдите число, цифры которого записаны в обратном порядке.
  5. Найдите все делители данного натурального числа.
  6. Выведите все элементы массива, каждый из которых больше своего предыдущего элемента.
  7. Дан массив чисел. Преобразовать массив так, чтобы сначала шли нули, далее четные числа, далее нечетные.
  8. Даны 2  массива чисел. Найти числа, которые принадлежат обоим массивам и которые меньше суммы всех чисел первого массива.
  9. Даны 3 массива чисел. Найти числа из 3-го массива, которые можно представить в виде суммы двух чисел, первое - из 1 массива, второе - из 2 массива.
  10. Вася хочет узнать, какую оценку он получит в четверти по информатике. Учитель придерживается следующей системы: вычисляется среднее арифметическое всех оценок в журнале, и ставится ближайшая целая оценка, не превосходящая среднего арифметического.При этом если у школьника есть двойка, а следующая за ней оценка – не двойка, то двойка считается закрытой, и при вычислении среднего арифметического не учитывается. Дан список оценок - целые числа от 2 до 5 включительно. Найдите четвертную оценку.
  11. Написать функцию, которая определяет, является ли пароль простым. Пароль простой, если менее 8 символов, или содержит менее 4 различных символов, или состоит только из цифр, или содержит 'qwerty' или 'password'
  12. Дан массив из одинаковых по структуре массивов с любым уровнем вложенности. Например, $a = [
    ['developer' => ['id' => 1, 'name' => 'Ivan']],
    ['developer' => ['id' => 2, 'name' => 'Petr']],
    ]; Написать функцию pluck(), которая из данного массива получается одномерный массив из значений, путь к которым указан в виде строки из ключей через точку. Например, plain($a, 'developer.name') вернет массив ['Ivan', 'Petr']
  13. Дан массив чисел. Выполнить сортировку по четности, то есть сначала должны идти четные, потом нечетные. Можно использовать usort.
  14. Дан двумерный массив. Например, $a=[[100,100],[1,2,3],[4,5],[0,-1],[1,2,3,4,5]]; Переставить элементы массива $a так, чтобы их суммы чисел возрастали. То есть $a=[[0,-1], [1,2,3],[4,5],[1,2,3,4,5],[100,100]]; Можно использовать usort.

Домашнее задание 17.07

  1. Решить задачи с урока еще раз (из прошлого дз, которые разбирали)
  2. Задачи на массивы 2, 26, 27, 28, 75
  3. Дан массив $students = [['name' => 'Petr', 'mark' => 4.5], ['name' => 'Ivan', 'mark' => 3.5],]; Найти количество студентов, у которых оценка mark больше 3. Вывести имена тех студентов, у которых оценка больше средней арифметической всех студентов. Учесть, что у некоторых студентов оценка может быть null
  4. Прочитать про функции для работы со строками: explode, implode, strlen, trim, strpos, substr, str_repeat, str_shuffle, strtolower, strtoupper, str_replace, ucfirst - поэксперименитировать, научиться вызывать.
  5. Задачи на строки  10, 11, 16, 42, 50, 57, 58

Домашнее задание 11.07

  1. Просмотреть урок Ссылка на код
  2. Задачи 10, 46, 61, 64, 99-104, 116
  3. Задачи 19-25, 38, 42, 44, 52, 57, 71