Pada saat runtime, tetap meminta baris input sampai pengguna memasukkan sesuatu (selain baris baru yang kosong), yaitu tidak hanya menekan Enteratau OK. Output atau hasil tidak diperlukan atau dilarang.
Kode semu 1
myform = new form("GUI")
myform.mytxt = new editfield("")
myform.ok = new button("OK")
repeat
waitfor(myform.ok,"click")
until myform.mytxt.content <> ""
Kode semu 2
LET TEXT = ""
WHILE TEXT = "" DO
TEXT = PROMPT("")
ENDWHILE
Contoh 1
Program berjalan dan segera memunculkan formulir dengan bidang teks tunggal dan OKtombol.
Pengguna mengklik OKtombol.
Tidak ada yang terjadi.
Pasta pengguna "halo dunia" ke dalam bidang teks dan klik OKtombol.
Program berakhir.
Contoh 2
Fungsi dipanggil dan segera menampilkan garis kosong dan kursor yang berkedip.
Pengguna menekan Enter.
Kursor bergerak ke bawah satu baris.
Pengguna menekan Enter.
Kursor bergerak ke bawah satu baris.
Pengguna menekan PPCGEnter
Fungsi kembali.
Jawaban:
TI-BASIC, 2 byte
TI-BASIC melakukan ini secara otomatis. Setelah input diberikan, itu akan berhenti.
Ini GIF:
Tonton hitungan pada entertombol di Key Press History. Dibuat dengan TI-SmartView CE dan ezgif.com .
sumber
Python 3 , 18 byte
Cobalah online!
sumber
sed, 4
Menunggu baris input yang memiliki 1 atau lebih karakter, lalu berhenti.
Cobalah online . Tetapi ini bekerja lebih baik pada shell langsung:
sumber
JavaScript,
372217 bytePenjelasan
Kata
while
kunci memulaiwhile
perulangan. Dalam kondisi loop,!prompt()
meminta input dan memeriksa apakah itu diberikan atau tidak. Jika tidak diberikan, tubuh loop dijalankan, yang dalam kasus kami kosong, maka penerjemah kembali ke kondisi loop. Proses yang sama terjadi berulang-ulang sampai pengguna memberikan input.sumber
while(""==prompt(""));
;
, sedangkan ekspresi awal Anda berfungsi dengan baik tanpa;
. Ada yang tahu kenapa?;
, Anda dapat menyimpan byte itu :-)Java, 55 byte
Jika saya ingat dengan benar (sudah lama sejak saya aktif di PPCG), program saya bisa saja berfungsi.
Ini spesifik sistem; ini hanya bekerja pada sistem di mana karakter end-of-line adalah satu baris baru. Jika karakter end-of-line bukan carriage return, ganti
10
dengan13
. Di Windows, ini tidak berfungsi, seperti end-of-line di windows\r\n
.Ini memanfaatkan fakta bahwa saya dapat membaca langsung dari
System.in
.sumber
\r
, yang bertentangan dengan menguji seluruh string, dan kemudian mengalami masalah dengan adanya 2 karakter EOL?System.in
Anda lakukan secara langsung (well, Anda bisa membaca berbagai karakter sekaligus). Tubuh putaran saya (kosong) dijalankan untuk setiap karakter dalam inputHTML5,
3322 bytePenjelasan
The
required
atribut pada<input>
menyebabkan browser untuk menginformasikan pengguna "bidang ini diperlukan" -sort-of-pesan, jika mereka tidak memasukkan nilai. Namun, ketika mereka memasukkan nilai, nilai tersebut dikirim ke URLaction
atribut<form>
(yang dalam kasus kami adalah file saat ini, karena kami belum menentukan nilai apa pun secara eksplisit).Ini diuji pada versi terbaru Google Chrome (versi 55.0). Dapat bekerja di browser dan versi lain.
sumber
action=/
mungkin berfungsi pada beberapa browser.action
atribut sama sekali.action=y.p
tidak diperlukan, karena sebagian besar Agen Pengguna akan mengirim ke lokasi yang sama jika tidak ada yangaction
ditentukan<form><input required>
versi Google Chrome terbaru dan berfungsi sebagaimana dimaksud. Dan jika Anda skeptis, gunakan sajaaction=#
. Itu menghemat 2 byte.required
atribut! Juga,#
apakah jalur tersedia sejak HTML 1.0, jika saya benar. Dan menambahkan tidakaction
ke formulir Anda sama denganaction="."
, yaitu file itu sendiri.Jelly , 3 byte
Tidak banyak yang terlihat di TIO, saya khawatir.
Cobalah online!
Bagaimana itu bekerja
Ini adalah program niladik, artinya tidak memerlukan argumen input. Argumen implisit dan nilai pengembalian keduanya 0 dalam kasus ini.
¿
(while) adalah quick yang memunculkan dua tautan dari tumpukan tautan: condition (Ṇ
) dan body.Ṇ
adalah atom monadik: logika datar TIDAK. Jika nilai pengembalian sebelumnya falsy (di sini, 0 atau string kosong), itu mengembalikan 1 dan tubuh dipanggil.ɠ
adalah atom niladik; itu membaca garis mentah dari STDIN dan mengembalikan hasilnya.Setelah
ɠ
membaca baris yang tidak kosong,Ṇ
mengembalikan 0 dan kami keluar dari loop.sumber
Pyth, 3 bytes
Try it online!
Translated to Python:
sumber
brainfuck, 26 bytes
Try it online!
sumber
,.
to the end to verify.Perl 5, 8+1 (-p or -n flag) bytes
Takes input from stdin and dies as soon as the regex matches anything except a newline.
sumber
C,
52 bytes,33 bytes, 29 bytes-19 bytes thanks to Justin
-4 bytes thanks to Christoph
10 is equal to '\n' - In case this isn't obvious.
sumber
;
instead of the{}
for the while loop#include<stdio.h>
if you switch towhile(getchar()==10)
:int main(){while(getchar()==10);}
.main(){while(getchar()==10);}
is enough no need for default int.main(){scanf("%s");}
would also work, if space-only lines can count as empty.Bash, 51 bytes (39 without "#!/bin/bash")
It's my first time participating in PPCG, so dont be to rude ;D
sumber
#!/bin/bash
[ -z `line` ] && $0
or if the deprecatedline
is not on your system:[ -z `head -n1` ] && $0
. That should either be 20 or 24 bytes.Java,
128126 bytes2 bytes thanks to Kevin Cruijssen.
Try it online!
sumber
while
to afor
and put theScanner s=new Scanner(System.in);
inside it. And change the.equals("")
to.isEmpty()
.while(new java.util.Scanner(System.in).nextLine().isEmpty());
C# (.NET Core), 66 bytes
Try it online!
-6 bytes thanks to raznagul.
sumber
System.Console.ReadLIne
directly and drop theusing
-Statement.while
loop would be the same number of bytes, but methinks a more idiomatic way of writing the code than afor
loop.QBasic 4.5, 15 bytes
Asks for input, then checks if any was given. If not,
RUN
restarts the program.sumber
RUN
. +1. (That rhymes too; RUN and PLUS ONE :) )Ruby, 13 bytes
I wish
gets
took a Regexp argument.sumber
R,
27242322 bytesTakes input from stdin, and repeat as long as input is of length 0. Cut off some bytes due to Jarko Dubbeldam and MickyT. Replaced the
{}
witht
to save another byte.sumber
,''
, since neither input (string or numeric) nor way of terminating was specified in the challenge.while(!sum(scan()^0)){}
work as well?sum()
. Too bad the^0
is need to handle0
as input.sum
, thanks! I've updated the answer.PHP, 18 bytes
sumber
readline()
returns something else than an empty string. Non empty strings evaluate totrue
in php - atleast most of them do. "0" seems to be an exception as I just read in the docs. Well I guess my answer is wrong now.AWK,
811 bytesWait for input. If the number of fields in input is more than 0, exit.
EDIT:
I've just realized that this doesn't work for input containing whitespace characters only. IFS needs to be set to empty string using
-F ""
command line option. Therefore +3 bytes.Try it online!
sumber
NF
with1
. Then you don't need to setIFS
. And grumble you beat me to andAWK
solution.NF
with1
. In that case the program exits given any input, including empty newline.SpecBAS - 34 bytes
Just loops until non-empty string is entered.
sumber
Mathematica,
2620 bytessumber
For[,Input[]==Null,]
. Works just as well.Haskell,
1917 bytesDefines a function
f
that if it reads the empty line calls itself again. When reading a non-empty line an exception is raised and the recursion is stopped.Edit: @Laikoni replaced the parameter with a pattern match and saved 2 bytes. Thanks!
sumber
f=do""<-getLine;f
Aceto,
954 bytesr
ead a value, negate it (!
; implicitly casting to a boolean), and mirror horizontally if the value is truthy (|
).sumber
Java,
666460 bytesMy first Java answer, would love some tips!
sumber
return
and!
..equals("")
==.isEmpty()
. You can return int instead of String. OTOH, return void but eitherwhile(System...)
orif(System...)a();
int a(){..?0:a();}
, saves 3 bytesBraingolf, 8 bytes [non-competing]
Non competing because
{
, which reads input from STDIN, was added to braingolf after this challenge's post date.Explanation:
sumber
Charcoal, 4 bytes
Explanation
sumber
05AB1E, 5 bytes
Explanation:
Try it online!
sumber
PowerShell, 20 Bytes
runs a for loop,
read-host
prompts for inputif read-host returns nothing it evals to false, so we invert that
!(...)
and use that as the loop end check.much shorter than any
do{$a=read-host}while($a-eq"")
type solution involving variables.sumber
Swift, 22 bytes
sumber
CJam, 5 bytes
Try it online! (TIO doesn't really show the proper behaviour)
Explanation
sumber