Skip to content

The UNIX Pipe Card Game: Process Substitution

https://punkx.org/unix-pipe-game/ext-0.1/

Это дополнение к The Unix Pipe Game с гораздо более сложными задачами, добавляющее команды paste, tr, cut, bc.

Дополнение предполагает, что родитель знаком с базовыми unix-командами: cat, grep, tail, head, wc, sort, uniq, **paste, tr, cut, bc**. Родитель также должен показать эти команды в действии на компьютере. Если у вас нет UNIX-системы, вы можете использовать jslinux в вашем браузере.

Deck

NB: Вы не можете играть в это дополнение без базовой игры. Причина в том, что задачи требуют значительно больше карт, и в одной колоде просто нет места. Мне жаль, я действительно пытался сделать колоду самодостаточной, но в итоге решил использовать две колоды, чтобы игра стала интереснее.

Концепция подстановки процессов кратко объясняется в колоде, новые команды также кратко описаны, но я могу объяснить лишь столько в ~1000 символах — этого точно не хватит, чтобы объяснить всё вашим детям, поэтому лучше дать им немного поиграть в командной строке, чтобы почувствовать, как работают paste, tr, cut, bc.


Пример игрового раунда

Задача: вычислить средний рейтинг: sum(rating) / (количество фильмов)

Сначала создаём один процесс для cat файла, берём колонку с рейтингами, пропускаем заголовок, соединяем строки через + и передаём в калькулятор. Также нужно посчитать количество фильмов в файле, затем используем paste, чтобы объединить эти выводы через /, и снова передаём в калькулятор:

bash
paste -d/- <(<span style="color:red">cat 03.txt | cut -f 4 -d, | grep -v Rating | paste -sd+ | bc</span>) <(<span style="color:blue">cat 03.txt | grep -v Rating | wc -l</span>) | bc

Example


Правила

Эта игра требует The UNIX Pipes Game
версии 0, которую можно получить здесь:

    https://punkx.org/unix-pipe-game/

Она содержит sort, cat и другие команды,
необходимые для решения задач в этом
дополнении.

Правила те же:

> 1. Самый молодой игрок выбирает задачу
    из карты задач. Нельзя выбирать одну
    и ту же задачу дважды.

> 2. Перемешайте карты из обеих колод.

> 3. Положите карты рубашкой вверх на стол.

> 4. По часовой стрелке каждый игрок берёт
    верхнюю карту из колоды и пытается
    выполнить задачу.

> 5. Первый игрок, выполнивший задачу,
    получает очко.

> 6. ЕСЛИ задач больше нет, ПЕРЕЙТИ к шагу 8

> 7. ПЕРЕЙТИ к шагу 1.

> 8. ИГРА ОКОНЧЕНА. ВСТАВЬТЕ МОНЕТУ. ПЕРЕЙТИ к шагу 8

ЗАДАЧИ

  • * поменять местами колонки рейтинга и названия
  • * напечатать количество голосов последней строки
  • * удалить колонки Rank и Votes
  • * напечатать только колонку с названиями в верхнем регистре
  • * напечатать первый и последний фильм
  • * напечатать разницу в голосах между самым и наименее популярным фильмом
  • * просуммировать голоса
  • * просуммировать голоса фильмов 2016 года
  • * показать название лучшего по рейтингу фильма, только название, без других колонок
  • * заменить запятые на табуляцию, удалить пробелы
  • * напечатать названия как одну гигантскую строку: Sing Interstellar ...
  • * вычислить средний рейтинг: sum(rating) / (количество фильмов)

Контакты: bystrovno@basealt.ru