表情符号
* * * *
拉格朗日计划
* * * *
表情符号

给定字符形式的表情符号(下表左栏,双引号内),打印出对应的表情(下表右栏,双引号内)。

":-D":  "😀",    ":-)":  "🙂",    ":-|":  "😐",    ":-(":  "🙁",    ":-\\": "😕",
":-*":  "😗",    ":-O":  "😮",    ":-#":  "🤐",    "':-D": "😅",    "':-(": "😓",
":'-)": "😂",    ":'-(": "😢",    ":-P":  "😛",    ";-P":  "😜",    "X-P":  "😝",
"X-)":  "😆",    "O:-)": "😇",    ";-)":  "😉",    ":-$":  "😳",    ":-":   "😶",
"B-)":  "😎",    ":-J":  "😏",    "}:-)": "😈",    "}:-(": "👿",    ":-@":  "😡"


本题难度:



解答

按字符形式的长度分为三组,先按长度查找,再分别按首字符和末字符查找。

这与字典树的思想类似,不过因为节省了中间的字符,应该比字典树的代码要短一些(本人未作验证)。

最终代码有两行。

代码长度:254字节 vs. 全站第一:114字节。

import sys
for a in sys.argv[1:]:print([{":":"😶"},{":":"🙂🙁😀😐😕😗😮🤐😳😏😡😛",";":"😉😜","B":"😎","X":"😆😝"},{"}":"😈👿",":":"😂😢","'":" 😓😅","O":"😇"}][len(a)-2][a[0]][")(D|\*O#$J@".find(a[-1])])