Au moment de l'exécution, continuez à demander une ligne d'entrée jusqu'à ce que l'utilisateur entre quelque chose (autre qu'une nouvelle ligne vide), c'est-à-dire n'appuie pas simplement sur Enterou OK. La sortie ou le résultat n'est ni requis ni interdit.
Pseudo-code 1
myform = new form("GUI")
myform.mytxt = new editfield("")
myform.ok = new button("OK")
repeat
waitfor(myform.ok,"click")
until myform.mytxt.content <> ""
Pseudo-code 2
LET TEXT = ""
WHILE TEXT = "" DO
TEXT = PROMPT("")
ENDWHILE
Exemple 1
Le programme s'exécute et affiche immédiatement un formulaire avec un seul champ de texte et un OKbouton.
L'utilisateur clique sur le OKbouton.
Rien ne se passe.
L'utilisateur colle "hello world" dans le champ de texte et clique sur le OKbouton.
Le programme se termine.
Exemple 2
La fonction est appelée et affiche immédiatement une ligne vierge et un curseur clignotant.
L'utilisateur appuie Enter.
Le curseur descend d'une ligne.
L'utilisateur appuie Enter.
Le curseur descend d'une ligne.
L'utilisateur appuie sur PPCGEnter
Fonction revient.
Réponses:
TI-BASIC, 2 octets
TI-BASIC le fait automatiquement. Une fois la saisie effectuée, elle se fermera.
Voici un GIF:
Regardez le décompte de la entertouche dans l'historique des touches. Créé avec TI-SmartView CE et ezgif.com .
la source
Python 3 , 18 octets
Essayez-le en ligne!
la source
sed, 4
Attend une ligne d'entrée contenant 1 ou plusieurs caractères, puis quitte.
Essayez-le en ligne . Mais cela fonctionne mieux sur un shell live:
la source
JavaScript,
372217 octetsExplication
Le
while
mot-clé démarre lawhile
boucle. Dans l'état de la boucle,!prompt()
demande une entrée et vérifie si elle est donnée ou non. S'il n'est pas donné, le corps de la boucle est exécuté, ce qui dans notre cas est vide, puis l'interpréteur revient à la condition de boucle. Le même processus se répète encore et encore jusqu'à ce que l'utilisateur donne l'entrée.la source
while(""==prompt(""));
;
, tandis que votre expression initiale fonctionnait bien sans;
. Une idée pourquoi?;
, vous pouvez enregistrer cet octet :-)Java, 55 octets
Si je me souviens bien (cela fait un moment que je ne suis pas actif sur PPCG), mon programme peut simplement être une fonction.
Ceci est spécifique au système; il ne fonctionne que sur les systèmes où le caractère de fin de ligne est une seule nouvelle ligne. Si le caractère de fin de ligne est plutôt un retour chariot, remplacez le
10
par13
. Sous Windows, cela ne fonctionne pas, tout comme la fin de ligne sur Windows\r\n
.Cela fait usage du fait que je peux lire directement depuis
System.in
.la source
\r
, par opposition à tester la chaîne entière, puis à rencontrer des problèmes avec 2 caractères EOL?System.in
nous pouvons faire directement (eh bien, vous pouvez lire un tableau de caractères à la fois). Mon corps de boucle (vide) est exécuté pour chaque caractère en entréeHTML5,
3322 octetsExplication
L'
required
attribut sur le<input>
fait que le navigateur informe l'utilisateur "ce champ est obligatoire" -sort-de-message, s'il n'entre pas de valeur. Cependant, lorsqu'ils saisissent une valeur, la valeur est envoyée à l'URL de l'action
attribut de<form>
(qui dans notre cas est le fichier actuel lui-même, car nous n'avons spécifié aucune valeur explicitement).Cela a été testé sur la dernière version de Google Chrome (version 55.0). Peut fonctionner dans d'autres navigateurs et versions.
la source
action=/
pourrait fonctionner sur certains navigateurs.action
complètement l' attribut.action=y.p
n'est pas nécessaire, car la plupart des agents utilisateurs se soumettront au même endroit si aucunaction
n'est spécifié<form><input required>
la dernière version de Google Chrome et fonctionne comme prévu. Et si vous êtes sceptique, utilisez-leaction=#
. Cela économise 2 octets.required
attribut! Un#
chemin est également disponible depuis HTML 1.0, si je ne me trompe pas. Et ajouter nonaction
à votre formulaire est le même queaction="."
, qui est le fichier lui-même.Gelée , 3 octets
Pas grand chose à regarder sur TIO, j'en ai bien peur.
Essayez-le en ligne!
Comment ça marche
Il s'agit d'un programme niladique, ce qui signifie qu'il ne prend aucun argument d'entrée. L'argument implicite et la valeur de retour sont tous les deux 0 dans ce cas.
¿
(while) est un rapide qui fait apparaître deux liens de la pile de liens: une condition (Ṇ
) et un corps.Ṇ
est un atome monadique: plat NON logique. Si la valeur de retour précédente est fausse (ici, 0 ou une chaîne vide), elle renvoie 1 et le corps est appelé.ɠ
est un atome niladique; il lit une ligne brute de STDIN et renvoie le résultat.Une fois
ɠ
lu une ligne non vide,Ṇ
retourne 0 et nous sortons de la boucle.la source
Pyth , 3 octets
Essayez-le en ligne!
Traduit en Python:
la source
brainfuck , 26 octets
Essayez-le en ligne!
la source
,.
à la fin pour vérifier.Octets Perl 5, 8 + 1 (drapeau -p ou -n)
Prend l'entrée de stdin et meurt dès que l'expression régulière correspond à tout sauf à une nouvelle ligne.
la source
C,
52 octets,33 octets, 29 octets-19 octets grâce à Justin
-4 octets grâce à Christoph
10 est égal à '\ n' - Au cas où cela ne serait pas évident.
la source
;
au lieu de la{}
boucle pour le temps#include<stdio.h>
si vous passez àwhile(getchar()==10)
:int main(){while(getchar()==10);}
.main(){while(getchar()==10);}
suffit, pas besoin de int par défaut.main(){scanf("%s");}
fonctionnerait également, si les lignes d'espace uniquement peuvent compter comme vides.Bash, 51 octets (39 sans "#! / Bin / bash")
C'est ma première participation au PPCG, alors ne soyez pas impoli; D
la source
#!/bin/bash
[ -z `line` ] && $0
ou si le dépréciéeline
est pas sur votre système:[ -z `head -n1` ] && $0
. Cela devrait être de 20 ou 24 octets.Java ,
128126 octets2 octets grâce à Kevin Cruijssen.
Essayez-le en ligne!
la source
while
en afor
et mettez-leScanner s=new Scanner(System.in);
dedans. Et changez le.equals("")
en.isEmpty()
.while(new java.util.Scanner(System.in).nextLine().isEmpty());
C # (.NET Core) , 66 octets
Essayez-le en ligne!
-6 octets grâce à raznagul.
la source
System.Console.ReadLIne
directement et enusing
supprimant la déclaration.while
boucle serait le même nombre d'octets, mais il me semble une façon plus idiomatique d'écrire le code qu'unefor
boucle.QBasic 4.5, 15 octets
Demande des informations, puis vérifie si des informations ont été fournies. Sinon,
RUN
redémarre le programme.la source
RUN
. +1. (Cela rime aussi; RUN et PLUS ONE :))Rubis, 13 octets
Je souhaite
gets
pris un argument Regexp.la source
R,
27242322 octetsPrend l'entrée de stdin et répète tant que l'entrée est de longueur 0. Coupez quelques octets à cause de Jarko Dubbeldam et MickyT. Remplacé
{}
part
pour enregistrer un autre octet.la source
,''
, car ni l'entrée (chaîne ou numérique) ni la manière de terminer n'ont été spécifiées dans le défi.while(!sum(scan()^0)){}
travailler aussi bien?sum()
. Dommage^0
qu'il soit nécessaire de gérer0
en entrée.sum
, merci! J'ai mis à jour la réponse.PHP, 18 octets
la source
readline()
retourne autre chose qu'une chaîne vide. Les chaînes non vides sont évaluéestrue
en php - au moins la plupart d'entre elles le font. "0" semble être une exception comme je viens de le lire dans la documentation. Eh bien, je suppose que ma réponse est fausse maintenant.AWK ,
811 octetsAttendez l'entrée. Si le nombre de champs en entrée est supérieur à 0, quittez.
MODIFIER:
Je viens de réaliser que cela ne fonctionne pas pour les entrées contenant uniquement des espaces. IFS doit être défini sur une chaîne vide à l'aide
-F ""
de l'option de ligne de commande. Donc +3 octets.Essayez-le en ligne!
la source
NF
par1
. Ensuite, vous n'avez pas besoin de réglerIFS
. Et grommelez- vous de me battre et deAWK
solution.NF
par1
. Dans ce cas, le programme se ferme à partir de n'importe quelle entrée, y compris la nouvelle ligne vide.SpecBAS - 34 octets
Boucle simplement jusqu'à ce qu'une chaîne non vide soit entrée.
la source
Mathematica,
2620 octetsla source
For[,Input[]==Null,]
. Fonctionne aussi bien.Haskell,
1917 octetsDéfinit une fonction
f
qui, si elle lit, la ligne vide se rappelle. Lors de la lecture d'une ligne non vide, une exception est déclenchée et la récursivité est arrêtée.Edit: @Laikoni a remplacé le paramètre par une correspondance de modèle et enregistré 2 octets. Merci!
la source
f=do""<-getLine;f
Aceto ,
954 octetsr
lisez une valeur, annulez-la (!
; transtypage implicite en booléen), et inversez horizontalement si la valeur est véridique (|
).la source
Java,
666460 octetsMa première réponse Java, j'adorerais quelques conseils!
la source
return
et!
..equals("")
==.isEmpty()
. Vous pouvez retourner int au lieu de String. OTOH, retour nul mais soitwhile(System...)
ouif(System...)a();
int a(){..?0:a();}
, enregistre 3 octetsBraingolf , 8 octets [non concurrent]
Non compétitif car
{
, qui lit les entrées de STDIN, a été ajouté à braingolf après la date de publication de ce défi.Explication:
la source
Fusain , 4 octets
Explication
la source
05AB1E , 5 octets
Explication:
Essayez-le en ligne!
la source
PowerShell, 20 octets
exécute une boucle for,
read-host
invite à entrersi read-host ne renvoie rien, il devient faux, donc nous inversons cela
!(...)
et utilisons cela comme vérification de fin de boucle.beaucoup plus courte que toute
do{$a=read-host}while($a-eq"")
solution de type impliquant des variables.la source
Swift, 22 octets
la source
CJam , 5 octets
Essayez-le en ligne! (TIO ne montre pas vraiment le bon comportement)
Explication
la source