首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >电话号码中的字母

电话号码中的字母
EN

Code Golf用户
提问于 2014-02-18 23:51:28
回答 30查看 17.9K关注 0票数 29

问题:

您正在制作一个新的手机,人们可以在其中输入专门的电话号码,例如1-800-program,然后将它们自动转换为可用的电话号码,比如1-800-7764726 (对于前面的示例)。

您的程序将接收一个字符串,如果有任何长度的数字,字母和破折号,并将所有的字母转换成相应的数字。

这里有一个键盘,供参考:

规则:

  • 您的程序将收到一个字符串。
  • 它将处理它并返回/打印另一个字符串。
  • 任何语言都被接受。
  • 因为它是密码-高尔夫,最短的代码就赢了。
EN

回答 30

Code Golf用户

回答已采纳

发布于 2014-02-20 02:17:45

GolfScript,24 chars

代码语言:javascript
复制
{.96>{,91,'qx'+-,3/`}*}%

测试输入:

代码语言:javascript
复制
0123456789-abcdefghijklmnopqrstuvwxyz

测试输出:

代码语言:javascript
复制
0123456789-22233344455566677778889999

解释:

  • { }%将大括号之间的代码应用于输入的每个字符。
  • .96>{ }*执行内部大括号之间的代码当且仅当字符的ASCII代码大于96 (即它是小写字母)。
  • 第一个,将字符转换为所有字符的列表,其中所有字符的ASCII代码较低,而91,'qx'+-从列表中筛选出所有代码小于91的字符,以及字母qx。因此,例如,字符a被转换为6个字符列表[\]^_`,而z被转换为29个字符列表[\]^_`abcdefghijklmnoprstuvwy
  • 第二个,计算列表中剩下的元素,3/将这个计数除以三个(四舍五入)。最后,`将结果数字(在2-9范围内)转换为字符串。

因此,按照规范,连字符和数字保持不变,而小写字母则根据参考键盘图映射为数字。代码实际上将干净地传递所有可打印的ASCII字符,除了小写字母(正如所描述的那样映射)和字符{|} (它们映射到两个字符的字符串10)。非ASCII 8位输入将产生各种奇怪的数字输出.

在所有这些之后,这只比平凡bash解只差了六个字符,这有点令人失望。

票数 9
EN

Code Golf用户

发布于 2014-02-19 00:08:15

Bash,30

编辑:谢谢你的门把手消除了3个字符。

代码语言:javascript
复制
tr a-z 22233344455566677778889

示例:

票数 51
EN

Code Golf用户

发布于 2014-02-19 00:37:26

Javascript -103个字符

代码语言:javascript
复制
alert(prompt().replace(/[a-z]/g,function(y){y=y.charCodeAt(0)-91;return y>27?9:y>24?8:y>20?7:~~(y/3)}))
票数 4
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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