const rl = require("readline").createInterface({ input: process.stdin, output: process.stdout, }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void (async function () { while ((line = await readline())) { // 1.合并 const initialArr = line.split(" ").join(""); // 2.排序(按奇偶位置) const tempOddArr = []; const tempEvenArr = []; for (let i = 0; i < initialArr.length; i++) { let item = initialArr[i]; if (i % 2 == 0) { tempEvenArr.push(item); } else { tempOddArr.push(item); } } tempEvenArr.sort(); tempOddArr.sort(); let targetStr = ""; // 取最大长度 const evenLen = tempEvenArr.length const oddLen = tempOddArr.length const len = Math.max(evenLen, oddLen) // 合并 for (let i = 0; i < len; i++) { targetStr += (tempEvenArr[i] || '') + (tempOddArr[i] || ''); } // 3.字符串转换(十六进制换成2进制或者十进制,再倒序,再转成大写) let targetArr = targetStr.split(""); let result = []; for(let i = 0;i < targetArr.length; i++){ let item = targetArr[i] let finalStr = item if (!isNaN(item) && item !== '') { // 数字转成2进制 倒序 let num = Number(item).toString(2); num = num.padStart(4, 0).split("").reverse().join(""); const tempItem = parseInt(num, 2); // 大于等于10 转16进制 if (tempItem >= 10) { finalStr = String.fromCharCode(tempItem + 55); } else { finalStr = String(tempItem); } } // 小写字母 if (/[a-f]/.test(item)) { let tempItem = parseInt(item, 16); const num = tempItem.toString(2); item = num.padStart(4, 0).split("").reverse().join(""); tempItem = parseInt(item, 2); if (tempItem >= 10) { // 有小写的需要转大写 finalStr = String.fromCharCode(tempItem + 55); } else { finalStr = String(tempItem); } } // 大写字母 if (/[A-F]/.test(item)) { let tempItem = item.charCodeAt() - 55; const num = tempItem.toString(2); item = num.padStart(4, 0).split("").reverse().join(""); tempItem = parseInt(item, 2); if (tempItem >= 10) { finalStr = String.fromCharCode(tempItem + 55); } else { finalStr = String(tempItem); } } result.push(finalStr); } console.log(result.join("")); } })();