Dada a entrada de uma lista de dias da semana, produza a representação ordenada mais curta da lista.
O formato da entrada é uma cadeia que consiste em um ou mais dos substrings de dois caracteres Su
(domingo), Mo
(segunda-feira), Tu
(etc.), We
, Th
,
Fr
, e Sa
. A entrada pode não ser necessariamente fornecida em ordem classificada.
Para converter a entrada no formato de saída,
Classifique a entrada por dia da semana, começando no domingo (ex.
ThMoSaSuFrTuWe
->SuMoTuWeThFrSa
).Reduza as abreviações para uma letra se não deixar ambiguidade . Por exemplo,
SuMoTuWe
deve se tornarSMTW
porque o primeiro S não poderia ser possível no sábado, pois isso tornaria a saída não classificada (o mesmo para o T). No entanto,ThFrSa
deve se tornarThFS
, já que terça e quinta-feira acontecem antes da sexta-feira e reduzi-la paraTFS
criar ambiguidade.Se a saída for agora
MTWTF
, emD
vez disso (que significa " dia da semana s"). Da mesma forma,SS
deve se tornarE
para o final de semana . Finalmente,SMTWTFS
deve se tornarA
para todos os dias.
A entrada e a saída devem ser uma única sequência.
Como esse é o código-golfe , o código mais curto em bytes vence.
Casos de teste:
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
fonte
Respostas:
Retina ,
15288Jogou golfe com a ajuda de @ Martin e @ randomra! Obrigado a vocês dois!
Experimente online. Algumas linhas começam
m`
com este link de intérprete online. É assim que o programa trabalha com várias linhas de entrada (para executar todos os testes de uma vez). No entanto, várias linhas de entrada não são um requisito, portanto elas não estão incluídas acima ou na minha pontuação.fonte
T`l``Su\B|\BSa|.*e.*|uTh|o|r
economiza mais 3 bytes.JavaScript (ES7),
187178168157 157bytesOs testes regex ajudaram a fazer o trabalho rápido das regras especiais do dia e, embora menos do que o ideal, o mapa de objetos faz seu trabalho. Estou certo de que posso extrair mais um pouco disso.
fonte
Python 3, 321 bytes
Teste em ideone
fonte
'Su Mo Tu We Th Fr Sa'.split()
é mais curto que['Su','Mo','Tu','We','Th','Fr','Sa']
JavaScript (ES6), 197 bytes
Explicação
Codifica cada dia como um pouco e armazena a entrada como um número
n
. Bit 0 = domingo ... bit 6 = sábado. Isso permite que a regra de ambiguidade verifique o código seja muito menor devido às operações bit a bit e seja capaz de comparar toda a combinação com um número sempre menor que 128.Teste
Mostrar snippet de código
fonte