首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帮爱丽丝解决她的短信!

帮爱丽丝解决她的短信!
EN

Code Golf用户
提问于 2021-07-01 21:25:43
回答 17查看 2.5K关注 0票数 25

当爱丽丝在她的QWERTY键盘上触摸输入时(图1),她不小心用一个键把双手向右移动,所以q变成了ww变成了e等等(p变成了[)。空格没有受到影响,因为空格键很大。

您的任务是帮助她使用最短的字节数来修复她的消息,即取消她的手势移动。更准确地说,您将得到一个由wertyuiop[sdfghjkl;xcvbnm,中的空格和字符组成的字符串,您需要将这些字符映射到qwertyuiopasdfghjklzxcvbnm,并保持空格不变。

下面是一些测试用例来测试您的程序:

代码语言:javascript
复制
input      output
----------------------
s[[;r      apple
s gom      a fin
werty      qwert
uiop[      yuiop
sdfgh      asdfg
jkl;       hjkl
xcvb       zxcv
nm,        bnm
 ;p;;o[p[   lollipop
[2 spaces] [2 spaces]

( lollipop测试用例以空格开头)

图1: Alice的QWERTY键盘

我是密码-高尔夫。最短答案(以字节为单位)获胜。

EN

回答 17

Code Golf用户

发布于 2021-07-01 21:29:00

果冻,15字节

代码语言:javascript
复制
ØqḊ€ż“[;,”F,Fyɠ

在网上试试!

通过STDIN获取输入

是如何工作的

代码语言:javascript
复制
ØqḊ€ż“[;,”F,Fyɠ - Main link. Takes no arguments
Øq              - Set the return value to ['qwertyuiop', 'asdfghjkl', 'zxcvbnm']
  Ḋ€            - Dequeue each; ['wertyuiop', 'sdfghjkl', 'xcvbnm']
    ż“[;,”      - Zip with "[;,"; [['wertyuiop', '['], ['sdfghjkl', ';'], ['xcvbnm', ',']]
          F     - Flatten; "wertyuiop[sdfghjkl;xcvbnm,"
            F   - Flatten the return value; "qwertyuiopasdfghjklzxcvbnm"
           ,    - Pair; ['wertyuiop[sdfghjkl;xcvbnm,', 'qwertyuiopasdfghjklzxcvbnm']
              ɠ - Read a line from STDIN
             y  - Translate. Map w -> q, e -> w, etc.
票数 12
EN

Code Golf用户

发布于 2021-07-01 22:01:07

J,43字节

代码语言:javascript
复制
'qwertyuiop[asdfghjkl;zxcvbnm,  '(<:@i:{[)]

在网上试试!

  • 'qwertyuiop[asdfghjkl;zxcvbnm, '完整的键盘,包括移走的最左边的字符和额外的字符[;,,以及两个额外的空格。
  • <:@i:在其中找到输入的索引,从右边搜索,然后减去一个。
  • {[在步骤1中从字符串中提取那些移位的索引。
票数 10
EN

Code Golf用户

发布于 2021-07-02 02:56:47

C++ (Windows ),92字节

代码语言:javascript
复制
#include<Windows.h>
void f(PCH s){for(;*s;)*s++=MapVirtualKey(OemKeyScan(*s)-(*s>32),1)|32;}

将输入作为一个char* (PCHchar*的the ),通过修改字符串来输出。

想利用一些内置的东西。但似乎不太短。也许有人会采纳这个想法,在其他语言中做一个更短的想法。

OemKeyScan将密钥转换为其扫描代码,'q' -> 16'w' -> 17'e' -> 18、.、'p' -> 25'a' -> 30、.、'l' -> 38'z' -> 44、.、'm' -> 50MapVirtualKey将扫描代码转换回(大写)字符。

被ErikF保存了一个字节。

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

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

复制
相关文章

相似问题

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