Compare commits

..

No commits in common. 'main' and '32489330809d21e5c1ddc948fb3010aeea5e7247' have entirely different histories.

  1. 136
      README.md
  2. 94
      instruction.md
  3. 1
      test.py

@ -1,2 +1,134 @@
Хогвардса не будет! ## Домашнее задание 1
Магии в программировании нет!
### Сетка дедлайнов:
| дурацкое название | дата | штраф
| ---------------- | ---------------- | ------------------------------------------------------------------- |
| основной | 06 ноября 23:59 | без штрафа, до этого момента получаем полный балл |
| 1 промежуточный | 13 ноября 23:59 | все баллы за решения, сданные с этого момента домножаются на 0.7 |
| 2 промежуточный | 20 ноября 23:59 | все баллы за решения, сданные с этого момента домножаются на 0.5 |
| 3 промежуточный | 27 ноября 23:59 | все баллы за решения, сданные с этого момента домножаются на 0.3 |
| фатальный | 04 декабря 23:59 | с этого момента, увы, не имеет смысла сдавать решения, совсем |
### 1. Rand (2 балл)
Написать команду, которая будет создавать файл rnd.txt в текущем каталоге.
Размер файла rnd.txt -- случайное число байт.
Файл должен быть полностью заполнен случайными байтами.
Размер можно вычислять заранее, запоминая результат в переменной.
Используйте `dd`, переменную окружения `RANDOM` (`echo $RANDOM`, и см. `bash(1)`),
а также `/dev/urandom`.
### 2. Сумма (1 балл)
Посчитайте сумму значений в третьем столбце файла `digits.txt`.
Используйте `paste`, чтобы сформировать выражение и `bc`, чтобы его вычислить.
Не забывайте про process subsctitution `$()`
### 3. Посчитаемся (1 балл)
Посчитайте количество регулярных файлов в текущем каталоге,
измененных больше 30 минут и меньше суток назад и имеющих расширение `.txt`.
Для решения используйте `find` и `wc`.
### 4. ping (1 балл)
В файле `ips.txt` записаны IP-адреса (по одному на каждой строчке).
Написать скрипт, считывающий IP-адреса из этого файла, пингует (команда `ping`)
их и записывает результат в `res.txt`, а ошибки -- в `err.txt`.
Подсказка:
```bash
while IFS= read -r line; do
echo "Text read from file: $line"
done < my_filename.txt
```
### 5. Четное-нечетное (1 балл)
Введите целое число и проверьте, является ли оно чётным или нечётным.
Скрипт должен запрашивать число, и выводить **EVEN** или **ODD** соответственно.
### 6. Палиндром (1 балл)
Написать скрипт, который проверяет, является ли введенная строка палиндромом.
Скрипт должен запрашивать строку, и выводить **YES** или **NO** соответственно.
### 7. factor (1 балл)
Написать скрипт, который раскладывает на простые множители все числа из
заданного в первом параметре скрипта файла и записывает результат в другой файл,
заданный во втором параметре. Каждое число из разложения необходимо вывести
столько раз, сколько оно там встречается (см. пример для числа 1236).
Пример входных данных:
123
15123
1236
97
Пример выходных данных:
123: 3 41
15123: 3 71 71
1236: 2 2 3 103
97: 97
### 8. find (1 балл)
Переименовать все файлы в текущем каталоге (с учетом всех подкаталогов рекурсивно),
имеющие расширение не .sh и измененные не более двух суток назад и не менее суток
назад, добавив в начало имени файла символ '\_'.
Подсказка:
```
find . -print0 |
while IFS= read -r -d '' line
do
echo $line
done
```
### 9. cal (задача с маленькой звездочкой, 2 балла)
С помощью команд `cal`, `cat` и `grep` вывести текущее число. Выводить месяц и
год необязательно, но можно.
Выводить весь календарь и утверждать, что условие задания выполнено запрещается.
### 10. Зоопарк (1 балл)
Имеется файл, содержащий сведения о животных в зоопарке:
id;name;h;strike;color
1;Chicken;12;0.38;Yellow
2;Goose;18;0.11;Green
3;Orca;8;0.81;Yellow
4;Porcupine;19;0.74;Yellow
5;Bear;23;0.14;Green
6;Turtle;4;0.08;Black
Требуется организовать неэтичные бои без правил. Для этого нужно вывести имя
животного (`name`) и тангенс его ударной силы (`strike`)
(именно тангенс, не синус и косинус).
При этом интересуют нас только те животные,
которые не выбыли из турнира, то есть те, перед которыми в списке было нечетное число животных того
же цвета (`color`);
Пример вывода:
Orca 1.0505
Bear 0.1409
Примечания:
* Разрешено использовать только `awk`.
* Тангенс нужно выводить с точностью в четыре знака после запятой.

@ -0,0 +1,94 @@
## Процесс сдачи
Для сдачи домашнего задания Вам необходимо
0. В идеале, сгенерировать ssh-ключ и добавить его : [инструкция](https://docs.gitlab.com/ee/ssh/#generate-an-ssh-key-pair) и добавить его в свой аккаунт на gitlab: [инструкция](https://docs.gitlab.com/ee/ssh/#add-an-ssh-key-to-your-gitlab-account).
1. Первым делом нужно сделать **приватный** форк данного репозитория
(кнопочка Fork вверху репозитрория) и добавить в него меня:
- Алексей Зубаков: @ottergottaott
2. Склонировать форк к себе на компьютер:
```
$ git clone git_url_of_your_repo
```
где `git_url_of_your_repo` -- url к вашему репозиторию.
3. Добавить url основного репозитория к своему в качестве remote.
```
$ git add upstream ...
```
Посмотреть уже существующие remote можно следующей командой:
```
$ git remote -v
origin git@gitlab.com:aleks.zubakov/unix.git (fetch)
origin git@gitlab.com:aleks.zubakov/unix.git (push)
upstream git@gitlab.com:sl/unix-22.git (fetch)
upstream git@gitlab.com:sl/unix-22.git (push)
```
`origin` -- Ваш fork.
4. Выгрузить новые ветки из общего оригинального репозитория,
добавленные преподавателем:
```
$ git fetch upstream
```
Новые ветки будут видны в списке всех веток:
```
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/hw3
remotes/origin/master
remotes/upstream/hw3
remotes/upstream/master
```
В данном случае это `remotes/upstream/master` и `remotes/upstream/hw3`.
Домашки будут выкладываться в ветки вида `hwN`, где `N` -- номер
дз. (_Для магистров Вышки домашнее заданее будет одно, позже дополнительное_).
Далее Вам необходимо перейти на только что выгруженную ветку и запушить
("отправить") ее в свой форк:
```
$ git checkout upstream/hw3
$ git push origin hw3
```
**Никаких изменений в эту ветку вносить не нужно, Вы будете работать с другой веткой!**
5. Создать ветку вида `hwN-dev`, в которой будет Ваше решение
```
$ git checkout -b hw3-dev
```
git автоматически переведет Вас в ветку `hw1-dev`, если нужно перейти в какую-то
другую (в данном случае в main):
```
$ git checkout main
```
6. Внести свои изменения, с помощью команд `git add`, `git commit` сформировать
коммиты с решениями задач (структура комитов остается на Ваше усмотрение).
7. При готовности запушить рабочую ветку (`hw3-dev`) в Ваш форк:
```
$ git push origin hw3-dev
```
и создать Pull Request.
Требования к Pull Reguest, где N -- номер домашнего задания:
- MR должен создаваться из ветки `hwN-dev` в ветку `hwN` Вашего
**приватного** форка;
- MR должен быть назван следующим образом: **Unix. ДЗ N, <Фамилия> <Имя>**;
- В PR нужно добавить меня в качестве Assignee;
8. Исправления добавляются в ту же ветку в тот же самый PR (новый PR
создавать не нужно) также, как и перед отправкой. Для этого достаточно запушить
изменения в ветку `hwN-dev` и переоткрыть старый PR.

@ -1 +0,0 @@
print('Hello World!')
Loading…
Cancel
Save