Desafio: Escreva um makefile, o que levaria a este comportamento:
% make me a sandwich
What? Make it yourself
% sudo make me a sandwich
Okay
Regras:
- Deve funcionar em uma máquina Linux, onde o usuário não é root, mas pode usar
sudo
. - Não devo dizer
Okay
a nenhum comando make mais curto (por exemplosudo make sandwich
). - O segundo comando deve funcionar por causa
sudo
, não porque é a segunda invocação.
Diretrizes:
- Mantenha-o curto (afinal, é um site da Code Golf).
- Seria bom se realmente fizesse um sanduíche.
- Tente esconder de maneira inteligente o porquê da
sudo
diferença.
O vencedor será decidido por votos.
popularity-contest
Ugoren
fonte
fonte
make
.Respostas:
Ok, eu vou morder. Isso não segue necessariamente a diretriz 3, mas faz um bom trabalho nas outras duas diretrizes. Ele também limpa a si próprio, como qualquer bom sanduíche.
(Menos buggy e, espero, um pouco menos chato do que minha submissão inicial.)
fonte
sudo make me sandwich
.&& test -e ./a
Uma solução bastante compacta que ignora a diretriz nº 2 (127 caracteres, incluindo alguns espaços em branco desnecessários). Eu sigo a prática de breadbox de limpeza depois de mim mesmo. Não coloque nenhum outro arquivo no mesmo diretório que o makefile! Além disso, observe que o makefile deve ser chamado
Makefile
, outros nomes não funcionarão.Uso:
Gosto da maneira como este lida com a diretriz nº 3. Apenas um toque de Shiftfaz a diferença.
fonte
Essa solução não segue a diretriz nº 2 - ou é vagamente em forma de sanduíche? Eu comecei com um tipo de tema palíndromo no começo, mas só consegui encontrar muitas maneiras de tornar as linhas simétricas sem recorrer a coxas
real code # ecod laer
. Não levei a diretriz 1 muito a sério, a estética vem primeiro.Lembre-se de que é um makefile; as 3 linhas sucessivas começando com
if
,rm
eecho
começam com um separador. As outras linhas recuadas começam com espaços.Uso (os comandos podem ser emitidos em qualquer ordem):
Quanto à diretriz 3, isso não é inteligentemente oculto, apenas um pouco estranho. Algumas dicas:
fonte
Aqui está o primeiro passo, usando uma técnica diferente e mais simples:
Tenho certeza de que há mais coisas que posso fazer com isso - faça com que ele responda a outros comandos de entrada, por exemplo. Vou ter que trabalhar na ofuscação do switch raiz e na fabricação de sanduíches.
fonte