首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >穿过字母表

穿过字母表
EN

Code Golf用户
提问于 2015-11-07 20:50:41
回答 2查看 819关注 0票数 13

跨字母表

在这个挑战中,你很难记住字母表中的字母。为了避免这种情况,你可以在字母表上上下移动,直到你到达字母为止。

因为您希望代码是可移植的,所以您将使用字母块来编写它。您有有限数量的字母块,因为其中大多数是被盗的,所以您需要确保您的代码尽可能短。

示例

输入/输出对用空行分隔:

代码语言:javascript
复制
Ac
ABc

Ad
ABcd

fA
fedCBA

adB
abcdcB


Hello, World!
HGfefghijkllmno, WVUTSrqpopqrqponmlkjihgfed!

挑战

您的目标是用字母(A-Za-z)之间的所有中间字母链接相邻的字母。如果大写不同,则应在中间转换大写。如果资本化不能在中间均匀地转换,它就会在中间之后解体。如果某个字符不是按字母顺序排列的字符,则不应该进行转换。

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

-10%奖金:如果您的代码链数字

EN

回答 2

Code Golf用户

回答已采纳

发布于 2015-11-16 06:06:31

Pyth,40字节

代码语言:javascript
复制
+sm?-rdZGhd+hdsrVc2jktr.*rdZm!}kGd.:z2ez

在网上试试。

票数 4
EN

Code Golf用户

发布于 2015-11-09 07:33:02

Python 2,349字节

太长了,但至少是第一次。

代码语言:javascript
复制
f=lambda p:ord(p.lower())
u=lambda p:"".join(p).upper()
s=raw_input()
w=s[0]
r=w
for q in s[1:]:
 o=q+w
 if q==w:o=""
 if o.isalpha():
  m=(f(w)<f(q))*2-1
  e=map(chr,range(f(w)+m,f(q)+m,m))
  if o==u(o):e=u(e)
  elif q==u(q):e[len(e)/2:]=u(e[len(e)/2:])
  elif -o.islower()+1:e[:len(e)/2]=u(e[:len(e)/2])
  r+="".join(e)
 else:
  r+=q
 w=q
print r
票数 0
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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