Ваша программа / функция и т. Д. Займет 2 входа. Первым будет список тех, кто пришел на мою вечеринку и когда. Пример:
Kevin 13:02
Ruby 5
Sam 3
Lisa 6
Bob 12
Что это обозначает? Это означает, что Кевин сначала пришел на мою вечеринку (в 13:02, 24-часовое время), затем Руби через 5 минут, затем Сэм через 3 минуты, затем Лиза через 6 минут и последний Боб через 12 минут.
Второй вход будет, когда началась моя вечеринка. Пример:
13:15
(24-часовое время). Ваш вывод должен быть список людей, которые опоздали. (Любой точно в срок в порядке.) Примеры вычислений (например, не выводите их)
Kevin 13:02
Ruby 13:07
Sam 13:10
Lisa 13:16
Bob 13:28
Лиза и Боб прибыли позже 13:15
, поэтому в этой программе должно быть напечатано «Лиза, Боб».
Исходные предположения
- Входные данные 1 всегда будут именем (регулярное выражение
[A-Z][a-z]*
), затем пробелом, 24-часовым временем в формеhours:minutes
в первой строке, затем именем, пробелом и положительным целым числом (через несколько минут) в следующих строках. , Всегда будет хотя бы 1 строка. - Если вы хотите, вы можете взять ввод 1 с любым другим символом вместо переноса строки.
- Вход 2 будет в формате
hours:minutes
. - Вы можете взять свои входные данные как одну строку, разделенную любым символом, если хотите. Это необязательно.
- Не беспокойся о дневном переходе. Мои вечеринки никогда не после
23:59
.
Правила вывода
- Вывод может быть возвращаемым значением функции или строкой, передаваемой в STDIN, файлом и т. Д. Вы должны вернуть строку или массив / список.
- Если вы возвращаете строку, это должен быть каждый опоздавший (порядок не имеет значения), разделенный любым не алфавитно-цифровым разделителем.
- Если вы возвращаете массив / список, это должен быть список всех, кто опоздал.
(regex [A-Z][a-z]*
)». Предполагает ли это, что имена могут быть пустыми?23:59
?Ответы:
MATL , 31 байт
В первом вводе вместо пробела используется пробел (разрешено вызовом).
Выход использует разрыв строки в качестве разделителя.
Попробуйте онлайн!
объяснение
источник
JavaScript (ES6),
9897 байтСохранено 1 байт благодаря Нейлу
Принимает список гостей
l
и время вечеринкиh
в карри синтаксиса(l)(h)
. Ожидает разрыв строки в списке. Возвращает разделенный пробелами список имен, таких какLisa Bob
.Отформатировано и прокомментировано
демонстрация
источник
(.*) (.*)\n
работает?(.*)
будет соответствовать всей строке.PHP,
118 98 9591 байтпринимает входные данные из аргументов командной строки (вы можете интерпретировать это как строки, разделенные пробелами, если хотите); печатает имена без разделителя. Запустите
-r
или протестируйте его онлайн .редактировать 1: сохранено 20 байтов с прямой печатью
редактировать 2: сохранено 3 байта путем удаления разделителя
редактировать 3: сохранено 4 байта благодаря использованию того, что простые целые числа не являются действительными датами для
strtotime
сломать
источник
с, 178 байт
Попробуйте онлайн
источник
JavaScript ES6, 185 байт
Попробуйте онлайн!
источник
f('Kevin 13:02\nRuby 5\nSam 3...
PowerShell ,
215196180 байтПопробуйте онлайн!
Примерно 1/3 этого - входной разбор, так что я не уверен, насколько дальше я смогу это сделать.
Принимает ввод
$a
в виде разделенной запятыми строки имен и времени / минут, а$b
такжеhh:mm
в виде строки. Во- первых, мы-split
$a
на,
, сохранить первый результат в$x
а оставшиеся в$a
, с явной повторной складу$a
какarray
(так, чтобы петля позже работает должным образом). Мы инициализируем нашу хеш-таблицу$z
, устанавливаем$i
и$j
должны быть$x
-split
на пустом месте, и устанавливаем,$z[$i]
чтобы бытьdate
из$j
(сохранены$y
для использования позже).Затем мы перебираем оставшиеся
$a
. Каждую итерацию мы делаем аналогично --split
строка на пустом месте устанавливает соответствующий$z
индекс так, чтобы он был на много минут больше, чем мы сейчас находимся. Это использует укороченный трюк с именем свойства, чтобы сохранить несколько байтов, используя|% *es $j
вместо.AddMinutes($j)
.Наконец, мы
.GetEnumerator()
(опять - таки с помощью трюка) нашей Hashtable, иWhere-Object
выбрать те записи , сvalue
этим-g
ля большейt
хань$b
(то есть, они опоздали на вечеринку). Затем мы выбираем только.Name
их. Выходные данные представлены в виде неявного массива, между которым по умолчаниюWrite-Output
вставляются символы новой строки.Спасибо briantist за то, что напомнили мне, что [array] - это вещь. И еще куча подсказок по сокращенному названию свойства.
источник
$x,[array]$a=$a-split','
?[array]
это действительный актерский состав. Ха - ха. Думаю, слишком много в гольфе.GetEnumerator
иAddMinutes
являются хорошими кандидатами для%
метода синтаксисаPython 2 ,
140 148,144 байтаПопробуйте онлайн!
Формат ввода:
источник
'Kevin 13:47;Ruby 5;Sam 3;Lisa 6;Bob 12;14:00'
ничего не печатает, хотя Лиза и Боб все еще опаздывают.Баш,
135124115 байтовПопробуйте онлайн!
источник
CJam,
66545854514946 байтовВход 1 дается через STDIN, вход 2 дается в виде строки в стеке. Выход - это массив в стеке. Разделителем для ввода 1 является пробел, например
Kevin 13:02 Ruby 5 Sam 3 Lisa 6 Bob 12
.Трассировки стека:
Объяснение:
K
конвертирует времяhh:mm
и число, представляющее, сколько минут это с полуночи.[782 5 3 6 12]
.[782 787 790 796 808]
, что дает время, когда все пришли.источник
JavaScript,
285283 байтаПринимает список гостей
i
и время вечеринкиp
в карри синтаксиса(i)(p)
. Возвращает разделенный запятыми список имен, таких какLisa,Bob
.Я знаю, что это довольно долго и в настоящее время на последнем месте с большим отрывом, но это то, что я мог придумать.
источник
C # ,
269267 байтGolfed
Ungolfed
Ungolfed читаемый
Полный код
релизы
- 2 bytes
- Благодаря VisualMelon269 bytes
- Исходное решение.Примечания
источник
using D=System.DateTime;
директиву (не забудьте заменитьvar
s!). Вы должны действительно предоставить типы для лямбда-параметров, чтобы сделать этот код полностью однозначным (т.е.(string l,string f)
). Я также думаю, что есть небольшая ошибка, вам нужно,h>s
а неh>=s
(1 байт!) В соответствии с "(Любой, кто точно в срок, хорошо.)". Вы можете сделатьh.Ticks<1
? Вы можете найти NullableDateTime
дешевле, чем использоватьDateTime.Min
, но я не проверил все последствия здесь. С предложением using также==D.Min
должно работать.h>s
Я сделаю это один.h.Ticks<1
и этот тоже.usings
и такое с лямбдами, я не могу найти что-либо, говорящее это явно на мета, но этот вопрос настоятельно предполагает, что это разрешено. Существует разумный консенсус в отношении необходимости явных типов параметров (я должен добавить, что я твердо поддерживаю). Кстати, Моды существуют для того, чтобы сохранять гражданскую позицию с точки зрения SE, а не для обеспечения соблюдения собственных правил PPCG.usings
, в основном потому, что я чувствую, что для этого потребуется полный код, поэтому я говорю, что сомневаюсь, что смогу реализовать функцию в качестве решения - возможно, добавив два блока, один дляusing
s и другой для лямбда-функция? ЧтоFunc<...> f = ...;
System.Func<...> f = ...;
string s
с синтаксисом C # 7 (6? Я не помню)), если вы не хотите смешивать лямбды и употребления.CJam ,
4341 байтПопробуйте онлайн!
объяснение
источник
Луа,
211206 байтПервый кодгольф года для меня, все еще должен быть пригодным для игры в гольф.
Изменить: 5 байтов сохранены с помощью сокращения для
string.match
Пояснения
если вы хотите попробовать этот код, вы можете использовать следующий фрагмент
источник
Java,
346304284275 байтПодробный Live
источник
String[] n,
иString[] a
?Integer.parseInt(n)
наnew Short(n)
. И основываясь на комментариях вызова,LisaBob
также действительный выход, так что вы можете изменитьprintln
вprint
.Пакетный, 163 байта
Принимает участие в STDIN. Первая строка - время начала вечеринки, затем список гостей. Использует трюк @ Арно, чтобы преобразовать чч: мм в минуты.
Предпочтительный входной пакет для этого будет в виде последовательности параметров командной строки (начиная со времени вечеринки, затем каждого гостя и времени в качестве отдельных аргументов). Это займет всего 129 байт:
источник
Groovy, 121 байт
источник
PowerShell,
170160 байтПопробуйте онлайн!
источник