Votre tâche aujourd'hui consiste à mettre en place une limite de temps pour obtenir des commentaires, tâche que j'ai trouvé plutôt pénible à accomplir dans la plupart des langues.
Vous allez créer une fonction de programme qui invite l'utilisateur à entrer. Immédiatement après que l'utilisateur ait saisi les données, imprimez le message input received
et terminez l'exécution / le retour. Cependant, si l'utilisateur attend plus de 10 secondes pour fournir une entrée, envoie le message no input received
et termine l'exécution / le retour.
L'entrée doit provenir de stdin
(la console) ou équivalente, et non des arguments de fonction ou de programme. Toutefois, la sortie peut être soit vers stdout
, la valeur de retour de votre fonction ou toute autre méthode de sortie acceptée.
Vous pouvez demander n'importe quelle quantité d'entrée. Il peut s'agir d'un seul caractère, d'une ligne, d'un mot ou de la méthode la plus courte dans votre langue, à condition d'attendre au moins un caractère.
Vous devez sortir dès que l'entrée est reçue, pas après les 10 secondes.
Après 10 secondes, vous devez terminer, vous ne pouvez plus attendre les entrées après leur no input received
impression.
Vous pouvez supposer que la saisie n’est pas transmise dans le délai compris entre 10 secondes et l’impression de texte à l’écran car il s’agit d’une fenêtre extrêmement petite. Vous pouvez également supposer que l’équivalent intégré de votre langue sleep
est constamment parfait.
C'est du code-golf , le moins d'octets gagne!
sleep
parfaitement fonctionnel à 100% du temps.Réponses:
bash, 38 octets
Ceci utilise l'
-t
option (timeout) de bashread
, ce qui provoque son échec et renvoie un code de sortie différent de zéro si aucune entrée n'est donnée dans le nombre de secondes spécifié.la source
Haskell,
9789 octetsSi le
timeout
temps est écoulé, il retourneNothing
etJust Char
(Char
, parce que nous utilisonsgetChar
) sinon. Cette valeur de retour est convertie en"no "
ou""
par fonctionmaybe "no " mempty
. Ajouter"input received"
et imprimer.Edit: @BMO a suggéré
maybe
et enregistré des octets.la source
g
aveclet
:let g Nothing="no ";g _=""
, puis l'appel de fonctiontimeout....
fonctionne très bien pour moi.g
parmaybe"no "(pure"")
ce qui est plus court et vous pouvez même l’aligner - en vous épargnant 6 octets.mempty
au lieu de(pure"")
est encore plus court.POSIX C99,
7163 octetsUngolfed:
Puisque
poll
retournera 1 en cas de succès, nous multiplions le résultat par 3 et décalons la chaîne en conséquence. Ensuite, nous utilisons le fait quistruct pollfd
a la disposition suivante:et c’est
STDIN_FILENO
-à0
-POLLIN
dire qu’il1
faut remplacerpfd
parint pfd[] = {0,1}
ce que nous avons finalement créé une littérature composée (comme le permet le C99).la source
poll.h
tête ne fait pas partie de la norme de langage C99.Applescript, 113
Applescript ne lit pas vraiment de STDIN. J'espère que
display dialog
c'est acceptable ici:la source
APL (Dyalog) ,
41 à40 octetsC'est une fonction tacite anonyme qui nécessite un argument factice pour s'exécuter .
'no input received'
la chaîne complète↓⍨
déposez autant de caractères de l'avant que le nombre retourné par le{
fonction explicite anonyme (⍵
dénote l'argument)⎕RTL←10
définir R ÉPONSE T ime L imit à dix secondes3*⍨
élever ce nombre (dix) à la puissance de trois (mille signifie "tous")::
sur ces exceptions (toutes),0
retourne 0⋄
essayer:⍞
obtenir des commentaires3⊣
Jeter cela et retourner à la place 3}
fin de fonction (notez que l'argument⍵
n'a jamais été mentionné)la source
Perl ,
7467 octetsAncienne version
(Exécutez via perl -M5.10.1 ...)
la source
\n
.-M5.10.1
. Vous pouvez simplement remplacer-e
par-E
. (si vous en aviez besoin-M5.10.1
, vous devrez ajouter une pénalité à votre score)\n
existedie
: 'Si le dernier élément de LIST ne se termine pas par une nouvelle ligne, le numéro de ligne du script actuel et le numéro de la ligne d'entrée (le cas échéant) sont également imprimés et une nouvelle ligne est fournie. " Donc, sans cette option, «aucune entrée ne serait reçue à la ligne 1». Mais bien sûr, cela pourrait être un saut de ligne littéral dans la chaîne. De plus, les espaces entredie
etsay
et leurs paramètres ne sont pas nécessaires. Même chose pour la finale;
. Et<>
est suffisant pour lire à partir de l'entrée standard.eval
lisez à partir de STDIN, vous pouvez éviter d'avoir besoin d'undie
message. En fait, une erreur d'exécution fonctionne tout aussi bien:$SIG{ALRM}=sub{&0};alarm 10;say'no 'x!eval'<>','input received'
.Perl 6 ,
7266 octetsEssayez-le sans entrée
Essayez-le avec entrée
Essayez-le sans entrée
Essayez-le avec entrée
la source
start
et{
?start
, donc non..new
dessusC #,
180171148131 octetsSauvegardé 17 octets grâce à @VisualMelon.
Version complète / formatée:
la source
namespace
et pas uneusing
directive?using
Thread.Join(int)
, (débarrasser dec
, perdre des accolades, etc. etc.):var t=new System.Threading.Thread(()=>System.Console.ReadKey());t.Start();return(t.Join(10000)?"":"no ")+"input recieved";
(VB.NET semble déjà le faire)1e4
mais c'est undouble
et j'aurais besoin d'unint
si je devrais faire(int)1e4
:( Belle idée cependantTI-BASIC,
8477 octets-7 grâce à @ kamoroso94
Attend qu'un chiffre soit appuyé.
J'essaie de comprendre comment jouer au golf la séquence
{72,73,74,82,83,84,92,93,94}
. Cela prend beaucoup de place.la source
Repeat K or 10=checkTmr(T
faites-le.:4-3not(K:sub("NO INPUT RECEIVED",Ans,18-Ans
Shift
clé sur un ordinateur. De plus, raccourcir les 4 dernières lignes avec votre méthode donne le même nombre d'octets que le mien. J'aime votre méthode, cependant.or
dans votre instruction de répétition, utilisez ceci pour -7 octets:abs(int(.1K)-8)≤1 and 1≥abs(3-10fPart(.1K
NodeJS,
105103101 octets-2 octets grâce à @apsillers
-2 octets en passant
console.log()
dansexit()
Exécuter en enregistrant dans un fichier et en l'exécutant avec node ou directement depuis la ligne de commande en exécutant
node -e "<code>"
la source
console.log()
appel dans le paramètre deexit()
. C'est deux de moins, maintenant.JavaScript (ES6) + HTML,
86848279 + 11 =97959390 octetsL'essayer
Nécessite une fermeture
>
sur leinput
pour travailler dans un Snippet.la source
10
au lieu de1e4
?10
serait 10 millisecondes, le défi dit spécifiquement 10 secondes , soit 10000 millisecondes1e4
.10 != 1e4
parce que je suis un imbécileVB.Net - 174 octets
Version COBOL à venir demain ;-)
la source
:
. Cela prend le même nombre d'octets qu'un saut de ligne, ce qui diminue donc la lisibilité sans améliorer le score de golf.:
substitution de saut de ligne peut être telle que l'appel de treading peut être déclaré en ligne sans se répéter - mais cela dit, je ne suis pas positif, ma langue principale est VBA qui ne prend pas en charge les threads ni les lectures à partir de la console <strike>. < / strike> fenêtre immédiate au moment de la définition de la fonction ou de l'appel: PGo, 149 octets
la source
AHK ,
67 à65 octets2 octets enregistrés par Blauhirn
AHK a un délai d'expiration intégré pour les zones de saisie.
J'ai essayé d'être intelligent et d'utiliser
!o
au lieu de,ErrorLevel
mais cela échoue si l'utilisateur entre une valeur Falsey.Près de la moitié de la réponse se résume aux noms de commande et au texte fixe.
la source
Timeout
est presque le dernier paramètre:InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]
s:=errorLevel?"no ":
Python3,
100898371 octetsEssayez d'abord de jouer au golf.
-4 pour
any()
, -7 pour le découpage, merci @ user2357112!-6, obtenir
select()
depty
au lieu deselect
.la source
"no input received"
chaîne:"no input received"[3*bool(...):]
.any(...)
au lieu debool(...[0])
.pty
module est uniquement disponible sur les plateformes Linux, mais je ne l’utilise que parce que son nom est court et qu’il estselect
disponible. La version 2 fonctionne probablement mieux sous Windows.PowerShell, 110 octets
la source
Python 3, 158 octets
J'ai essayé d'exécuter la réponse Python 3 de Seth, mais sous Windows, elle ne fonctionne pas
ModuleNotFoundError: No module named 'termios'
, et comme je ne peux pas commenter sa réponse à ce sujet, j'ai décidé de proposer une solution qui devrait être indépendante de la plate-forme.C'est la première fois que je joue au golf, alors je suis sûr que cela pourrait être amélioré.
la source
Tcl, 99 octets
la source
SmileBASIC 3, 74 octets
"Accepte les entrées" en attendant que vous appuyiez sur un bouton (qui devrait compter comme entrée).
la source
Scratch 2 / 3.x, 41 points ( Explication )
1: Quand GF a cliqué
1: demander [] et attendre
1 + 14 caractères: dites [entrée reçue]
1: stop [all v] (note: comme "all" était son réglage par défaut, j'ai compté le bloc comme 1)
1 + 2 chiffres: attendez (10) secondes
1 + 17 caractères: dire [aucune entrée reçue]
1: arrêter [tous v]
la source
> <> , 43 + 6 = 49 octets
Essayez-le en ligne!
+5 pour le
-t.08
drapeau, qui définit le tick à 0,08 seconde, et +1 pour lea
drapeau, qui compte les espaces blancs et les instructions ignorées sous forme de ticks.Le programme vérifie les entrées environ une fois par seconde et quitte la boucle si une entrée est détectée. Si aucune entrée n'est reçue, la boucle sort de la fin, en ajoutant
no
au début de la chaîne. La première/
est de s’assurer que le dernier contrôle de saisie se situe exactement dans les 10 secondes.Il faut ensuite environ 5-6 secondes pour imprimer la chaîne elle-même.
la source
-at.08
pour enregistrer un octet.Java 1.4+, 284 octets
Ungolfed:
Ne suggérez pas d'améliorations Java spécifiques à la version. Il s'agit d'une réponse Java générique qui fonctionne dans tous les environnements Java stables (1.4 et supérieurs).
Très freaking wordy ... La capture est nécessaire, ne peut pas le jeter. L'importation du système réduit la taille de 5 octets ... La surcharge est également verbeuse, elle finit donc par devenir un désordre monotone au golf.
la source
10000L
et non10000
? Je pensais que les acteurs lancaient des désirs automatiquement.Julia 0.6 , 78 octets
Plus long que prévu Voir les commentaires pour "aucune entrée reçue" lien TIO.
Essayez-le en ligne!
la source
SmileBASIC,
7473 octetsPrend 1 caractère de saisie.
Et une solution de 39 octets qui n'est probablement pas valide (n'accepte pas réellement la saisie de texte, a juste un OKbouton sur lequel vous pouvez appuyer)
la source