Défi: Écrivez un makefile, ce qui conduirait à ce comportement:
% make me a sandwich
What? Make it yourself
% sudo make me a sandwich
Okay
Règles:
- Devrait fonctionner sur une machine Linux, où l'utilisateur n'est pas root mais autorisé à l'utiliser
sudo
. - Ne doit pas dire
Okay
à une commande make plus courte (par exemplesudo make sandwich
). - La deuxième commande devrait fonctionner à cause de
sudo
, pas parce que c'est la deuxième invocation.
Des lignes directrices:
- Soyez bref (après tout, c'est un site Code Golf).
- Ce serait bien si cela faisait un sandwich.
- Essayez de cacher intelligemment pourquoi cela
sudo
fait une différence.
Le gagnant sera décidé par vote.
popularity-contest
ugoren
la source
la source
make
.Réponses:
D'accord, je vais mordre. Cela n'adhère pas nécessairement à la directive n ° 3, mais il fait un travail équitable sur les deux autres directives. Il nettoie également après lui-même, comme tout bon fabricant de sandwich devrait le faire.
(Moins buggy, et j'espère un peu moins ennuyeux, que ma soumission initiale.)
la source
sudo make me sandwich
.&& test -e ./a
Une solution assez compacte qui ignore la directive # 2 (127 caractères, y compris des espaces inutiles). Je suis la pratique de la boîte à pain de nettoyer après moi-même. Ne placez aucun autre fichier dans le même répertoire que le makefile! Notez également que le makefile doit être appelé
Makefile
, les autres noms ne fonctionneront pas.Usage:
J'aime la façon dont celle-ci traite de la directive n ° 3. Une simple pression sur Shiftfait la différence.
la source
Cette solution n'adhère pas à la directive n ° 2 - ou est-ce que la forme vaguement en sandwich compte? J'ai commencé sur une sorte de thème palindrome au début, mais je ne pouvais trouver que de nombreuses façons de rendre les lignes symétriques sans avoir recours à des boiteux
real code # ecod laer
. Je n'ai pas pris la directive n ° 1 très au sérieux, l'esthétique passe avant tout.N'oubliez pas que c'est un makefile; les 3 lignes successives commençant par
if
,rm
etecho
commencent par une tabulation. Les autres lignes en retrait commencent par des espaces.Utilisation (les commandes peuvent être émises dans n'importe quel ordre):
Quant à la directive n ° 3, elle n'est pas astucieusement cachée, juste un peu bizarrement. Quelques conseils:
la source
Voici un premier essai en utilisant une technique différente et plus simple:
Je suis presque sûr qu'il y a plus que je peux faire avec cela - faites-le répondre à d'autres commandes d'entrée par exemple. Je vais devoir travailler sur l'obfuscation du commutateur racine et la fabrication du sandwich.
la source