Задача: Напишите make-файл, который приведет к такому поведению:
% make me a sandwich
What? Make it yourself
% sudo make me a sandwich
Okay
Правила:
- Должен работать на компьютере с Linux, где пользователь не является пользователем root, но ему разрешено использовать
sudo
. - Не должен говорить
Okay
какой-либо более короткой команде make (напримерsudo make sandwich
). - Вторая команда должна работать из-за
sudo
, а не потому, что это второй вызов.
Методические рекомендации:
- Будьте кратки (в конце концов, это сайт Code Golf).
- Было бы неплохо, если бы он действительно сделал бутерброд.
- Попробуйте хитро спрятать, почему
sudo
имеет значение.
Победитель будет определен голосованием.
popularity-contest
ugoren
источник
источник
make
.Ответы:
Хорошо, я укушу Это не обязательно соответствует руководству № 3, но оно справляется с двумя другими рекомендациями. Это также убирает после себя, как должен любой хороший производитель сэндвича.
(Менее глючный, и, надеюсь, немного менее скучный, чем мое первоначальное представление.)
источник
sudo make me sandwich
.&& test -e ./a
Довольно компактное решение, которое игнорирует рекомендацию № 2 (127 символов, включая некоторые ненужные пробелы). Я следую практике уборки после себя. Не помещайте другие файлы в тот же каталог, что и make-файл! Также обратите внимание, что make-файл должен быть вызван
Makefile
, другие имена не будут работать.Использование:
Мне нравится, как этот справляется с рекомендацией № 3. Только одно нажатие Shiftимеет значение.
источник
Это решение не соответствует руководству № 2 - или имеет неопределенный подсчет в форме сэндвича? Вначале я остановился на некой палиндромной теме, но я мог найти только много способов сделать симметрию линий, не прибегая к хромоте
real code # ecod laer
. Я не относился к руководству № 1 очень серьезно, эстетика на первом месте.Помните, что это make-файл; в 3 последовательных строк , начинающихся с
if
,rm
иecho
начать с язычком. Другие отступы начинаются с пробелов.Использование (команды могут быть введены в любом порядке):
Что касается руководящего принципа № 3, это не скрыто, просто немного странно. Некоторые намеки:
источник
Вот первый шаг с использованием другой и более простой техники:
Я почти уверен, что с этим можно многое сделать - например, заставить его реагировать на другие команды ввода. Мне придется поработать над обфускацией корневого переключателя и фактическим приготовлением бутерброда.
источник