Во время выполнения продолжайте запрашивать строку ввода, пока пользователь не введет что-либо (кроме пустой новой строки), т.е. не будет просто нажимать Enterили OK. Вывод или результат не требуются и не запрещены.
Псевдокод 1
myform = new form("GUI")
myform.mytxt = new editfield("")
myform.ok = new button("OK")
repeat
waitfor(myform.ok,"click")
until myform.mytxt.content <> ""
Псевдокод 2
LET TEXT = ""
WHILE TEXT = "" DO
TEXT = PROMPT("")
ENDWHILE
Пример 1
Программа запускается и сразу же всплывает форма с одним текстовым полем и OKкнопкой.
Пользователь нажимает OKкнопку.
Ничего не произошло.
Пользователь вставляет «Hello World» в текстовое поле и нажимает OKкнопку.
Программа заканчивается.
Пример 2
Функция вызывается и сразу отображает пустую строку и мигающий курсор.
Пользователь нажимает Enter.
Курсор перемещается вниз на одну строку.
Пользователь нажимает Enter.
Курсор перемещается вниз на одну строку.
Пользователь нажимает PPCGEnter
Функция возвращается.
Ответы:
TI-BASIC, 2 байта
TI-BASIC делает это автоматически. Как только ввод дан, он выйдет.
Вот GIF:
Посмотрите счет на enterключ в истории нажатия клавиш. Создано с помощью TI-SmartView CE и ezgif.com .
источник
Python 3 , 18 байт
Попробуйте онлайн!
источник
Сед, 4
Ожидает строку ввода, содержащую 1 или более символов, затем завершается.
Попробуйте онлайн . Но лучше работает на живой оболочке:
источник
JavaScript,
372217 байтобъяснение
while
Ключевое слово начинаетwhile
цикл. В состоянии цикла!prompt()
запрашивает ввод и проверяет, задан он или нет. Если он не задан, выполняется тело цикла, которое в нашем случае пусто, тогда интерпретатор возвращается к состоянию цикла. Один и тот же процесс происходит снова и снова, пока пользователь не введет данные.источник
while(""==prompt(""));
;
, в то время как ваше первоначальное выражение работало нормально без;
. Есть идеи почему?;
, вы можете сохранить этот байт :-)Java, 55 байт
Если я правильно помню (я давно работал с PPCG), моя программа может быть просто функцией.
Это зависит от системы; он работает только в системах, где символ конца строки представляет собой один символ новой строки. Если в конце-линии символ вместо возврата каретки, замените
10
с13
. В Windows это не работает, как в конце строки в Windows\r\n
.Это использует тот факт, что я могу читать прямо с
System.in
.источник
\r
, в отличие от тестирования всей строки, а затем столкнуться с проблемами с наличием 2 символов EOL?System.in
вы сделаете напрямую (ну, вы можете читать массив символов одновременно). Мое тело цикла (пустое) запускается для каждого символа на входеHTML5,
3322 байтаобъяснение
required
Атрибут на<input>
заставляет браузер , чтобы сообщить пользователю «это поле требуется» -sort-оф-сообщений, если они не входят в стоимость. Однако, когда они вводят значение, оно отправляется на URL-адресaction
атрибута<form>
(который в нашем случае является самим текущим файлом, поскольку мы не указали никакого значения явно).Это было проверено на последней версии Google Chrome (версия 55.0). Может работать в других браузерах и версиях.
источник
action=/
может работать в некоторых браузерах.action
атрибута.action=y.p
не является необходимым, так как большинство пользователей Агенты будут представлять в том же месте , если неaction
будет specificed<form><input required>
последнюю версию Google Chrome и работает как задумано. И если вы настроены скептически, просто используйтеaction=#
. Это экономит 2 байта.required
атрибут! Кроме того,#
путь доступен с HTML 1.0, если я правильно. И добавление «нет»action
к вашей форме аналогично добавлениюaction="."
самого файла.Желе , 3 байта
Боюсь, на TIO особо не на что смотреть.
Попробуйте онлайн!
Как это работает
Это ниладная программа, то есть она не принимает входных аргументов. В этом случае неявный аргумент и возвращаемое значение равны 0 .
¿
(while) - это быстрое, которое извлекает две ссылки из стека ссылок: условие (Ṇ
) и тело.Ṇ
является монадическим атомом: плоское логическое НЕ. Если предыдущим возвращаемым значением является ложь (здесь 0 или пустая строка), возвращается 1 и вызывается тело.ɠ
является ниладическим атомом; он читает необработанную строку из STDIN и возвращает результат.Как только
ɠ
читает непустую строку,Ṇ
возвращает 0 и мы вырываемся из цикла.источник
Pyth , 3 байта
Попробуйте онлайн!
Переведено на Python:
источник
брейкфук , 26 байт
Попробуйте онлайн!
источник
,.
до конца, чтобы проверить.Perl 5, 8 + 1 (-p или -n flag) байт
Принимает ввод из stdin и умирает, как только регулярное выражение соответствует чему-либо, кроме новой строки.
источник
C,
52 байта,33 байта, 29 байтов-19 байт благодаря Джастину
-4 байта благодаря Кристофу
10 равно '\ n' - если это не очевидно.
источник
;
{}
#include<stdio.h>
если вы переключитесь наwhile(getchar()==10)
:int main(){while(getchar()==10);}
.main(){while(getchar()==10);}
достаточно без необходимости по умолчанию int.main(){scanf("%s");}
также будет работать, если только пробелы будут считаться пустыми.Bash, 51 байт (39 без "#! / Bin / bash")
Я впервые участвую в PPCG, так что не хамите; D
источник
#!/bin/bash
[ -z `line` ] && $0
или если осуждаетсяline
не на вашей системе:[ -z `head -n1` ] && $0
. Это должно быть 20 или 24 байта.Java ,
128126 байт2 байта благодаря Кевину Круйссену.
Попробуйте онлайн!
источник
while
afor
и поместите вScanner s=new Scanner(System.in);
него. И изменить.equals("")
к.isEmpty()
.while(new java.util.Scanner(System.in).nextLine().isEmpty());
C # (.NET Core) , 66 байт
Попробуйте онлайн!
-6 байт благодаря разнагул.
источник
System.Console.ReadLIne
напрямую иusing
сбросив -Statement.while
Петля будет таким же количеством байт, но мне кажется более идиоматическим способом написания кода , чемfor
цикл.QBasic 4.5, 15 байт
Запрашивает ввод, а затем проверяет, если таковые были даны. Если нет,
RUN
перезапускает программу.источник
RUN
. +1. (Это тоже рифмуется; беги и плюс один :))Рубин, 13 байт
Я хотел
gets
бы принять аргумент Regexp.источник
R,
27242322 байтаПринимает ввод от stdin и повторяется до тех пор, пока ввод имеет длину 0. Отрежьте несколько байтов из-за Jarko Dubbeldam и MickyT. Заменено
{}
с ,t
чтобы сохранить другие байты.источник
,''
, поскольку ни вход (строковый или числовой), ни способ завершения не был указан в вызове.while(!sum(scan()^0)){}
работать так же?sum()
. Жаль, что^0
это необходимо обрабатывать0
как входные данные.sum
, спасибо! Я обновил ответ.PHP, 18 байт
источник
readline()
возвращается что-то еще, кроме пустой строки. Непустые строки оцениваютсяtrue
в php - по крайней мере, большинство из них. «0» кажется исключением, как я только что прочитал в документации. Ну, я думаю, мой ответ сейчас неправильный.AWK ,
811 байтЖдите ввода. Если количество полей на входе больше 0, выйдите.
РЕДАКТИРОВАТЬ:
Я только что понял, что это не работает для ввода, содержащего только пробельные символы. IFS должен быть установлен на пустую строку, используя параметр
-F ""
командной строки. Поэтому +3 байта.Попробуйте онлайн!
источник
NF
на1
. Тогда вам не нужно устанавливатьIFS
. И ворчать, ты избил меня иAWK
решил.NF
на1
. В этом случае программа завершает работу с любым вводом, включая пустой перевод строки.SpecBAS - 34 байта
Просто циклы, пока не введена непустая строка.
источник
Mathematica,
2620 байтовисточник
For[,Input[]==Null,]
. Работает так же хорошо.Haskell,
1917 байтОпределяет функцию,
f
которая, если она читает пустую строку, снова вызывает себя. При чтении непустой строки возникает исключение и рекурсия останавливается.Редактировать: @Laikoni заменил параметр на соответствие шаблону и сохранил 2 байта. Благодарность!
источник
f=do""<-getLine;f
Ацето ,
954 байтаr
прочитайте значение, отмените его (!
; неявно приведите к логическому значению) и отразите по горизонтали, если значение - truey (|
).источник
Java,
666460 байтМой первый ответ на Java, хотелось бы несколько советов!
источник
return
и!
..equals("")
==.isEmpty()
. Вы можете вернуть int вместо String. OTOH, вернуть недействительным, но либоwhile(System...)
илиif(System...)a();
int a(){..?0:a();}
, экономит 3 байтаBraingolf , 8 байт [не конкурирует]
Не конкурирующий, потому что
{
, который читает входные данные из STDIN, был добавлен в braingolf после даты публикации этого испытания.Объяснение:
источник
Древесный уголь , 4 байта
объяснение
источник
05AB1E , 5 байтов
Объяснение:
Попробуйте онлайн!
источник
PowerShell, 20 байт
запускает цикл,
read-host
запрашивает вводесли read-host ничего не возвращает, он превращается в false, поэтому мы инвертируем это
!(...)
и используем в качестве проверки окончания цикла.намного короче, чем любое
do{$a=read-host}while($a-eq"")
решение типа с участием переменных.источник
Swift, 22 байта
источник
CJam , 5 байтов
Попробуйте онлайн! (TIO на самом деле не показывает правильное поведение)
объяснение
источник