Desafío: escriba un archivo MAKE, lo que llevaría a este comportamiento:
% make me a sandwich
What? Make it yourself
% sudo make me a sandwich
Okay
Reglas:
- Debería funcionar en una máquina Linux, donde el usuario no es root pero se le permite usar
sudo
. - No se debe decir
Okay
a ningún comando make más corto (por ejemplosudo make sandwich
). - El segundo comando debería funcionar debido a
sudo
, no porque es la segunda invocación.
Pautas:
- Sea breve (después de todo, es un sitio de Code Golf).
- Sería bueno si realmente hiciera un sándwich.
- Intenta esconder inteligentemente por qué
sudo
hace la diferencia.
El ganador se decidirá por votos.
popularity-contest
Ugoren
fuente
fuente
make
.Respuestas:
Está bien, voy a morder. Esto no necesariamente se adhiere a la directriz # 3, pero hace un trabajo justo en las otras dos pautas. También se limpia después de sí mismo, como debería hacerlo cualquier buen sándwich.
(Menos con errores, y con suerte un poco menos aburrido, que mi presentación inicial).
fuente
sudo make me sandwich
.&& test -e ./a
Una solución bastante compacta que ignora la directriz # 2 (127 caracteres, incluyendo algunos espacios en blanco innecesarios). Sigo la práctica de breadbox de limpiar después de mí mismo. ¡No coloque ningún otro archivo en el mismo directorio que el archivo MAKE! Además, tenga en cuenta que se debe llamar al archivo MAKE
Makefile
, otros nombres no funcionarán.Uso:
Me gusta la forma en que este trata con la directriz # 3. Solo una pulsación de Shifthace la diferencia.
fuente
Esta solución no se adhiere a la directriz n. ° 2, ¿o contar vagamente en forma de sándwich? Comencé con una especie de tema de palíndromo al principio, pero solo pude encontrar tantas formas de hacer que las líneas sean simétricas sin recurrir a cojo
real code # ecod laer
. No tomé muy en serio la directriz # 1, la estética es lo primero.Recuerda que es un archivo MAKE; las 3 líneas sucesivas que comienzan con
if
,rm
yecho
comienzan con una pestaña. Las otras líneas sangradas comienzan con espacios.Uso (los comandos se pueden emitir en cualquier orden):
En cuanto a la directriz # 3, esto no está inteligentemente oculto, solo un poco extraño. Algunos consejos:
fuente
Aquí hay un primer paso usando una técnica diferente y más simple:
Estoy bastante seguro de que hay más que puedo hacer con esto: hacer que responda a otros comandos de entrada, por ejemplo. Tendré que trabajar en la ofuscación del interruptor raíz y en la preparación del sándwich real.
fuente