Su programa / función, etc. tomará 2 entradas. La primera será una lista de quién vino a mi fiesta y cuándo. Ejemplo:
Kevin 13:02
Ruby 5
Sam 3
Lisa 6
Bob 12
Qué significa eso? Significa que Kevin llegó primero a mi fiesta (a las 13:02, 24 horas), luego a Ruby 5 minutos más tarde, luego a Sam 3 minutos más tarde, luego a Lisa 6 minutos más tarde, y al último Bob 12 minutos más tarde.
La segunda entrada será cuando comenzó mi fiesta. Ejemplo:
13:15
(Tiempo de 24 horas). Su salida debe ser la lista de personas que llegaron tarde. (Cualquier persona exactamente a tiempo está bien). Cálculos de ejemplo (solo por ejemplo, no envíe estos)
Kevin 13:02
Ruby 13:07
Sam 13:10
Lisa 13:16
Bob 13:28
Lisa y Bob llegaron después 13:15
, por lo tanto, este programa debería imprimir "Lisa, Bob".
Suposiciones de entrada
- La entrada 1 siempre será un nombre (regex
[A-Z][a-z]*
), luego un espacio, luego un tiempo de 24 horas en el formulariohours:minutes
en la primera línea, luego un nombre, un espacio y un entero positivo (número de minutos más tarde) en las siguientes líneas . Siempre habrá al menos 1 línea. - Si lo desea, puede tomar la entrada 1 con cualquier otro carácter en lugar de un salto de línea.
- La entrada 2 estará en el formato
hours:minutes
. - Puede tomar sus entradas como una cadena separada por cualquier carácter si lo desea. Esto es opcional
- No te preocupes por el crossover del día. Mis fiestas nunca para después
23:59
.
Reglas de salida
- La salida puede ser un valor de retorno de función o una cadena reflejada en STDIN, un archivo, etc. Debe devolver una cadena o una matriz / lista.
- Si devuelve una cadena, debe ser cada persona que llegó tarde (el orden no importa), separado por un delimitador no alfanumérico.
- Si devuelve una matriz / lista, debe ser una lista de todos los que llegaron tarde.
(regex [A-Z][a-z]*
)" ¿Esto sugiere que los nombres pueden estar vacíos?23:59
?Respuestas:
MATL , 31 bytes
La primera entrada usa espacio en lugar de salto de línea (permitido por el desafío).
La salida utiliza el salto de línea como separador.
Pruébalo en línea!
Explicación
fuente
JavaScript (ES6),
9897 bytesGuardado 1 byte gracias a Neil
Toma la lista de invitados
l
y el tiempo de fiestah
en sintaxis curry(l)(h)
. Espera un salto de línea final en la lista. Devuelve una lista de nombres separados por espacios comoLisa Bob
.Formateado y comentado
Manifestación
fuente
(.*) (.*)\n
funciona(.*)
coincidiría con la línea completa.PHP,
118 98 9591 bytestoma datos de los argumentos de la línea de comandos (si lo desea, puede interpretarlos como líneas separadas por espacios); imprime nombres sin delimitador. Ejecutar
-r
o probarlo en línea .edición 1: guardado 20 bytes con impresión directa
edición 2: guardado 3 bytes al eliminar el delimitador
edición 3: guardado 4 bytes al explotar que los enteros simples no son fechas válidas para
strtotime
Descompostura
fuente
c, 178 bytes
Pruébalo en línea
fuente
JavaScript ES6, 185 bytes
Pruébalo en línea!
fuente
f('Kevin 13:02\nRuby 5\nSam 3...
PowerShell ,
215196180 bytesPruébalo en línea!
Aproximadamente 1/3 de esto es análisis de entrada, por lo que no estoy seguro de cuánto más puedo jugarlo.
Toma de entrada
$a
como una cadena delimitada por comas de nombres y tiempos / minuto, y$b
comohh:mm
forma de cadena. En primer lugar,-split
$a
en,
, almacenar el resultado en la primera$x
y la restante en$a
, con una explícita refundición de$a
comoarray
(por lo que el bucle más tarde funciona correctamente). Inicializamos nuestra tabla hash$z
, establecemos$i
y$j
estar$x
-split
en espacios en blanco, y establecemos$z[$i]
para ser eldate
de$j
(almacenado$y
para su uso posterior).Luego recorremos el resto
$a
. En cada iteración, hacemos algo similar:-split
la cadena en el espacio en blanco establece el$z
índice apropiado para que esté muchos minutos más allá de donde estamos actualmente. Esto usa un truco de nombre de propiedad acortado para guardar algunos bytes, usando en|% *es $j
lugar de.AddMinutes($j)
.Por último,
.GetEnumerator()
(de nuevo usando el truco) de nuestra tabla hash, yWhere-Object
seleccionar esas entradas con unavalue
que es-g
reatert
Han$b
(es decir, llegan tarde a la fiesta). Luego seleccionamos solo los.Name
s de los mismos. La salida es como una matriz implícita, en la que el valor predeterminadoWrite-Output
inserta nuevas líneas entre ellas.Ahorré un montón gracias a briantist por recordarme que [array] es una cosa. Y un montón más por la punta del nombre de la propiedad acortada.
fuente
$x,[array]$a=$a-split','
?[array]
es un elenco válido. Jaja. Demasiado golf, supongo.GetEnumerator
yAddMinutes
son buenos candidatos para la%
sintaxis del métodoPython 2 ,
140,148,144 bytesPruébalo en línea!
Formato de entrada
fuente
'Kevin 13:47;Ruby 5;Sam 3;Lisa 6;Bob 12;14:00'
no imprime nada, a pesar de que Lisa y Bob todavía llegan tarde.Bash,
135124115 bytesPruébalo en línea!
fuente
CJam,
66545854514946 bytesLa entrada 1 se da a través de STDIN, la entrada 2 se da como una cadena en la pila. La salida es una matriz en la pila. El separador para la entrada 1 es un espacio, por ejemplo
Kevin 13:02 Ruby 5 Sam 3 Lisa 6 Bob 12
.Seguimiento de pila:
Explicación:
K
convierte entre una horahh:mm
y un número que representa cuántos minutos han pasado desde la medianoche.[782 5 3 6 12]
.[782 787 790 796 808]
, lo que da los tiempos en que todos vinieron.fuente
JavaScript
285283 bytesToma la lista de invitados
i
y el tiempo de fiestap
en sintaxis curry(i)(p)
. Devuelve una lista de nombres separados por comas comoLisa,Bob
.Sé que es bastante largo y actualmente en el último lugar por un margen justo, pero eso es lo que se me ocurre.
fuente
C # ,
269267 bytesGolfed
Sin golf
Legible sin golf
Código completo
Lanzamientos
- 2 bytes
- Gracias a VisualMelon269 bytes
- Solución inicial.Notas
fuente
using D=System.DateTime;
directiva (¡no olvide reemplazar elvar
s!). Realmente debería proporcionar tipos para los parámetros lambda para que este código sea completamente inequívoco (es decir(string l,string f)
). También creo que hay un pequeño error, necesitah>s
más queh>=s
(¡1byte de ahorro!) Según "(Cualquier persona exactamente a tiempo está bien)". Puedes hacerh.Ticks<1
? Es posible que encuentre un valor anulableDateTime
más barato que el usoDateTime.Min
, pero no he verificado las implicaciones completas aquí. Con la cláusula de uso,==D.Min
debería funcionar también.h>s
Yo haré eso.h.Ticks<1
y ésta también.usings
y con lambdas, no puedo encontrar nada que diga esto explícitamente en meta, pero esta pregunta sugiere que está permitido. Existe un consenso razonable de que se deben requerir tipos de parámetros explícitos (debo agregar que estoy firmemente a favor). Por cierto, los Mods están ahí para mantener las cosas civiles desde la perspectiva de SE, no para hacer cumplir las propias reglas de PPCG.usings
mayoría, principalmente porque luego sentiría que requeriría un código completo, por lo tanto, digo que dudo que pueda lograr una función como solución, tal vez agregando dos bloques, uno parausing
sy otro para el función lambda? Sobre el consenso, creo que agregar los desaparecidosFunc<...> f = ...;
lo resolvería, aunque debería especificarse el nombre completoSystem.Func<...> f = ...;
string s
con la sintaxis C # 7 (6? No puedo recordar)) si prefiere no mezclar lambdas y usos.CJam ,
4341 bytesPruébalo en línea!
Explicación
fuente
Lua,
211206 bytesEl primer codegolf del año para mí, todavía debería ser golfable.
Editar: Guardado 5 Bytes usando una taquigrafía para
string.match
Explicaciones
si quieres probar este código, puedes usar el siguiente fragmento
fuente
Java,
346304284275 bytesDetallado en vivo
fuente
String[] n,
yString[] a
?Integer.parseInt(n)
connew Short(n)
. Y según los comentarios del desafío,LisaBob
también es un resultado válido, por lo que puede cambiar elprintln
aprint
.Lote, 163 bytes
Toma entrada en STDIN. La primera línea es la hora de inicio de la fiesta, luego la lista de invitados. Utiliza el truco de @ Arnauld para convertir hh: mm en minutos.
La entrada preferida de Batch para esto sería como una serie de parámetros de línea de comandos (comenzando con la hora de la fiesta, luego cada invitado y hora como argumentos separados). Esto solo tomaría 129 bytes:
fuente
Groovy, 121 bytes
fuente
PowerShell,
170160bytesPruébalo en línea!
fuente