remake "русская рулетка"
Добавлено: 02 май 2015, 13:41
Ввиду повышенной опасности предоставляемой информации настоятельная просьба ко всем
читателям перед выполнением любой части кода из нижепреведнного сценария прочесть
статью до конца.
Как известно даже в самой небольшей строчке кода можно найти некоторые возможности по
улучшению. Сегодня мы с вами разберем очень простенькую но тем не менее смертельно опасную
игру "Русская Рулетка", проведем оптимизацию и конвертируем ее в безопасный в руках пользователя
вариант под названием Remake "Русская Рулетка". И так пишим всем известный код и проводим
разбор фрица:
(Внимание перед выполнением строчки данного кода следует в обязательном порядке
обновить бэкап всей системы)
Для начала определим алгоритм в правилах игры:
В барабан нагана вставляем один патрон, раскручиваем, подносим ствол к виску, жмем на спусковой
крючек, все, любуемся результатом. Новичкам и людям с неокрепшей психикой следует
однозначно потренироваться на муляже:
Теперь вывернем принцип действия. Переменная $RENDOM возвращает случайное число из
интервала 0 - 32767, это положительная часть всех возможных 16 битных чисел. Остаток от деления
на шесть получаем с помощью конструкции $((выражение)) или как в данном случае $[выражение].
Выражение это будет равно одному из ряда от нуля до пяти. Сравниваем с одним из значений, пулю
принимаем за ноль реализовывая тем самым один случайный вариант из шести возможных.
Логические операторы && И(and) и || ИЛИ(or) предоставляют выбор действий в зависимости от
проверки сравнения в нутри объемлющих квадратных скобок и в зависимости от выбора выводится
строка при помощи оператора echo. Незабываем что квадратные скобки это тоже оператор и их
необходимо отделять от других литералов пробелом, исключением является конструкция $[...]
предназначенная для выпонения арифметических операций. Результатом проигрыша будет
по всей видимости отсутствие домашней директории пользователя на жестком диске.
Почему то ни кто не догадался упростить код игры и мы сделаем это самостоятельно, для чего не станем
вычислять остаток от деления а сразу воспользуемся кодом возврата нашего выражения заключив его
в двойные круглые скобки, здесь результат в 0 трактуется как false, а любое другое значение как true.
Заметте что теперь для правильной работы кода мы инвертировали строки оперетора echo.
И даже если мы уберем знак переменной в двойных круглых скобках, код будет продолжать
исправно работать
На этом все, получаем 5 за оптимизацию и 5 за безопасность, можно давать детям.
В помощь экстремалам для первоначального варианта игры всегда команда sudo. Удачи!
читателям перед выполнением любой части кода из нижепреведнного сценария прочесть
статью до конца.
Как известно даже в самой небольшей строчке кода можно найти некоторые возможности по
улучшению. Сегодня мы с вами разберем очень простенькую но тем не менее смертельно опасную
игру "Русская Рулетка", проведем оптимизацию и конвертируем ее в безопасный в руках пользователя
вариант под названием Remake "Русская Рулетка". И так пишим всем известный код и проводим
разбор фрица:
(Внимание перед выполнением строчки данного кода следует в обязательном порядке
обновить бэкап всей системы)
Код: Выделить всё
[ $[$RANDOM % 6] == 0 ] && rm -rf / || echo 'you win!'
В барабан нагана вставляем один патрон, раскручиваем, подносим ствол к виску, жмем на спусковой
крючек, все, любуемся результатом. Новичкам и людям с неокрепшей психикой следует
однозначно потренироваться на муляже:
Код: Выделить всё
[ $[$RANDOM % 6] ==0 ] && echo 'you lose!' || echo 'you win!'
интервала 0 - 32767, это положительная часть всех возможных 16 битных чисел. Остаток от деления
на шесть получаем с помощью конструкции $((выражение)) или как в данном случае $[выражение].
Выражение это будет равно одному из ряда от нуля до пяти. Сравниваем с одним из значений, пулю
принимаем за ноль реализовывая тем самым один случайный вариант из шести возможных.
Логические операторы && И(and) и || ИЛИ(or) предоставляют выбор действий в зависимости от
проверки сравнения в нутри объемлющих квадратных скобок и в зависимости от выбора выводится
строка при помощи оператора echo. Незабываем что квадратные скобки это тоже оператор и их
необходимо отделять от других литералов пробелом, исключением является конструкция $[...]
предназначенная для выпонения арифметических операций. Результатом проигрыша будет
по всей видимости отсутствие домашней директории пользователя на жестком диске.
Почему то ни кто не догадался упростить код игры и мы сделаем это самостоятельно, для чего не станем
вычислять остаток от деления а сразу воспользуемся кодом возврата нашего выражения заключив его
в двойные круглые скобки, здесь результат в 0 трактуется как false, а любое другое значение как true.
Код: Выделить всё
(( $RANDOM % 6 )) && echo 'you win' || echo 'you lose'
И даже если мы уберем знак переменной в двойных круглых скобках, код будет продолжать
исправно работать
Код: Выделить всё
(( RANDOM % 6 )) && echo 'you win' || echo 'you lose'
В помощь экстремалам для первоначального варианта игры всегда команда sudo. Удачи!