Twój program / funkcja itp. Zajmie 2 wejścia. Pierwszą będzie lista osób, które przyszły na moje przyjęcie i kiedy. Przykład:
Kevin 13:02
Ruby 5
Sam 3
Lisa 6
Bob 12
Co to znaczy? Oznacza to, że Kevin najpierw przybył na moją imprezę (o 13:02, 24 godziny), potem Ruby 5 minut później, potem Sam 3 minuty później, a Lisa 6 minut później, a ostatni Bob 12 minut później.
Drugie wejście będzie, kiedy rozpocznie się moja impreza. Przykład:
13:15
(Czas 24-godzinny). Twój wynik musi być listą osób, które się spóźniły. (Każdy dokładnie na czas jest w porządku.) Przykładowe obliczenia (na przykład, nie wysyłaj ich)
Kevin 13:02
Ruby 13:07
Sam 13:10
Lisa 13:16
Bob 13:28
Lisa i Bob przybyli później 13:15
, dlatego ten program powinien wypisać „Lisa, Bob”.
Założenia wejściowe
- Wejście 1 zawsze będzie nazwą (regex
[A-Z][a-z]*
), następnie spacją, następnie 24-godzinnym czasem w formiehours:minutes
w pierwszym wierszu, a następnie nazwą, spacją i dodatnią liczbą całkowitą (liczba minut później) w następnych wierszach . Zawsze będzie co najmniej 1 linia. - Jeśli chcesz, możesz wprowadzić 1 z dowolnym innym znakiem zamiast podziału linii.
- Wejście 2 będzie miało format
hours:minutes
. - Możesz wziąć swoje dane wejściowe jako jeden ciąg oddzielony dowolnym znakiem, jeśli chcesz. To jest opcjonalne.
- Nie martw się o dzień crossovera. Moje imprezy nigdy nie później
23:59
.
Reguły wyjściowe
- Dane wyjściowe mogą być wartością zwracaną przez funkcję lub ciągiem echa do STDIN, pliku itp. Musisz zwrócić ciąg znaków lub tablicę / listę.
- Jeśli zwrócisz ciąg, musi to być każda osoba, która się spóźniła (kolejność nie ma znaczenia), oddzielone dowolnym niealfanumerycznym separatorem.
- Jeśli zwrócisz tablicę / listę, musi to być lista wszystkich spóźnionych.
(regex [A-Z][a-z]*
)” Czy to sugeruje, że nazwy mogą być puste?23:59
?Odpowiedzi:
MATL , 31 bajtów
Pierwsze wejście wykorzystuje spację zamiast podziału linii (dozwolone przez wyzwanie).
Wyjście używa podziału linii jako separatora.
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES6),
9897 bajtówZaoszczędził 1 bajt dzięki Neilowi
Pobiera listę gości
l
i czas imprezyh
w składni curry(l)(h)
. Oczekuje końca linii na liście. Zwraca rozdzieloną spacjami listę nazw, takich jakLisa Bob
.Sformatowane i skomentowane
Próbny
źródło
(.*) (.*)\n
działa?(.*)
do całej linii.PHP,
118 98 9591 bajtówpobiera dane wejściowe z argumentów wiersza poleceń (jeśli chcesz, możesz to interpretować jako linie oddzielone spacjami); drukuje nazwy bez ogranicznika. Uruchom go
-r
lub przetestuj online .edycja 1: zapisane 20 bajtów z drukowaniem bezpośrednim
edycja 2: zapisane 3 bajty poprzez usunięcie separatora
edycja 3: zapisane 4 bajty przez wykorzystanie tego, że zwykłe liczby całkowite nie są prawidłowymi datami
strtotime
awaria
źródło
c, 178 bajtów
Wypróbuj online
źródło
JavaScript ES6, 185 bajtów
Wypróbuj online!
źródło
f('Kevin 13:02\nRuby 5\nSam 3...
PowerShell ,
215196180 bajtówWypróbuj online!
Mniej więcej 1/3 tego jest parsowaniem danych wejściowych, więc nie jestem pewien, jak dalece mogę grać w golfa.
Pobiera dane wejściowe
$a
jako rozdzielony przecinkami ciąg nazw i czasów / minut oraz$b
jakohh:mm
ciąg znaków. Po pierwsze, mamy-split
$a
na,
przechowywać pierwszy wynik w$x
i pozostała w$a
, z wyraźną ponownej obsady$a
jakoarray
(tak, że pętla później działa prawidłowo). My, zainicjować naszą hashtable$z
, zestaw$i
i$j
być$x
-split
na spacji i ustawić$z[$i]
się byćdate
od$j
(przechowywany w$y
do wykorzystania później).Następnie przeglądamy pozostałe
$a
. Z każdą iteracją robimy podobnie --split
ciąg znaków w białych znakach ustawia odpowiedni$z
indeks tak, aby był o wiele więcej poza miejscem, w którym się obecnie znajdujemy. Używa skróconej nazwy sztuczki, aby zapisać niektóre bajty, używając|% *es $j
zamiast.AddMinutes($j)
.Wreszcie,
.GetEnumerator()
(ponownie stosując podstęp) naszego hashtable iWhere-Object
wybierz te wpisy zvalue
to-g
reatert
han$b
(tj, są one późno do partii). Następnie wybieramy tylko.Name
ich. Dane wyjściowe mają postać niejawnej tablicy, między którą domyślnieWrite-Output
wstawiane są znaki nowej linii.Uratowałem sporo dzięki briantist za przypomnienie mi, że [tablica] to coś. I wiele innych za skróconą wskazówkę dotyczącą nazwy nieruchomości.
źródło
$x,[array]$a=$a-split','
?[array]
to ważna obsada. Ha ha. Chyba za dużo golfa.GetEnumerator
i jestemAddMinutes
dobrym kandydatem do%
składni metodyPython 2 ,
140,148,144 bajtówWypróbuj online!
Format wejściowy:
źródło
'Kevin 13:47;Ruby 5;Sam 3;Lisa 6;Bob 12;14:00'
nic nie drukuje, nawet jeśli Lisa i Bob są jeszcze spóźnieni.Bash,
135124115 bajtówWypróbuj online!
źródło
CJam,
66545854514946 bajtówDane wejściowe 1 są podawane przez STDIN, dane wejściowe 2 są podawane jako ciąg znaków na stosie. Dane wyjściowe to tablica na stosie. Separator dla wejścia 1 to spacja, np
Kevin 13:02 Ruby 5 Sam 3 Lisa 6 Bob 12
.Ślad stosu:
Wyjaśnienie:
K
konwertuje czashh:mm
i liczbę reprezentującą liczbę minut od północy.[782 5 3 6 12]
.[782 787 790 796 808]
, co daje czasy, które wszyscy przyszli.źródło
JavaScript,
285283 bajtyPobiera listę gości
i
i czas imprezyp
w składni curry(i)(p)
. Zwraca listę nazw oddzielonych przecinkami, takich jakLisa,Bob
.Wiem, że jest dość długa i na ostatnim miejscu z dość dużym marginesem, ale to właśnie mogłem wymyślić.
źródło
C # ,
269267 bajtówGrał w golfa
Nie golfił
Nieczytelny czytelny
Pełny kod
Wydawnictwa
- 2 bytes
- Dzięki VisualMelon269 bytes
- Wstępne rozwiązanie.Notatki
źródło
using D=System.DateTime;
dyrektywę (nie zapomnij zastąpićvar
s!). Powinieneś naprawdę podać typy parametrów lambda, aby ten kod był całkowicie jednoznaczny (tj(string l,string f)
.). Myślę również, że jest niewielki błąd, którego potrzebujesz (h>s
zamiast 1h>=s
bajtu oszczędzania!) Zgodnie z „(Każdy dokładnie na czas jest w porządku.)”. Można to zrobićh.Ticks<1
? Możesz znaleźć nullableDateTime
tańsze niż używanieDateTime.Min
, ale nie sprawdziłem tutaj pełnych implikacji. Z klauzulą use==D.Min
powinien również działać.h>s
Zrobię to.h.Ticks<1
i ten też.usings
i tak z lambdami, nie mogę znaleźć niczego, co mówi to wprost na mecie, ale to pytanie zdecydowanie sugeruje, że jest dozwolone. Istnieje rozsądna zgoda co do tego, że powinny być wymagane jawne typy parametrów (należy dodać, że jestem zdecydowanie za). Nawiasem mówiąc, mody są po to, aby zachować cywilność z perspektywy SE, a nie egzekwować własne zasady PPCG.usings
, głównie dlatego, że czułbym wtedy, że wymagałoby to pełnego kodu, stąd mówię, że wątpię, czy mógłbym pobrać funkcję jako rozwiązanie - może dodając dwa bloki, jeden dlausing
s, a drugi dla funkcja lambda? Jeśli chodzi o konsensus, myślę, że dodanie brakującychFunc<...> f = ...;
rozwiązałoby go, chociaż należy podać pełną nazwęSystem.Func<...> f = ...;
string s
ze składnią C # 7 (6? Nie pamiętam)), jeśli wolisz nie mieszać lambd i usings.CJam ,
4341 bajtówWypróbuj online!
Wyjaśnienie
źródło
Lua,
211206 bajtówPierwszy codegolf tego roku powinien być dla mnie golfem.
Edycja: Zapisano 5 bajtów, używając skrótu dla
string.match
Objaśnienia
jeśli chcesz wypróbować ten kod, możesz użyć następującego fragmentu kodu
źródło
Java,
346304284275 bajtówSzczegółowe na żywo
źródło
String[] n,
iString[] a
?Integer.parseInt(n)
znew Short(n)
. Oraz na podstawie uwag wyzwanie,LisaBob
to również ważne wyjście, więc można zmienićprintln
naprint
.Partia, 163 bajty
Pobiera dane wejściowe na STDIN. Pierwsza linia to godzina rozpoczęcia imprezy, a następnie lista gości. Wykorzystuje sztuczkę @ Arnauld do konwersji hh: mm na minuty.
Preferowane dane wejściowe Batcha to seria parametrów wiersza poleceń (zaczynając od czasu imprezy, a następnie każdego gościa i czasu jako osobnych argumentów). Zajmie to tylko 129 bajtów:
źródło
Groovy, 121 bajtów
źródło
PowerShell,
170160 bajtówWypróbuj online!
źródło