Étant donné l'entrée d'une liste de jours de la semaine, affichez la représentation triée la plus courte de la liste.
Le format de l'entrée est une chaîne constituée d'un ou plusieurs des sous - chaînes à deux caractères Su
(dimanche), Mo
(lundi), Tu
(etc.), We
, Th
,
Fr
etSa
. L'entrée ne peut pas nécessairement être donnée dans un ordre trié.
Pour convertir l'entrée au format de sortie,
Triez l'entrée par jour de la semaine, à partir du dimanche (ex.
ThMoSaSuFrTuWe
->SuMoTuWeThFrSa
).Réduisez les abréviations à une seule lettre si elle ne laisse aucune ambiguïté . Par exemple,
SuMoTuWe
devrait devenirSMTW
parce que le premier S ne pourrait pas être possible samedi, car cela rendrait la sortie non triée (idem pour le T). Cependant, celaThFrSa
devrait devenirThFS
, car le mardi et le jeudi précèdent le vendredi et le réduire pourTFS
créer une ambiguïté.Si la sortie est maintenant
MTWTF
, sortie à laD
place (qui signifie " jour de la semaine "). De même,SS
devrait devenirE
pour le week- end . Enfin,SMTWTFS
devrait devenirA
pour tous les jours.
L'entrée et la sortie doivent toutes deux être une seule chaîne.
Puisqu'il s'agit de code-golf , le code le plus court en octets l'emporte.
Cas de test:
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
la source
Réponses:
Rétine ,
15288Golfez massivement avec l'aide de @ Martin et @ randomra! Merci à vous deux!
Essayez-le en ligne. Quelques lignes commencent
m`
par ce lien d'interprète en ligne. C'est ainsi que le programme fonctionne avec plusieurs lignes d'entrée (pour exécuter tous les tests en une seule fois). Cependant, plusieurs lignes d'entrée ne sont pas obligatoires, elles ne sont donc pas incluses ci-dessus ou dans ma partition.la source
T`l``Su\B|\BSa|.*e.*|uTh|o|r
enregistre 3 octets supplémentaires.JavaScript (ES7),
187178168157 157143 octetsLes tests d'expressions régulières ont permis de travailler rapidement sur les règles spéciales du jour, et bien que moins qu'idéal, la carte d'objet fonctionne. Je suis certain que je peux en tirer un peu plus.
la source
Python 3, 321 octets
Test sur ideone
la source
'Su Mo Tu We Th Fr Sa'.split()
est plus court que['Su','Mo','Tu','We','Th','Fr','Sa']
JavaScript (ES6), 197 octets
Explication
Encode chaque jour sous forme de bit et stocke l'entrée sous forme de nombre
n
. Bit 0 = dimanche ... bit 6 = samedi. Cela permet au code de vérification des règles d'ambiguïté d'être beaucoup plus court en raison des opérations au niveau des bits et de pouvoir comparer la combinaison entière avec un nombre toujours inférieur à 128.Tester
Afficher l'extrait de code
la source