首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyPad代码到文本!

KeyPad代码到文本!
EN

Code Golf用户
提问于 2016-12-24 03:35:07
回答 3查看 1.1K关注 0票数 16

给定一个字符串和一个数组作为输入,您的任务是输出输入字符串在典型的Mobile上输入时将打印的文本。在Mobile中,通过按n次按钮输入字母,其中n是字母在按钮标签上的位置。因此,22应该输出b

规则

  • Helper将包含字符映射([" ",".,!","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"])。这将给您节省一些字节。
  • #符号将切换大小写。最初的情况会更低。因此,2#3应该输出aD
  • 0将添加一个空格。因此,202应该输出a a
  • 输入字符串中将有一个空格()来启动一个位于同一个数字按钮上的新字母。例如,要键入aa,输入字符串将是2 2
  • 输入字符串始终是有效的KeyPad代码,这一点得到了证实。

输入

你可以用你的语言支持的任何方式接受输入。

输出

您可以以任何想要的方式输出结果。函数return也是允许的。

测试用例

代码语言:javascript
复制
#4440555#666888330#999#66688111 -> "I Love You!"
#6#33777 7779990#222#4477744477778627777111 -> "Merry Christmas!"
#44#27 79990#66#3390#999#332777111 -> "Happy New Year!"

这是密码-高尔夫,所以以字节为单位的最短代码获胜!

EN

回答 3

Code Golf用户

回答已采纳

发布于 2016-12-24 17:32:36

Pyth - 31字节

新的关键东西花了我太多钱。

代码语言:javascript
复制
ss.emr!FZk@@QsedthdfndeTrb8cz\#

测试套房

票数 4
EN

Code Golf用户

发布于 2016-12-24 19:22:07

JavaScript ES6 -124个字节

高尔夫球:

代码语言:javascript
复制
f=h=>a=>(o=c="")+a.match(/#|(.)\1*/g).forEach(e=>e==" "?0:e=="#"?c=!c:(n=h[e[0]][e.length-1])*(o+=c?n.toUpperCase():n))?o:0;
代码语言:javascript
复制
f=h=>a=>(o=c="")+a.match(/#|(.)\1*/g).forEach(e=>e==" "?0:e=="#"?c=!c:(n=h[e[0]][e.length-1])*(o+=c?n.toUpperCase():n))?o:0;

console.log(f(["  ",".,!","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"])("#4440555#666888330#999#66688111"));
console.log(f(["  ",".,!","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"])("#6#33777 7779990#222#4477744477778627777111"));
console.log(f(["  ",".,!","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"])("#44#27 79990#66#3390999332777111"));

未高尔夫球:

代码语言:javascript
复制
f=(a,h)=>{
    //out string
    o="";
    //uppercase or lowercase (initialized as "" and then inverted in golfed version)
    c=0;
    //split it into array of instructions, which are sets of repeated characters, or # solely alone
    a.match(/#|(.)\1*/g).forEach((e)=>{
        e==" "?0:
            e=="#" ? (c=!c) : ( ()=>{ //lambda added because two statements ungolfed, multiplied in the golfed version
                    n=h[e[0]][e.length-1];
                    o+=c?n.toUpperCase():n;
                })()
    })
    return o;
}
票数 2
EN

Code Golf用户

发布于 2016-12-24 03:35:07

JavaScript,301个字节

代码语言:javascript
复制
(a,b)=>{u="l";p=[];r="";a.split``.map((c,i)=>p.push(c!=a[i-1]?" "+c:c));p.join``.trim().replace('   ', ' ').split` `.map(l=>{if(l=="#"){u=(u=="l"?b.forEach((y,j)=>b[j]=y.toUpperCase())||"u":b.forEach((y,j)=>b[j]=y.toLowerCase())||"l")}else{if(l!="  "){r+=b[+l[0]][l.length-1]}else{r+=" "}}});return r}
代码语言:javascript
复制
f=(a,b)=>{u="l";p=[];r="";a.split``.map((c,i)=>p.push(c!=a[i-1]?" "+c:c));p.join``.trim().replace('   ', ' ').split` `.map(l=>{if(l=="#"){u=(u=="l"?b.forEach((y,j)=>b[j]=y.toUpperCase())||"u":b.forEach((y,j)=>b[j]=y.toLowerCase())||"l")}else{if(l!="  "){r+=b[+l[0]][l.length-1]}else{r+=" "}}});return r}

console.log(f("#4440555#666888330#999#66688111 ",["  ",".,!","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]));
console.log(f("#6#33777 7779990#222#4477744477778627777111",["  ",".,!","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]));
console.log(f("#44#27 79990#66#3390#999#332777111",["  ",".,!","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]));

我知道这很长,但这是我所能做的最好的。

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/104379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档