首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AlTeRnAtE tHe CaSe

AlTeRnAtE tHe CaSe
EN

Code Golf用户
提问于 2017-05-25 17:17:08
回答 23查看 20.9K关注 0票数 48

对于今天的挑战,您必须编写一个程序或函数来交替字符串的情况。但是,您必须忽略非字母字符.这意味着每个字母字符必须有一个与前面和后面的字母字符不同的大小写。例如,这比每一个字母都要复杂一些。如果您使用字符串,如

代码语言:javascript
复制
hello world

将所有其他字符转换为大写,您将得到:

代码语言:javascript
复制
hElLo wOrLd

如您所见,小写o后面跟着小写w。这是无效的。相反,您必须忽略这个空间,给出以下结果:

代码语言:javascript
复制
hElLo WoRlD

所有非字母字符必须保持不变。只要输出始终交替,输出可以从大写或小写开始。这意味着以下也是可以接受的产出:

代码语言:javascript
复制
HeLlO wOrLd

无论输入的情况如何,您的程序都应该工作。

输入字符串将只包含可打印ASCII,因此不必担心不可打印的字符、换行符或unicode。您的提交既可以是一个完整的程序,也可以是一个函数,您可以以任何合理的格式接受输入和输出。例如,函数参数/返回值、STDIN/STDOUT、读/写文件等。

示例:

代码语言:javascript
复制
ASCII                                   ->  AsCiI
42                                      ->  42
#include <iostream>                     ->  #InClUdE <iOsTrEaM>
LEAVE_my_symbols#!#&^%_ALONE!!!         ->  lEaVe_My_SyMbOlS#!#&^%_aLoNe!!!
PPCG Rocks!!! For realz.                ->  PpCg RoCkS!!! fOr ReAlZ.
This example will start with lowercase  ->  tHiS eXaMpLe WiLl StArT wItH lOwErCaSe
This example will start with uppercase  ->  ThIs ExAmPlE wIlL sTaRt WiTh UpPeRcAsE
A1B2                                    ->  A1b2

因为这是密码-高尔夫,标准的漏洞会被应用,以字节为单位的最短答案将获胜!

EN

回答 23

Code Golf用户

发布于 2017-05-25 17:35:30

GNU Sed,33

  • 由于@TobySpeight保存了5个字节

分数包括+1的-r标志到sed。

代码语言:javascript
复制
s/([a-z])([^a-z]*.?)/\U\1\L\2/gi

在网上试试

票数 12
EN

Code Golf用户

发布于 2017-05-25 17:21:39

果冻,13字节

代码语言:javascript
复制
nŒsTm2
ŒlŒuǦ

在网上试试!

是如何工作的

代码语言:javascript
复制
ŒlŒsǦ  Main link. Argument: s (string)

Œl      Cast to lowercase.
    Ǧ  At indices returned by the helper link...
  Œu        apply uppercase.


nŒsTm2      Helper link. Argument: s (string)

 Œs         Apply swapcase to s.
n           Perform vectorizing not-equal comparison.
   T        Compute the truthy indices.
    m2      Select every other one, starting with the first.
票数 8
EN

Code Golf用户

发布于 2017-05-27 04:56:03

爱丽丝,18字节

代码语言:javascript
复制
/olZlYuN
@iy.u..//

在网上试试!

解释

这个程序遵循一个不太为人所知的奇数长度程序模板,它完全以序数模式运行.此代码的线性化版本是:

代码语言:javascript
复制
il.l.uN.YuZyo@

对守则的解释:

代码语言:javascript
复制
i - push input onto stack            ["Hello world!"]
l - convert to lowercase             ["hello world!"]
. - duplicate                        ["hello world!", "hello world!"]
l - convert to lowercase (should be no-op, but avoids what seems to be a bug in the TIO implementation)
. - duplicate again                  ["hello world!", "hello world!", "hello world!"]
u - convert to uppercase             ["hello world!", "hello world!", "HELLO WORLD!"]
N - difference between sets          ["hello world!", "helloworld"]
. - duplicate reduced string         ["hello world!", "helloworld", "helloworld"]
Y - unzip (extract even positions)   ["hello world!", "helloworld", "hlool", "elwrd"]
u - convert to uppercase             ["hello world!", "helloworld", "hlool", "ELWRD"]
Z - zip evens back into string       ["hello world!", "helloworld", "hElLoWoRlD"]
y - perform substitution             ["hElLo WoRlD!"]
o - output                           []
@ - terminate

如果在复制时不使用l,则N后面的堆栈将是["helloworld", "helloworld"]。我强烈怀疑这是个窃听器。

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

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

复制
相关文章

相似问题

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