Rapide! Échappez au trou noir!

28

C'est l'année 87539319 et la marche solitaire dans l'espace est désormais monnaie courante, de nombreuses personnes voyagent seules dans l'espace, propulsées par un jetpack sur le dos, programmant leur cours avec un ordinateur personnel et un clavier au fur et à mesure.

Vous êtes une de ces personnes; vous étiez sur une belle sortie dans l'espace paisible, quand, tout d'un coup, vous avez été pris au piège par la gravité d'un trou noir!

En plongeant vers ce trou noir, en spirale toujours plus rapide vers l'intérieur, vous réalisez que votre seule chance de survie est de diffuser un message de détresse et d'espérer qu'un navire à proximité viendra vous sauver.

Donc, vous sortez votre clavier et commencez à taper un programme.

Votre programme peut être dans n'importe quelle langue et doit imprimer HELP!sur stdout (votre PC diffuse tout stdout loin dans les profondeurs de l'espace.)

Cependant, comme vous êtes près d'un trou noir, votre clavier est lentement déchiré!

Supposons que vous utilisez un clavier QWERTY comme celui ci-dessous et que le trou noir est à votre gauche;

DISPOSITION DU CLAVIER QWERTY

N'oubliez pas que les décalages gauche et droit sont deux touches différentes.

après chaque pression de touche, la rangée la plus à gauche de votre clavier (touches couvertes par la ligne rouge la plus à gauche) est arrachée et jetée dans le trou noir!

Donc, votre première pression de touche pourrait être une touche du clavier, mais à partir de là aucun des plus à gauche Tab , Caps, Shift, Ctrlou les `touches peuvent être utilisées, tout . (r-shift et r-ctrl peuvent toujours être utilisés)

Après la prochaine touche, les touches 1, Q, A, Zet Altsont jetés dans l'abîme, et ne peuvent être utilisés par la suite. Après cela, vous perdez Space, X, S, W, 2et ainsi de suite.

De toute évidence, vous souhaitez terminer votre programme le plus rapidement possible, afin que le temps de sauvetage soit augmenté; par conséquent, c'est le golf de code, et le programme le plus court en appuyant sur les touches gagne!

Chaque réponse doit fournir une liste de touches, donc, si ma réponse était ce programme (dans la langue squardibblyack)

!HELP\.

une liste de clés pourrait ressembler à:

Shift!HELP relâcher le décalage \.

longueur: 8

Je crains que ce défi ne soit trop difficile, mais j'aimerais voir le genre de réponses soumises!

theonlygusti
la source
13
Je sous-estime cela parce que cela semble trop contraint pour avoir beaucoup de créativité.
isaacg
4
Pouvons-nous supposer que l'utilisation du shell python sans printqualifie STDOUT?
user80551
3
Et si mon clavier a un pavé numérique?
mbomb007
4
Cela pourrait être légèrement mieux avec les touches fléchées.
user80551
6
Le verrouillage des majuscules est-il toujours efficace s'il a été enfoncé alors que la touche a disparu?
jscs

Réponses:

42

CJam, 11 frappes

Le code est

"HELP*")9-

et la liste des touches est

Shift"HELP*") relâcher le décalage 9-

et voici une démonstration de son apparence:

entrez la description de l'image ici

et voici comment fonctionne le code:

"HELP*"              "This puts the string HELP* on stack";
       )             "This takes out the last character of the string and puts it
                      on the stack as a character";
        9-           "This simply reduces 9 from the ASCII code of * character
                      present on the stack which makes it an !";
                     "CJam automatically prints everything that is on stack";

Essayez le code ici

Optimiseur
la source
2
Utiliser l'astérisque était assez intelligent! Je n'avais jamais pensé à ça.
theonlygusti
2
Eh bien, je n'ai pas pu le faire dans GolfScript. C'est un peu trop long. La conversion d'un entier en ascii est inefficace. "HELP*")9-[]+''+. Je ne peux pas taper les quatre derniers.
mbomb007
3
Je savais juste que CJam aurait une réponse ...
Jerry Jeremiah
9
Ainsi, l'une des langues les plus pérennes au monde est apparemment CJam.
Fors
5
Observez votre doigt lorsque vous frappez le E, il semble qu'il pourrait entrer dans l'abîme!
Canadian Luke REINSTATE MONICA
3

rs , 10 frappes (suppose que l'utilisateur utilise Nano)

Ou un éditeur équivalent où Shiftne sélectionne pas de texte.

Ce n'est pas vraiment un langage de programmation, mais s'il sedpeut être utilisé sur Code Golf, il rspeut l'être.

Right Shift ! Left E Left H Right L P Enter

HELP!

Il remplace simplement la chaîne vide par "HELP!", L'imprimant efficacement à l'écran. À peu près équivalent au script sed:

s/^/HELP!/

La partie cool est que rsmet automatiquement ^/devant un modèle de remplacement où le délimiteur ( /) n'est pas trouvé. Pratique pour indenter le code.

kirbyfan64sos
la source
Vous oubliez que Enterc'est aussi un accident vasculaire cérébral. 10 coups.
vapcguy
1
@vapcguy C'est vrai. Fixé.
kirbyfan64sos
-3

Je crois que le plus rapide que cela pourrait être fait dans n'importe quel script est Random's 11 avec Pyth, car n'importe quelle langue va nécessiter un caractère, comme "p" ou une citation ou un astérisque ou quelque chose, puis le mot HELP!, et ça Eva aller rapide, ce qui signifie que des touches supplémentaires sont pressées pour déplacer le curseur vers l'arrière avant Ede l'introduire H, comme il l'a trouvé, puis vers l'avant pour Let P.

Si vous avez quelque chose qui nécessite un mot de commande, comme dispou echo, vous devez d'abord faire un espace avant qu'il ne soit arraché, le Shiftet !, puis utilisez la Hometouche pour commencer votre mot et les touches fléchées comme Random décrit pour HELP. Mais vous vous frayez un chemin jusqu'à ce que vous soyez juste aspiré ou perdiez les clés dont vous avez besoin trop rapidement pour faire quoi que ce soit. Il n'y a qu'un maximum de 14 caractères, et cela suppose que votre dernier est \ou |. Il vous en faut 10 juste pour faire HELP!:

SHIFT ! HOME E LT ARROW H RT ARROW L P ENTER

Le définissant "ou *ou Pserait pressé juste avant le H. 11 doit donc être le plus rapide. Ou 9 si nous omettons l'exclamation et tout en majuscule et n'avons pas de symbole à taper.

Mais non, moi, étant historien de l'internet en l'an 87 539 319 et tout, et paranoïaque des étrangers et de la pluie de météores, encore moins du trou noir, je ne me contenterais pas de cela. Avant de sortir dans l'espace, je serais prêt, avec cet article, j'aurais trouvé dans mes recherches à remercier pour cela. Je chargerais un fichier texte qui contient déjà "HELP!" en elle, et avoir un programme qui pourrait écrire ma position de coordonnées en utilisant les dernières données de satellite de suivi que nous avons dans ce fichier. Ce programme que j'appellerais "hlp.c", donc ça irait:

7 touches:

c Home h l p . Enter

Je me rends compte que je pourrais raccourcir le nom de mon fichier, mais personne ne veut diffuser sa position par accident en tapant Het Enter, surtout si le programme alerte également les autorités (un peu comme appeler le 911 lorsque vous n'avez pas d'urgence?) choisissez un nom de fichier à 3 lettres, et nous supposerons que nous devons toujours avoir des extensions de fichier avec au .moins 1 caractère. De plus, le nommer hlpau lieu de helpsignifie que nous évitons d'obtenir ces méchantes fonctionnalités d'aide intégrées lorsque nous sommes sur le point de mourir dans un trou noir. Je me rends compte que je pourrais peut - être même taper omettez le .cen passant simplement h l p Enter, mais de cette façon j'éviter ces méchants Please supply file extensionouCannot find hlpdes erreurs quand je suis sur le point de me faire sucer dans un trou noir. "Les ordures, les ordures", après tout, sera toujours une norme à l'avenir.

Donc mon graphique ressemblerait à ceci:

entrez la description de l'image ici

Et cela serait également facile à retenir, car le seul «retard» est de taper en cpremier. Le reste ressemble au nom du fichier.

vapcguy
la source
2
Tout d'abord, si vous envisagez d'exécuter un programme (qui contient déjà le code), il peut être considéré comme une combinaison de plusieurs failles standard . Deuxièmement, il s'agit d'un code-golf, vous devez donc donner le code réel, pas l'hypothèse que le code est déjà présent dans un fichier appelé . Troisièmement, vous êtes censé fournir la liste des frappes pour le programme, et non l'exécution du programme. Quatrièmement, les programmes ...hlp.cC
Optimizer
1
... ne courez pas comme ça. Vous devez d'abord les compiler et les exécuter. Vous devrez donc au moins faire help.exe(ou help.out) pour exécuter le fichier de code compilé. Et enfin, si vous contournez les règles et utilisez tellement les failles, pourquoi ne pas simplement appeler un fichier h.c?
Optimizer
L'intention d'un .cfichier était qu'il pouvait s'agir de CSCRIPT, et non d'un code C réel qui nécessiterait le compilateur. Avoir h.cpu signifier en essayant de taper le nom d'un autre fichier, avec seulement 1 caractère dans le nom, qu'il est accidentellement appelé à la place d'un autre fichier - je l'ai déjà expliqué. Quel que soit le code qui se trouvait dans le .cfichier, que ce soit Console.Log("HELP!"), Console.WriteLine("HELP!")etc., est largement hors de propos, d'autant plus qu'il allait également inclure du code pour s'interfacer avec les satellites afin d'obtenir une correction de coordonnées - quelque chose dont je suis sûr à l'avenir sera ouvert la source.
vapcguy
Mon point avec ce post, aussi, était d'indiquer qu'avoir un nom de fichier, ou quelque chose en dehors des limites des règles, allait être le seul moyen de battre 11 frappes, btw, car il en faut 10 juste pour HELP!, comme je l'ai mentionné avant Kirby, et seulement moins, comme 9, si la capitalisation et l'utilisation de Shift n'avaient pas d'importance et que nous n'avions pas besoin d'avoir un caractère avant ou après HELP, comme avec le point d'exclamation, ou dans le cas de Kirby, devoir taper une clé comme un pou *pour lancer le programme.
vapcguy
Et help.exeet help.outne fonctionnerait pas avec le trou noir déchirant les clés. Le eserait parti au moment où exeest venu, et let est parti en essayant de taper out. Vous pouvez taper le tdans out, tout d' abord, puis appuyez sur Accueil et tapez la HELPpartie, mais si vous pouvez conserver l'extension à 1 caractère, pourquoi pas vous?
vapcguy