Votre tâche est de créer un programme qui affichera le texte suivant, attente pour l'utilisateur d'appuyer sur une touche (il est correct d'ignorer les clés comme ctrl
, alt
, caps lock
, etc., tant que touches comme letters
, numbers
, symbols
et enter
ne sont pas ignorés), puis terminez le programme:
Press any key to continue...
Les retours à la ligne sont autorisés. Le programme doit quitter immédiatement après avoir appuyé sur une touche. En outre, le programme doit être relativement portable (c'est-à-dire sans en-têtes ou modules spécifiques à un système d'exploitation, exécuté en dehors d'un IDE, etc.).
L'invite doit être exactement comme indiqué ci-dessus, à moins qu'un retour à la ligne ne puisse être évité.
C'est du code-golf , donc la réponse la plus courte en octets est gagnante. C’est aussi ma première question sur le code de golf. Je vous prie de m'excuser si je ne connais pas les règles en matière de PPCG.
PAUSE
serait-il une réponse valable (les points de suspension sont répartis de...
à. . .
)?pause
fonctions de la plupart des langages sont probablement insensibles aux touches telles que Caps-Lock ou Control (seule). Peut-être devriez-vous préciser si le programme est autorisé à ne pas remarquer ces clésRéponses:
SmallBasic,
1817 octets17 octets
18 octets
la source
TextWindow.Show()
? Basé sur ce site qui devrait avoir le même effet.Lot, 46 octets
Parce que
pause
la sortie contient un espace avant chaque.
.la source
x
? Ensuite, un fichier contenantx
le texte serait crééPress any key to continue . . .
. Enregistre 2 octets, mais je ne sais pas si cela va à l’encontre de ce défi ou de toute échappatoire standard.@choice /n /m Press any key to continue...
était également possible il y a quelques décennies.choice
équivaut àchoice /c SN
(poursim
(oui) etnão
(non) en portugais).HTML + JavaScript (ES6), 36 + 25 = 61 octets
Vous ne pouvez pas vraiment quitter un programme JavaScript, donc effacer la page Web est le meilleur que je puisse penser.
HTML + JavaScript (ES6), 33 + 28 = 61 octets
Autre solution suggérée par @LarsW et qui redirige vers
about:blank
.HTML / JavaScript, 60 octets
Une autre solution géniale de @Ismael Miguel qui n’utilise pas JS autonome. 1 octet enregistré!
HTML + JavaScript (ES6), 26 + 28 = 54 octets
Encore une autre solution de @George Reith utilisant l’écriture de documents.
HTML + JavaScript (ES7), 23 + 28 = 51 octets
Même programme utilisant l' opérateur de liaison ES7 proposé :
Comme la plupart de ces solutions ne m'appartiennent pas, faites preuve de courtoisie et votez-les dans les commentaires!
la source
<html onkeyup=this.innerHTML=''>Press any key to continue...
<- 60 octets. Essayez-le sur jsfiddle.net/xhb69401 (cela fonctionne avec les deux<html>
et<body>
)onkeyup=_=>document.open()
avecPress any key to continue...
pour un total de 54 octets.onkeyup=::document.open
.MATL, 35 octets
Explication
la source
Y.
non plus. Peut-être que le PO devrait clarifier. Des touches telles que Control et Caps-Lock échoueront dans la plupart des solutionsTI-Basic, 55 octets
Fondamentalement, il boucle jusqu'à ce qu'une touche soit enfoncée. Dommage que les lettres minuscules soient deux octets chacune dans TI-Basic ...
PS Voir le commentaire de @GoldenRatio pour une explication sur la façon dont cela fonctionne. C'est du génie!
la source
:Disp "Press any
(N'oubliez pas: dans votre code, cela compte) etDisp "key to continuesin(
(Le péché force ... dans un octet pour compenser la nouvelle ligne et disp, et cela économise un espace entre les clés et les clés)getKey
être 2 octets quand il est en fait 1. Je suppose avecText(
ouOutput(
vous pourriez tout adapter sur une seule ligne. Mais votre suggestion est meilleure. Je n'ai pas pensé à utiliser les points de suspension implicites à la fin d'une ligne. Merci encore, je vais éditer ça maintenant.Disp
ou non sur deux lignes (mais ce n’est pas toujours le cas).Bash,
464342 octetsEnregistré 1 octet grâce à @DigitalTrauma
Utilise le
read
intégré.-r
s'assure qu'il ne permet pas à l'utilisateur de saisir des échappements.-n 1
permet qu'un seul personnage.-p
est l'invitela source
-n 1
. Cela fonctionne sans frapper entrée pour moi cependant (v3.2.57) et sur ma machine debain (v4.3.30)-rn1
sauve 1 byteHaskell ,
5150 octets (Merci @ villou24)Essayez-le en ligne!
la source
getChar
place.putStr
et la chaîne.Octave / MATLAB, 42 octets
la source
QBasic ( QB64 ), 37 (42?) Octets
Malheureusement, l'invite de fin de programme intégrée à QBasic n'a pas les points de suspension, nous devrons donc l'imprimer nous-mêmes:
(
SLEEP
sans argument attend jusqu'à ce qu'une touche soit pressée.)Ce code fait ce que la question demande littéralement, mais il ne semble pas que cela corresponde à l'esprit de la question car, bien sûr, QBasic affiche ensuite "Appuyez sur n'importe quelle touche pour continuer" et attend une pression de touche avant de retourner à l'EDI. En voici un qui va directement à l'IDE, pour +5 octets:
STOP
est une instruction de débogage. Dans QBasic normal, il définit un point d'arrêt: l'exécution s'arrête et nous retournons à l'EDI, mais l'exécution peut être reprise avec F5. Il n'est pas clair si cela compterait comme le programme "sortant". Cependant, j'utilise l'émulateur QB64, qui ne peut pas faire de points d'arrêt. En cas de problèmeSTOP
, il s’arrête simplement et revient directement à l’IDE sans le message redondant "Appuyez sur n’importe quelle touche".la source
LOCATE
simplement les points après, mais QBasic efface toute la ligne du bas lorsqu'il imprime ce message ...Traitement,
8981 octetsExplication
Cela est nécessaire car j'utilise plus d'une fonction dans mon programme. Tout ce qui se trouve à l'intérieur
setup()
est appelé, dans ce cas, la chaîne"Press any key to continue..."
.Vérifie si
key
(key
contiendra toujours la valeur int de la dernière touche enfoncée) est supérieur à0
(c'est-à-dire pas un octet nul). Si la condition est remplie, le programme se ferme.draw()
garantit que le programme continuera toujours à rechercher une clé au lieu de s’arrêter une fois le programme démarré.(C'est ce qui se passe lorsqu'une version d'un langage semblable à Java est toujours verbeuse ...)
la source
void steup(){...}
parstatic{...}
Pascal,
75 à65 octetsCela a été testé avec le compilateur Free Pascal, version 3.0.0.
Cela peut fonctionner avec TurboPascal 7 ou une version plus récente.
Sadly, I can't replace
readkey
withreadln
since the challenge requires that any key be accepted.I've tested this code on http://rextester.com/l/pascal_online_compiler, with and without supplying an input.
As expected, the program is terminated after 10s, since it sits waiting for a keypress that never happens.
Thanks to @manatwork for saving me 10 bytes by proving me wrong, and showing that I don't need the
program _;
.la source
program
keyword. (Actually I never met such ancient implementation that did.)program
and it complained. Also, I sometimes use TurboPascal. That one requires (notice: requires) theprogram
there. If you know any place I can test where it runs without theprogram
, I will remove it. I hate having it there. And thatuses Crt;
.program;
instead of actually removing that bit. Thanks for alerting me to that.Scratch, 81 bytes
(Scratchblocks link)
If you wanted it to stop the entire program when you pressed a key (including other threads) you'd have to add a
stop all
. If you want to get rid of the say dialog you need an emptysay
block (stop all
works as well).Convenient that Scratch has a builtin for this!
la source
Bash
484442 bytes@mame98 Thanks for saving 4 bytes.
@RaisingAgent Thanks for saving 2 bytes.
la source
read -srn1 -p".."
and remove the last space in the promt quote. Also, I'm not sure if you need the 's' flag_
&-s
R, 56 bytes
This works in Linux and OSX terminals.
la source
Ruby (2.3) (+ Batch),
5255545346 bytesNow 46 bytes thanks to Alexis Andersen.
Note: Tested on Windows, might not work if there is no
pause
command.Explanation
Puts
the required text:End the line:
Run the Batch
pause
command and pipe output tonul
:la source
pause>nul
` or even shorter, just use gets (also, there's no good way to include a backtick in a code block in a comment)gets
wait for enter, and not just any key?Java, 127 bytes
Note: the console must be set to raw mode in order for this to work.
la source
Also, the program must be fairly portable (i.e no OS-specific headers or modules, runs outside of an IDE, etc.)
if you follow that SO link there is no OS-independent way to do this. Meaning, the answer you linked is equally as valid as this one.SmileBASIC, 52 bytes
la source
Python 2, 110 bytes
la source
Mathematica, 62 bytes
Explanation
la source
SmileBASIC, 55 bytes
Explained:
la source
WHILE""==INKEY$()WEND
is smallerPython 2/3 POSIX, 85 bytes
la source
Python 3, 65 bytes
Requires the Windows version of Python.
msvcrt.getch() doesn't wait for the enter key to be pressed like input(), it returns the first key pressed.
Python Docs for msvcrt.getch(): https://docs.python.org/3/library/msvcrt.html#msvcrt.getch
Thanks to @Fliptack for saving some bytes
la source
import msvcrt
somewherefrom msvcrt import*
appears to be 1 byte shorterNode.js,
10210199 bytesla source
with
: pastebin.com/BhrAyq2Kwith
has saved me bytes (or byte)stdout.write`Press any key to continue...`
will save 2 bytes in ES6.process.stdout.write
doesn't do implicit conversions to string (it just errors).Sinclair ZX81/Timex TS1000 BASIC: Method 1 approximately 41 bytes
Method 2 approximately 38 BYTES
I prefer method 1 as on the ZX81, there is a screen flicker when
PAUSE
is called, and if you want long enough (providing the ZX81 doesn't overheat or crash) the pause will eventually come to an end, whereas method 1 is stuck in an infinite loop until a key is pressed, and no screen flicker.I'll work out the correct number of bytes used later when I have the right bit of BASIC that will tell me. By the way, using VAL "x" instead of the number saves valuable RAM on a ZX81 (I think that this is the same for the ZX Spectrum as well).
la source
1 PRINT "Press any key to continue...": PAUSE 4e4
PAUSE 0
pauses for ever.PAUSE 0
in ZX81 BASIC does not pause forever.Perl 5, 79 bytes
used as:
No prizes of course. I'm sure some perl person will have a better way.
(89 bytes if the interpreter invocation as well needs to be included in the count)
la source
system
in his bytecount, so I don't know what you meant with that comment.$|=1
isn't necessary, you have a space afterprint
, you can drop the parenthesis around the arguments ofread
, you can use backticks instead of system, and finally,print
returns 1, so you can use it instead of the litteral1
in the call toread
. So in the end, we get:perl -e '`stty cbreak`;read STDIN,$a,print"Press any key to continue..."'
say
, although I think this approach fails the "portable" requirement. The best portable solution I can find isperl -MTerm::ReadKey -E'say"Press any key to continue...";ReadMode 3;ReadKey'
(52 bytes + 16 bytes for-MTerm::ReadKey<space>
). Be careful, this will screw up your terminal unless you restore the read mode at the end withReadMode 1
.say
, I tend not to use it anymore (I agree mostly with this meta post). Now back to a short code,IO::Prompt
will be shorter thanTerm::ReadKey
(40 + 13 = 53 bytes) :perl -MIO::Prompt -e 'prompt"Press any key to continue... ",-1'
. And as it happens, it's even shorter than what I suggested in my previous comment.-E
argument. The last time I checked, though, J B's answer had been uncontested for four years, so that's what I've followed. Maybe I need to revisit it again. As for IO::Prompt, good find! Although it doesn't work on my Strawberry 5.20.2 on Windows, while Term::ReadKey does.PHP, 73 bytes
Run it in the PHP interactive shell (
php -a
)la source
C#, 101 bytes
Tested on Linux, should run on any system having the .NET libraries and the Common Language Runtime.
Ungolfed program:
CTRL, ALT, SHIFT are ignored. The pressed key will be echoed on screen if printable.
Echo can be disabled by replacing C.Read() with C.ReadKey(0<1) at the cost of 6 more bytes.
la source
8th, 47 bytes
This program ignores keys like ctrl, alt, caps lock. Quits with keys like letters, numbers, symbols, and enter.
Explanation
la source
cr
C#, 29 bytes
Not sure if this is considered valid because it prints:
But there is a Batch answer that prints this as well.
la source
Forth (gforth), 39 bytes
(Yes, there is already an 8th solution but this is shorter)
la source