Dada una entrada de una lista de días de la semana, genera la representación ordenada más corta de la lista.
El formato de la entrada es una cadena que consta de una o más de las subseries de dos caracteres Su
(domingo), Mo
(lunes), Tu
(etc.), We
, Th
,
Fr
, y Sa
. La entrada no necesariamente se puede dar en orden ordenado.
Para convertir la entrada al formato de salida,
Ordene la entrada por día de la semana, comenzando desde el domingo (ej.
ThMoSaSuFrTuWe
->SuMoTuWeThFrSa
).Reduzca las abreviaturas a una letra si no deja ambigüedad . Por ejemplo,
SuMoTuWe
debería serSMTW
porque la primera S no podría ser el sábado, ya que eso haría que la salida no estuviera ordenada (lo mismo para la T). Sin embargo,ThFrSa
debería convertirseThFS
, ya que tanto el martes como el jueves son anteriores al viernes y reducirlo aTFS
crearía ambigüedad.Si la salida es ahora
MTWTF
, salida en suD
lugar (que significa " día de la semana s"). Del mismo modo,SS
debe hacerseE
para fin de semana . Finalmente,SMTWTFS
debería hacerseA
para todos los días.
La entrada y la salida deben ser una sola cadena.
Como se trata de código de golf , gana el código más corto en bytes.
Casos de prueba:
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
fuente
Respuestas:
Retina ,
15288¡Practica golf masivo con la ayuda de @ Martin y @ randomra! ¡Gracias a los dos!
Pruébalo en línea. Un par de líneas comienzan
m`
con este enlace de intérprete en línea. Esto es para que el programa funcione con múltiples líneas de entrada (para ejecutar todas las pruebas de una sola vez). Sin embargo, varias líneas de entrada no son un requisito, por lo que no están incluidas arriba ni en mi puntaje.fuente
T`l``Su\B|\BSa|.*e.*|uTh|o|r
ahorra 3 bytes más.JavaScript (ES7),
187178168157143 bytesLas pruebas de expresiones regulares ayudaron a hacer un trabajo rápido de las reglas especiales del día, y aunque no son ideales, el mapa de objetos hace su trabajo. Sin embargo, estoy seguro de que puedo exprimir un poco más de esto.
fuente
Python 3, 321 bytes
Prueba de ideona
fuente
'Su Mo Tu We Th Fr Sa'.split()
es más corto que['Su','Mo','Tu','We','Th','Fr','Sa']
JavaScript (ES6), 197 bytes
Explicación
Codifica cada día como un bit y almacena la entrada como un número
n
. Bit 0 = domingo ... bit 6 = sábado. Esto permite que el código de verificación de la regla de ambigüedad sea mucho más corto debido a las operaciones de bits y poder comparar la combinación completa con un número que siempre es menor que 128.Prueba
Mostrar fragmento de código
fuente