Ihre Aufgabe ist es, ein Programm zu erstellen , die den folgenden Text werden angezeigt, wartet auf den Benutzer eine Taste drücken (es okay ist , Tasten wie zu ignorieren ctrl
, alt
, caps lock
etc., solange Tasten wie letters
, numbers
, symbols
und enter
werden nicht ignoriert), und beenden Sie dann das Programm:
Press any key to continue...
Nachgestellte Zeilenumbrüche sind zulässig. Das Programm muss sofort nach dem Drücken einer Taste beendet werden. Außerdem muss das Programm ziemlich portabel sein (dh es dürfen keine betriebssystemspezifischen Header oder Module außerhalb einer IDE usw. ausgeführt werden).
Die Eingabeaufforderung muss genau wie oben gezeigt sein, es sei denn, eine nachgestellte Zeile kann nicht vermieden werden.
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes. Dies ist auch meine erste Code-Golf-Frage. Ich entschuldige mich, wenn ich die Regeln für PPCG nicht kenne.
PAUSE
eine gültige Antwort ( Auslassungspunkte von...
bis. . .
)?pause
Sprachfunktionen sind wahrscheinlich unempfindlich gegenüber Tasten wie Feststelltaste oder Steuerung (allein gedrückt). Vielleicht sollten Sie klären, ob das Programm diese Tasten nicht bemerken darfAntworten:
SmallBasic,
18 -17 Bytes17 Bytes
18 Bytes
quelle
TextWindow.Show()
? Basierend auf dieser Seite sollte das den gleichen Effekt haben.Batch, 46 Bytes
Denn
pause
die Ausgabe enthält jeweils ein Leerzeichen.
.quelle
x
? Dann würde eine Dateix
erstellt, die den Text enthältPress any key to continue . . .
. Spart 2 Bytes, aber ich bin mir nicht sicher, ob dies gegen diese Herausforderung oder gegen Standardlücken verstößt.@choice /n /m Press any key to continue...
einiger Zeit auf choice.exe-freiem System, aber ich habe das Gefühl, dass es vor einigen Jahrzehnten auch möglich war.choice
gleichbedeutend mitchoice /c SN
(fürsim
(ja) undnão
(nein) in Portugiesisch).HTML + JavaScript (ES6), 36 + 25 = 61 Byte
Sie können ein JavaScript-Programm nicht wirklich beenden, daher ist das Löschen der Webseite das Beste, was ich mir vorstellen kann.
HTML + JavaScript (ES6), 33 + 28 = 61 Byte
Alternative von @LarsW vorgeschlagene Lösung , die zu umleitet
about:blank
.HTML / JavaScript, 60 Byte
Eine weitere großartige Lösung von @Ismael Miguel , die kein eigenständiges JS verwendet. 1 Byte gespeichert!
HTML + JavaScript (ES6), 26 + 28 = 54 Byte
Noch eine andere Lösung von @George Reith , die das Schreiben von Dokumenten nutzt.
HTML + JavaScript (ES7), 23 + 28 = 51 Byte
Gleiches Programm mit dem vorgeschlagenen ES7-Bindungsoperator :
Da die meisten dieser Lösungen nicht von mir stammen, machen Sie bitte eine Höflichkeitserklärung und stimmen Sie sie in den Kommentaren ab!
quelle
<html onkeyup=this.innerHTML=''>Press any key to continue...
<- 60 Bytes. Versuchen Sie es auf jsfiddle.net/xhb69401 (es funktioniert mit beiden<html>
und<body>
)onkeyup=_=>document.open()
mitPress any key to continue...
für eine Gesamtsumme von 54 Bytes.onkeyup=::document.open
.MATL, 35 Bytes
Erläuterung
quelle
Y.
auch nicht. Vielleicht sollte das OP klarstellen. Tasten wie Steuerung und FeststelltasteTI-Basic, 55 Byte
Grundsätzlich wird eine Schleife ausgeführt, bis eine Taste gedrückt wird. Schade, dass Kleinbuchstaben in TI-Basic jeweils zwei Byte lang sind ...
PS Siehe den Kommentar von @GoldenRatio für die Erklärung, wie dies funktioniert. Es ist ein Genie!
quelle
:Disp "Press any
(Vergessen Sie nicht: in Ihrem Code zählt es) undDisp "key to continuesin(
(Die Sünde zwingt einen ... in 1 Byte, die neue Zeile und die neue Anzeige auszugleichen, und das spart Platz zwischen any und key)getKey
es wären 2 Bytes, wenn es tatsächlich 1 ist. Ich nehme an,Text(
oderOutput(
Sie könnten alles in eine Zeile schreiben . Aber dein Vorschlag ist besser. Ich habe nicht daran gedacht, die impliziten Auslassungspunkte am Ende einer Zeile zu verwenden. Nochmals vielen Dank, ich werde das jetzt bearbeiten.Disp
auf zwei Zeilen aufteilen oder nicht (dies ist jedoch nicht immer der Fall).Bash,
464342 Bytes1 Byte dank @DigitalTrauma gespeichert
Verwendet die
read
eingebaute.-r
Stellt sicher, dass der Benutzer keine Escape-Zeichen eingeben kann.-n 1
erlaubt nur ein Zeichen.-p
ist die Eingabeaufforderungquelle
-n 1
. Es funktioniert jedoch ohne Eingabetaste für mich (v3.2.57) und auf meinem Debain-Rechner (v4.3.30)-rn1
speichert 1 ByteHaskell ,
5150 Bytes (Danke @ villou24)Probieren Sie es online!
quelle
getChar
stattdessen verwenden.putStr
und der Zeichenfolge entfernen .Oktave / MATLAB, 42 Bytes
quelle
QBasic ( QB64 ), 37 (42?) Bytes
Leider hat die eingebaute Programmende-Eingabeaufforderung von QBasic keine Auslassungspunkte, daher müssen wir sie selbst ausdrucken:
(
SLEEP
Ohne ein Argument wartet bis ein Tastendruck.)Dieser Code macht das, wonach die Frage buchstäblich fragt, aber es sieht nicht so aus, als würde er zum Grundgedanken der Frage passen, da QBasic dann "Drücken Sie eine beliebige Taste, um fortzufahren" anzeigt und auf einen Tastendruck wartet, bevor Sie zur IDE zurückkehren. Hier ist eine, die für +5 Bytes direkt an die IDE geht:
STOP
ist eine Debugging-Anweisung. In QBasic wird ein Haltepunkt gesetzt: Die Ausführung wird angehalten und wir kehren zur IDE zurück, die Ausführung kann jedoch mit F5 wieder aufgenommen werden. Es ist unklar, ob dies als "Verlassen" des Programms gelten würde. Ich verwende jedoch den QB64-Emulator, der keine Haltepunkte ausführen kann. Bei einer BegegnungSTOP
wird es einfach angehalten - ohne die redundante Meldung "Drücken Sie eine beliebige Taste" kehren Sie direkt zur IDE zurück.quelle
LOCATE
nur die Punkte danach zu drucken, aber QBasic löscht die gesamte unterste Zeile, wenn diese MeldungVerarbeitung,
8981 BytesErläuterung
Dies ist erforderlich, da ich in meinem Programm mehrere Funktionen verwende. Alles drinnen
setup()
wird aufgerufen, in diesem Fall der String"Press any key to continue..."
.Prüft, ob
key
(key
enthält immer den int-Wert der zuletzt gedrückten Taste) mehr als0
(dh kein Null-Byte) ist. Wenn die Bedingung erfüllt ist, wird das Programm beendet.draw()
stellt sicher, dass das Programm immer nach einem Schlüssel sucht, anstatt zu stoppen, sobald das Programm gestartet wird.(Das Gefühl, wenn eine in einer Java-ähnlichen Sprache eingebaute Sprache noch wortreich ist ...)
quelle
void steup(){...}
mitstatic{...}
Pascal,
7565 BytesDies wurde mit dem Free Pascal Compiler, Version 3.0.0 getestet.
Es funktioniert möglicherweise mit TurboPascal 7 oder neuer.
Leider kann ich nicht ersetzen
readkey
mit ,readln
da die Herausforderung erfordert , dass jede Taste angenommen werden.Ich habe diesen Code unter http://rextester.com/l/pascal_online_compiler mit und ohne Eingabe getestet .
Wie erwartet wird das Programm nach 10s beendet, da es auf einen Tastendruck wartet, der niemals eintritt.
Vielen Dank an @manatwork , der mir 10 Bytes gespart hat, indem er mir das Gegenteil bewiesen hat und mir gezeigt hat, dass ich das nicht brauche
program _;
.quelle
program
Schlüsselwörtern. (Eigentlich habe ich noch nie eine so alte Implementierung getroffen.)program
und es hat sich beschwert. Außerdem benutze ich manchmal TurboPascal. Das benötigt man (Hinweis: benötigt ) dasprogram
gibt. Wenn Sie einen Ort kennen, an dem ich testen kann, wo es ohne läuftprogram
, werde ich es entfernen. Ich hasse es, es dort zu haben. Und dasuses Crt;
.program;
anstatt das Bit tatsächlich zu entfernen. Danke, dass Sie mich darauf aufmerksam gemacht haben.Kratzer, 81 Bytes
( Scratchblocks Link )
Wenn Sie möchten, dass das gesamte Programm gestoppt wird , wenn Sie eine Taste (einschließlich anderer Threads) gedrückt haben, müssen Sie eine hinzufügen
stop all
. Wenn Sie den say-Dialog loswerden möchten, benötigen Sie einen leerensay
Block (stop all
funktioniert auch).Praktisch, dass Scratch eine integrierte Funktion dafür hat!
quelle
Bash
484442 Bytes@ mame98 Danke, dass du 4 Bytes gespart hast.
@RaisingAgent Vielen Dank für das Speichern von 2 Bytes.
quelle
read -srn1 -p".."
und das letzte Leerzeichen im Promt-Zitat entfernen. Ich bin mir auch nicht sicher, ob du die 's' Flagge_
&-s
R, 56 Bytes
Dies funktioniert in Linux- und OSX-Terminals.
quelle
Ruby (2,3) (+ Stapel),
5255545346 BytesJetzt 46 Bytes dank Alexis Andersen.
Hinweis: Unter Windows getestet, funktioniert möglicherweise nicht, wenn kein
pause
Befehl vorhanden ist.Erläuterung
Puts
der gewünschte Text:Beende die Zeile:
Führen Sie den
pause
Befehl Batch und die Pipe-Ausgabe aus, umnul
:quelle
pause>nul
` oder noch kürzer, verwenden Sie einfach gets (es gibt auch keine gute Möglichkeit, ein Backtick in einen Codeblock in einem Kommentar aufzunehmen)gets
auf Eingabe, und nicht irgendein Schlüssel?Java, 127 Bytes
Hinweis: Damit dies funktioniert, muss sich die Konsole im Raw-Modus befinden .
quelle
Also, the program must be fairly portable (i.e no OS-specific headers or modules, runs outside of an IDE, etc.)
Wenn Sie diesem SO-Link folgen, gibt es keine betriebssystemunabhängige Möglichkeit, dies zu tun. Das heißt, die von Ihnen verknüpfte Antwort ist genauso gültig wie diese.SmileBASIC, 52 Bytes
quelle
Python 2, 110 Bytes
quelle
Mathematica, 62 Bytes
Erläuterung
quelle
SmileBASIC, 55 Bytes
Erklärt:
quelle
WHILE""==INKEY$()WEND
ist kleinerPython 2/3 POSIX, 85 Bytes
quelle
Python 3, 65 Bytes
Benötigt die Windows-Version von Python.
msvcrt.getch () wartet nicht wie input () auf das Drücken der Eingabetaste, sondern gibt die erste gedrückte Taste zurück.
Python-Dokumente für msvcrt.getch (): https://docs.python.org/3/library/msvcrt.html#msvcrt.getch
Vielen Dank an @Fliptack für das Speichern einiger Bytes
quelle
import msvcrt
irgendwofrom msvcrt import*
scheintNode.js,
10210199 Bytesquelle
with
: pastebin.com/BhrAyq2Kwith
hat mich Bytes (oder Byte) gespeichertstdout.write`Press any key to continue...`
werden in ES6 2 Bytes gespart.process.stdout.write
keine impliziten Konvertierungen in Zeichenfolgen ausführt (nur Fehler).Sinclair ZX81 / Timex TS1000 BASIC: Methode 1, ungefähr 41 Bytes
Methode 2 ungefähr 38 Bytes
Ich bevorzuge Methode 1 wie beim ZX81, es gibt ein Bildschirmflimmern, wenn
PAUSE
aufgerufen wird, und wenn Sie lange genug wollen (vorausgesetzt, der ZX81 überhitzt nicht oder stürzt ab), wird die Pause irgendwann beendet, wohingegen Methode 1 stecken bleibt Eine Endlosschleife, bis eine Taste gedrückt wird, und kein Bildschirmflimmern.Ich werde die richtige Anzahl von Bytes herausfinden, die später verwendet werden, wenn ich das richtige Stück BASIC habe, das es mir sagt. Übrigens spart die Verwendung von VAL "x" anstelle der Zahl wertvollen RAM auf einem ZX81 (ich denke, dass dies auch für das ZX Spectrum gilt).
quelle
1 PRINT "Press any key to continue...": PAUSE 4e4
PAUSE 0
pausiert für immer.PAUSE 0
in ZX81 BASIC pausiert nicht für immer.Perl 5, 79 Bytes
benutzt als:
Natürlich keine Preise. Ich bin sicher, dass einige Perl-Leute einen besseren Weg haben werden.
(89 Bytes, wenn auch der Interpreteraufruf in die Zählung einbezogen werden soll)
quelle
system
in seinem Bytecount gezählt, also weiß ich nicht, was Sie mit diesem Kommentar gemeint haben.$|=1
ist nicht erforderlich, Sie haben ein Leerzeichen danachprint
, Sie können die Klammer um die Argumente von setzenread
, Sie können Backticks anstelle von system verwenden und schließlichprint
1 zurückgeben, sodass Sie es anstelle von verwenden können das wörtliche1
im aufruf anread
. Also am Ende bekommen wir:perl -e '`stty cbreak`;read STDIN,$a,print"Press any key to continue..."'
say
, obwohl ich denke, dieser Ansatz scheitert an der "portablen" Anforderung. Die beste tragbare Lösung, die ich finden kann, istperl -MTerm::ReadKey -E'say"Press any key to continue...";ReadMode 3;ReadKey'
(52 Bytes + 16 Bytes für-MTerm::ReadKey<space>
). Seien Sie vorsichtig, dies wird Ihr Terminal vermasseln, es sei denn, Sie stellen den Lesemodus am Ende mit wieder herReadMode 1
.say
, ich neige dazu, es nicht mehr zu verwenden (ich stimme meistens mit diesem Meta-Post überein ). Nun zurück zu einem kurzen Code,IO::Prompt
wird kürzer sein alsTerm::ReadKey
(40 + 13 = 53 Bytes):perl -MIO::Prompt -e 'prompt"Press any key to continue... ",-1'
. Und es ist sogar noch kürzer als in meinem vorherigen Kommentar vorgeschlagen.-E
Arguments sehen. Als ich das letzte Mal nachgesehen habe, war JBs Antwort seit vier Jahren unbestritten, also bin ich dem gefolgt. Vielleicht muss ich es noch einmal überdenken. Wie für IO :: Prompt, gute Entdeckung! Obwohl es auf meinem Strawberry 5.20.2 unter Windows nicht funktioniert, während Term :: ReadKey dies tut.PHP, 73 Bytes
Führen Sie es in der interaktiven PHP-Shell aus (
php -a
)quelle
C #, 101 Bytes
Getestet unter Linux, sollte auf jedem System mit den .NET-Bibliotheken und der Common Language Runtime ausgeführt werden.
Ungolfed-Programm:
STRG, ALT, UMSCHALT werden ignoriert. Die gedrückte Taste wird auf dem Bildschirm wiederholt, wenn sie gedruckt werden kann.
Das Echo kann deaktiviert werden, indem C.Read () durch C.ReadKey (0 <1) ersetzt wird, was weitere 6 Byte kostet.
quelle
8. 47 Bytes
Dieses Programm ignoriert Tasten wie Strg, Alt, Feststelltaste. Beendet mit Tasten wie Buchstaben, Zahlen, Symbolen und Enter.
Erläuterung
quelle
cr
C #, 29 Bytes
Ich bin mir nicht sicher, ob dies als gültig angesehen wird, da Folgendes gedruckt wird:
Aber es gibt auch eine Stapelantwort , die dies druckt.
quelle
Viertens (gviertens), 39 Bytes
(Ja, es gibt bereits eine 8. Lösung, diese ist jedoch kürzer)
quelle