Biorąc pod uwagę listę dni tygodnia, wypisz najkrótszą posortowaną reprezentację listy.
Format wejścia to ciąg składający się z jednego lub większej liczby podciągi dwuznakowych Su
(niedziela), Mo
(poniedziałek), Tu
(itd.), We
, Th
,
Fr
, I Sa
. Dane wejściowe niekoniecznie muszą być podane w posortowanej kolejności.
Aby przekonwertować dane wejściowe na format wyjściowy,
Posortuj dane wejściowe według dnia tygodnia, zaczynając od niedzieli (np.
ThMoSaSuFrTuWe
->SuMoTuWeThFrSa
).Skróć skróty do jednej litery, jeśli nie pozostawia to niejednoznaczności . Na przykład
SuMoTuWe
powinno być,SMTW
ponieważ pierwszą literą S nie może być sobota, ponieważ spowodowałoby to, że dane wyjściowe byłyby nieposortowane (tak samo dla litery T).ThFrSa
Powinno się jednak staćThFS
, ponieważ zarówno wtorek, jak i czwartek nadejdą przed piątkiem, a zmniejszenie go do poziomuTFS
spowoduje niejednoznaczność.Jeśli wyjście jest teraz
MTWTF
,D
zamiast niego (co oznacza „ dzień tygodnia ”). PodobnieSS
powinno byćE
na koniec tygodnia . WreszcieSMTWTFS
powinno stać sięA
na wszystkie dni.
Dane wejściowe i wyjściowe muszą być jednym ciągiem.
Ponieważ jest to code-golf , wygrywa najkrótszy kod w bajtach.
Przypadki testowe:
In Out | In Out
-----------------------|--------------------
SuTu STu | SuTuWe STW
SuTuSa STuS | SuWeTh SWT
TuThSa TTS | TuThSu STT
Su Su | Sa Sa
WeTh WT | FrTh ThF
WeTu TW | FrTu TuF
FrWeMo MWF | SaWeSu SWS
ThTu TT | We W
ThTuMoFrWe D | SaSu E
SuMoWeTuThFr SMTWTF | ThMoSaSuFrTuWe A
źródło
Odpowiedzi:
Retina ,
15288Graliśmy w golfa z pomocą @ Martina i @ randomry! Dzięki Wam obojgu!
Wypróbuj online. Kilka linii zaczyna się
m`
od tego linku tłumacza online. Dzieje się tak, więc program działa z wieloma liniami wejściowymi (aby uruchomić wszystkie testy w jednym ujęciu). Jednak wiele wierszy wejściowych nie jest wymogiem, więc nie są one uwzględnione powyżej ani w moim wyniku.źródło
T`l``Su\B|\BSa|.*e.*|uTh|o|r
oszczędza jeszcze 3 bajty.JavaScript (ES7),
187178168157143 bajtówTesty wyrażeń regularnych pomogły w szybkiej pracy z regułami dnia specjalnego i choć mapa obiektów nie jest idealna, działa. Jestem jednak pewien, że uda mi się wycisnąć z tego jeszcze kilka.
źródło
Python 3, 321 bajtów
Przetestuj na ideonie
źródło
'Su Mo Tu We Th Fr Sa'.split()
jest krótszy niż['Su','Mo','Tu','We','Th','Fr','Sa']
JavaScript (ES6), 197 bajtów
Wyjaśnienie
Koduje każdego dnia trochę i przechowuje dane wejściowe jako liczbę
n
. Bit 0 = niedziela ... bit 6 = sobota. Dzięki temu kod sprawdzający regułę niejednoznaczności jest znacznie krótszy ze względu na operacje bitowe i jest w stanie porównać całą kombinację z liczbą, która jest zawsze mniejsza niż 128.Test
Pokaż fragment kodu
źródło