Su tarea hoy es implementar un límite de tiempo para obtener información, una tarea que he encontrado bastante molesta en la mayoría de los idiomas.
Creará una función de programa que solicita al usuario que ingrese. Inmediatamente después de que el usuario proporcione la entrada, imprima el mensaje input receivedy finalice la ejecución / devolución. Sin embargo, si el usuario espera más de 10 segundos para proporcionar información, envíe el mensaje no input receivedy finalice la ejecución / devolución.
La entrada debe ser de stdin(la consola) o equivalente, no argumentos de función o programa, sin embargo, la salida puede ser stdoutel valor de retorno de su función o cualquier otro método de salida aceptado.
Puede solicitar cualquier cantidad de entrada, puede ser un solo carácter, una línea, una palabra o cualquier método que sea más corto en su idioma siempre que espere al menos un carácter.
Debe emitir tan pronto como se reciba la entrada, no después de que hayan pasado los 10 segundos.
Después de que hayan pasado 10 segundos, debe finalizar, no puede continuar esperando la entrada después de que no input receivedse haya impreso.
Puede suponer que la entrada no se pasa en el tiempo transcurrido entre 10 segundos y el texto que se imprime en la pantalla, ya que esta es una ventana extremadamente pequeña. También puede suponer que el equivalente sleepintegrado de su idioma es consistentemente, absolutamente perfecto.
Este es el código de golf , ¡la menor cantidad de bytes gana!

sleepfunciones de su idioma perfectamente el 100% del tiempo.Respuestas:
bash, 38 bytes
Esto utiliza la
-topción (tiempo de espera) para bashread, lo que hace que falle y devuelva un código de salida distinto de cero si no se proporciona ninguna entrada en el número de segundos especificado.fuente
Haskell,
9789 bytesSi el
timeouttiempo de espera regresaNothingyJust Char(Charporque estamos usandogetChar) de lo contrario. Este valor de retorno se convierte"no "ao""por funciónmaybe "no " mempty. Anexar"input received"e imprimir.Editar: @BMO sugirió
maybey guardó algunos bytes.fuente
gconlet:,let g Nothing="no ";g _=""entonces la llamada a la funcióntimeout....funciona bien para mí.gpor unomaybe"no "(pure"")más corto e incluso puede incluirlo en línea, ahorrándole 6 bytes.memptyen lugar de(pure"")es aún más corto.POSIX C99,
7163 bytesSin golf:
Como
polldevolverá 1 en caso de éxito, multiplicamos el resultado por 3 y desplazamos la cadena en consecuencia. Luego, usamos el hecho de questruct pollfdtiene el siguiente diseño:y
STDIN_FILENOes0,POLLINes1reemplazarpfdconint pfd[] = {0,1}, que finalmente hacemos un compuesto literal (según lo permitido por C99).fuente
poll.hencabezado no es parte del estándar de lenguaje C99.Apéndice, 113
Applescript realmente no lee de STDIN. Esperemos que a
display dialogsea aceptable aquí:fuente
APL (Dyalog) ,
4140 bytesEsta es una función tácita anónima que necesita un argumento ficticio para ejecutarse .
'no input received'la cadena completa↓⍨suelte tantos caracteres desde el frente como el número devuelto por el{función explícita anónima (⍵denota el argumento)⎕RTL←10establecer R espuesta T ime L IMIT a segundos diez3*⍨elevar ese número (diez) a la potencia de tres (mil significa "todos")::con esas excepciones (todas),0volver 0⋄tratar:⍞obtener entrada3⊣descartar eso y en su lugar devolver 3}fin de la función (tenga en cuenta que el argumento⍵nunca se mencionó)fuente
Perl ,
7467 bytesVersión antigua
(Ejecutar a través de perl -M5.10.1 ...)
fuente
\n.-M5.10.1. Puedes simplemente sustituirlo-epor-E. (si fuera necesario-M5.10.1, tendría que agregar una penalización a su puntaje)\nestá ahí debido aldiecomportamiento de: "Si el último elemento de LIST no termina en una nueva línea, también se imprime el número de línea de script actual y el número de línea de entrada (si corresponde), y se proporciona una nueva línea". Por lo tanto, sin él se mostrará "no se recibió ninguna entrada en la línea 1.". Pero, por supuesto, podría ser un salto de línea literal en la cadena. Además de eso, los espacios entredieysayy sus parámetros no son necesarios. Lo mismo para la final;. Y<>es suficiente para leer desde la entrada estándar.evallees desde STDIN, puedes evitar necesitar undiemensaje. De hecho, un error de ejecución funciona igual de bien:$SIG{ALRM}=sub{&0};alarm 10;say'no 'x!eval'<>','input received'.Perl 6 ,
7266 bytesPruébalo sin entrada
Pruébalo con entrada
Pruébalo sin entrada
Pruébalo con entrada
fuente
starty{?start, así que no..newa ellaC #,
180171148131 bytesGuardado 17 bytes gracias a @VisualMelon.
Versión completa / formateada:
fuente
namespacey no unausingdirectiva?usingThread.Join(int), (deshacerse dec, perder llaves, etc., etc.):var t=new System.Threading.Thread(()=>System.Console.ReadKey());t.Start();return(t.Join(10000)?"":"no ")+"input recieved";(VB.NET ya parece hacer esto)1e4pero eso es unadoubley necesitaría una,intasí que tendría que hacer(int)1e4:( Buena idea, aunqueTI-BASIC,
8477 bytes-7 gracias a @ kamoroso94
Espera hasta que se presione un número.
Estoy tratando de descubrir cómo jugar golf en la secuencia
{72,73,74,82,83,84,92,93,94}. Está ocupando mucho espacio.fuente
Repeat K or 10=checkTmr(Tlo haría.:4-3not(K:sub("NO INPUT RECEIVED",Ans,18-AnsShiftllave en una computadora. Además, acortar las últimas 4 líneas con su método en realidad da el mismo número de bytes que el mío. Sin embargo, me gusta tu método.oren su declaración de repetición, use esto en su lugar para -7 bytes:abs(int(.1K)-8)≤1 and 1≥abs(3-10fPart(.1KNodejs,
105103101 bytes-2 bytes gracias a @apsillers
-2 bytes moviéndose
console.log()aexit()Ejecútelo guardando en un archivo y ejecútelo con el nodo o ejecútelo directamente desde la línea de comandos haciendo
node -e "<code>"fuente
console.log()llamada al parámetro deexit(). Eso son dos menos, ahora.JavaScript (ES6) + HTML,
86848279 + 11 =97959390 bytesIntentalo
Requiere un cierre
>en elinputpara trabajar en un fragmento.fuente
10lugar de1e4?10sería de 10 milisegundos, el desafío de desafío dice específicamente 10 segundos , que es de 10000 milisegundos, por lo tanto1e4.10 != 1e4porque soy un tontoVB.Net - 174 bytes
La versión de COBOL llegará mañana ;-)
fuente
:. Eso toma el mismo número de bytes que un salto de línea, por lo que solo disminuye la legibilidad sin mejorar el puntaje de golf.:sustitución de salto de línea puede ser para que la llamada de pisadas pueda declararse en línea sin repetir, pero dicho esto no soy positivo, mi idioma principal es VBA que no admite subprocesos o lectura desde la consola <strike> < / strike> asistente de ventana inmediata desde el momento de la definición de la función o llamada: PGo, 149 bytes
fuente
AHK ,
6765 bytes2 bytes guardados por Blauhirn
AHK tiene un tiempo de espera incorporado para cuadros de entrada.
Intenté ser inteligente y usar en
!olugar de,ErrorLevelpero eso falla si el usuario ingresa un valor falso.Casi la mitad de la respuesta son solo los nombres de los comandos y el texto fijo.
fuente
Timeoutes casi el último parámetro:InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]s:=errorLevel?"no ":Python3,
100898371 bytesPrimero intente jugar al golf.
-4 para
any(), -7 por rebanar, gracias @ user2357112!-6, obtener
select()de enptylugar deselect.fuente
"no input received"cadena:"no input received"[3*bool(...):].any(...)lugar debool(...[0]).ptymódulo solo está disponible en plataformas Linux, pero solo lo estoy usando porque su nombre es corto y estáselectdisponible. La versión 2 probablemente funciona mejor en Windows.PowerShell, 110 bytes
fuente
Python 3, 158 bytes
Intenté ejecutar la respuesta de Seth Python 3 pero en Windows arroja
ModuleNotFoundError: No module named 'termios', y como no puedo comentar su respuesta al respecto, decidí encontrar una solución que debería ser independiente de la plataforma.Es mi primera vez jugando al golf, así que estoy seguro de que podría mejorarse.
fuente
Tcl, 99 bytes
fuente
SmileBASIC 3, 74 bytes
"Acepta la entrada" esperando que se presione cualquier botón (eso debería contar como entrada).
fuente
Scratch 2 / 3.x, 41 puntos ( Explicación )
1: cuando GF hizo clic
1: pregunta [] y espera
1 + 14 caracteres: decir [entrada recibida]
1: detener [todos v] (nota: dado que "todos" era su configuración predeterminada, conté el bloque como 1)
1 + 2 dígitos: espera (10) segundos
1 + 17 caracteres: decir [no se recibió entrada]
1: detener [todos v]
fuente
> <> , 43 + 6 = 49 bytes
Pruébalo en línea!
+5 para la
-t.08bandera, que establece el tick en 0.08 segundos, y +1 para laabandera, que cuenta los espacios en blanco y las instrucciones omitidas como ticks.El programa verifica la entrada aproximadamente una vez por segundo y sale del bucle si se detecta una entrada. Si no se recibe la entrada, sale del bucle desde la parte inferior, agregando
noal comienzo de la cadena. La inicial/es garantizar que la última verificación de entrada esté exactamente en la marca de 10 segundos.Luego toma unos 5-6 segundos para imprimir la cadena en sí.
fuente
-at.08para guardar un byte.Java 1.4+, 284 bytes
Sin golf:
No sugiera mejoras de Java específicas de la versión, esta es una respuesta genérica de Java que funciona en todos los entornos Java estables actualmente (1.4 y superiores).
Muy jodidamente prolijo ... Se requiere la captura, no se puede lanzar. La importación del sistema se reduce como 5 bytes ... La sobrecarga también es prolija, por lo que termina siendo un desastre desordenado y mal parecido al golf.
fuente
10000Ly no10000? Pensé que los intérpretes se convierten en largos automáticamente.Julia 0.6 , 78 bytes
Más de lo que esperaba. Vea los comentarios para el enlace TIO "no se recibió entrada".
Pruébalo en línea!
fuente
SmileBASIC,
7473 bytesToma 1 carácter de entrada.
Y una solución de 39 bytes que probablemente no sea válida (en realidad no acepta ingreso de texto, solo tiene un OKbotón que puede presionar)
fuente