Votre programme / fonction, etc. prendra 2 entrées. Le premier sera une liste des personnes qui sont venues à ma fête et quand. Exemple:
Kevin 13:02
Ruby 5
Sam 3
Lisa 6
Bob 12
Qu'est-ce que ça veut dire? Cela signifie que Kevin est arrivé à ma fête en premier (à 13h02, heure 24 heures), puis Ruby 5 minutes plus tard, puis Sam 3 minutes plus tard, puis Lisa 6 minutes plus tard, et Bob dernier 12 minutes plus tard.
La deuxième entrée sera lorsque ma fête a commencé. Exemple:
13:15
(24 heures). Votre sortie doit être la liste des personnes en retard. (N'importe qui exactement à l'heure est très bien.) Exemples de calculs (juste par exemple, ne les affichez pas)
Kevin 13:02
Ruby 13:07
Sam 13:10
Lisa 13:16
Bob 13:28
Lisa et Bob sont arrivés après 13:15
, donc ce programme devrait imprimer "Lisa, Bob".
Hypothèses d'entrée
- L'entrée 1 sera toujours un nom (expression régulière
[A-Z][a-z]*
), puis un espace, puis un temps de 24 heures dans le formulairehours:minutes
sur la première ligne, puis un nom, un espace et un entier positif (nombre de minutes plus tard) sur les lignes suivantes . Il y aura toujours au moins 1 ligne. - Si vous le souhaitez, vous pouvez prendre l'entrée 1 avec n'importe quel autre caractère au lieu d'un saut de ligne.
- L'entrée 2 sera au format
hours:minutes
. - Vous pouvez prendre vos entrées comme une chaîne séparée par n'importe quel caractère si vous le souhaitez. C'est facultatif.
- Ne vous inquiétez pas du crossover de jour. Mes soirées à jamais
23:59
.
Règles de sortie
- La sortie peut être une valeur de retour de fonction ou une chaîne renvoyée en écho à STDIN, un fichier, etc. Vous devez renvoyer une chaîne ou un tableau / liste.
- Si vous retournez une chaîne, ce doit être chaque personne en retard (l'ordre n'a pas d'importance), séparé par un délimiteur non alphanumérique.
- Si vous retournez un tableau / liste, il doit s'agir d'une liste de tous ceux qui étaient en retard.
(regex [A-Z][a-z]*
)" Cela suggère-t-il que les noms peuvent être vides?23:59
?Réponses:
MATL , 31 octets
La première entrée utilise l'espace au lieu du saut de ligne (autorisé par le défi).
La sortie utilise le saut de ligne comme séparateur.
Essayez-le en ligne!
Explication
la source
JavaScript (ES6),
9897 octets1 octet enregistré grâce à Neil
Prend la liste des invités
l
et le temps de la fêteh
dans la syntaxe de curry(l)(h)
. Attend un saut de ligne de fin dans la liste. Renvoie une liste de noms séparés par des espaces tels queLisa Bob
.Formaté et commenté
Démo
la source
(.*) (.*)\n
marche pas ?(.*)
correspondrait à toute la ligne.PHP,
118 98 9591 octetsprend l'entrée des arguments de ligne de commande (vous pouvez l'interpréter comme des lignes séparées par des espaces si vous le souhaitez); imprime les noms sans délimiteur. Exécutez-le
-r
ou testez-le en ligne .édition 1: 20 octets enregistrés avec impression directe
édition 2: 3 octets enregistrés en supprimant le délimiteur
édition 3: 4 octets enregistrés en exploitant le fait que les nombres entiers ne sont pas des dates valides pour
strtotime
panne
la source
c, 178 octets
Essayez-le en ligne
la source
JavaScript ES6, 185 octets
Essayez-le en ligne!
la source
f('Kevin 13:02\nRuby 5\nSam 3...
PowerShell ,
215196180 octetsEssayez-le en ligne!
Environ 1/3 de ceci est une analyse des entrées, donc je ne sais pas à quel point je peux jouer au golf.
Prend entrée
$a
comme une chaîne de noms séparés par des virgules et / minutes fois, et$b
commehh:mm
une chaîne. Tout d' abord, nous-split
$a
sur,
, stocker le premier résultat dans$x
et le reste dans$a
, avec une refondue explicite$a
commearray
( de sorte que la boucle fonctionne correctement plus tard). Nous initialize notre Hashtable$z
, ensemble$i
et$j
d'être$x
-split
sur les espaces, et mis$z[$i]
à ladate
de$j
(stocké dans une$y
utilisation ultérieure).Ensuite, nous parcourons le reste
$a
. À chaque itération, nous faisons la même chose --split
la chaîne sur les espaces blancs, définit l'$z
index approprié comme étant beaucoup plus de minutes que l'endroit où nous en sommes actuellement. Cela utilise une astuce de nom de propriété raccourci pour enregistrer certains octets, en utilisant|% *es $j
au lieu de.AddMinutes($j)
.Enfin, nous
.GetEnumerator()
(encore une fois en utilisant l'astuce) de notre table de hachage, etWhere-Object
sélectionnez ces entrées avec unvalue
qui est-g
reatert
han$b
(c'est-à-dire, ils sont en retard à la fête). Nous en sélectionnons ensuite uniquement les.Name
s. La sortie est sous la forme d'un tableau implicite, entre lequel la valeur par défautWrite-Output
insère des retours à la ligne.J'ai sauvé un tas grâce à briantist pour m'avoir rappelé que [array] est une chose. Et un tas de plus pour une astuce de nom de propriété raccourci.
la source
$x,[array]$a=$a-split','
vous pas simplement le faire ?[array]
c'est un casting valide. Haha. Trop de golf, je suppose.GetEnumerator
et je suis unAddMinutes
bon candidat pour la%
syntaxe de la méthodePython 2 ,
140, 148,144 octetsEssayez-le en ligne!
Format d'entrée:
la source
'Kevin 13:47;Ruby 5;Sam 3;Lisa 6;Bob 12;14:00'
n'imprime rien, même si Lisa et Bob sont encore en retard.Bash,
135124115 octetsEssayez-le en ligne!
la source
CJam,
66545854514946 octetsL'entrée 1 est donnée via STDIN, l'entrée 2 est donnée sous forme de chaîne sur la pile. La sortie est un tableau sur la pile. Le séparateur pour l'entrée 1 est un espace, par exemple
Kevin 13:02 Ruby 5 Sam 3 Lisa 6 Bob 12
.Trace de la pile:
Explication:
K
convertit entre une heurehh:mm
et un nombre représentant le nombre de minutes écoulées depuis minuit.[782 5 3 6 12]
.[782 787 790 796 808]
, ce qui donne les moments où tout le monde est venu.la source
JavaScript,
285283 octetsPrend la liste des invités
i
et le temps de la fêtep
dans la syntaxe de curry(i)(p)
. Renvoie une liste de noms séparés par des virgules tels queLisa,Bob
.Je sais que c'est assez long et actuellement à la dernière place avec une bonne marge, mais c'est ce que je pourrais trouver.
la source
C # ,
269267 octetsGolfé
Non golfé
Non lisible non lisible
Code complet
Communiqués
- 2 bytes
- Merci à VisualMelon269 bytes
- Solution initiale.Remarques
la source
using D=System.DateTime;
directive (n'oubliez pas de remplacer levar
s!). Vous devez vraiment fournir des types pour les paramètres lambda pour rendre ce code complètement sans ambiguïté (c'est-à-dire(string l,string f)
). Je pense également qu'il y a un léger bug, vous avez besoinh>s
plutôt queh>=s
(1 octet d'économie!) Selon "(N'importe qui exactement à l'heure est bien.)". Pouvez-vous faireh.Ticks<1
? Vous pouvez trouver une valeur nulleDateTime
moins chère que l'utilisationDateTime.Min
, mais je n'ai pas vérifié toutes les implications ici. Avec la clause using,==D.Min
devrait également fonctionner.h>s
Je vais le faire.h.Ticks<1
et celui-ci aussi.usings
et tel avec les lambdas, je ne trouve rien qui dit cela explicitement sur les méta, mais cette question suggère fortement que c'est permis. Il existe un consensus raisonnable sur la nécessité de types de paramètres explicites (je dois ajouter que je suis fermement en faveur). D'ailleurs, les Mods sont là pour garder les choses civiles du point de vue de SE, pas pour appliquer les propres règles de PPCG.usings
, principalement parce que je sentirais alors qu'il faudrait un code complet, donc je dis que je doute que je puisse retirer une fonction comme solution - peut-être en ajoutant deux blocs, un pourusing
s et un autre pour le fonction lambda? À propos du consensus, je pense que l'ajout des manquantsFunc<...> f = ...;
le résoudrait, bien qu'il faille préciser le nom completSystem.Func<...> f = ...;
string s
avec la syntaxe C # 7 (6? Je ne me souviens pas)) si vous préférez ne pas mélanger les lambdas et les utilisations.CJam ,
4341 octetsEssayez-le en ligne!
Explication
la source
Lua,
211206 octetsLe premier golf de code de l'année pour moi devrait toujours être jouable au golf.
Modifier: enregistré 5 octets en utilisant un raccourci pour
string.match
Explications
si vous voulez essayer ce code, vous pouvez utiliser l'extrait de code suivant
la source
Java,
346304284275 octetsLive détaillé
la source
String[] n,
etString[] a
?Integer.parseInt(n)
parnew Short(n)
. Et sur la base des commentaires du défi,LisaBob
est également une sortie valide, vous pouvez donc changer leprintln
enprint
.Lot, 163 octets
Prend entrée sur STDIN. La première ligne est l'heure de début de la fête, puis la liste des invités. Utilise l'astuce de @ Arnauld pour convertir le hh: mm en minutes.
L'entrée préférée de Batch pour cela serait une série de paramètres de ligne de commande (en commençant par l'heure de la fête, puis chaque invité et l'heure comme arguments séparés). Cela ne prendrait que 129 octets:
la source
Groovy, 121 octets
la source
PowerShell,
170160octetsEssayez-le en ligne!
la source