平衡大写
哦,不!这些句子不合适平衡。快! 平衡它们。给一个有单词的句子,平衡每个单词,用大写字母在右手边表示,用大写字母在左手边表示。另一种是,定义为如下:A集
解答动态
eYg6#rN4Lho→XK/THgt;2`lt;;fDAm0SR
eYg6#RN4LhOFoo_bar→FoO_bar (quot;不应包含在输出中)
这是codegolf,因此尝试实现最少字节数
Jelly,18字节数 =s?g?@uti?u=?u?T?? 采用字符串参数并打印结果的完整程序。
在线尝试!怎么做? =?s?g?@?u=?u?T?-主链接:字符列表?s-交换大小写(仅影响字母字符)=-(s)等于(that);向量?g-相等元素的组运行?@-(s)类似(that)-quot;(任何单个非字母字符现在都是一个单词)μ)-对于每个(该单词中的单词):
-稀疏应用程序。。。?-…到索引:最后四个链接作为单子:?u-大写(单词)=-(单词)等于(that);向量?-反转T-真实索引?u-…操作:大写(索引处的字符)-隐式,粉碎打印(只打印列表中的字符) 对我来说似乎有点长:
分区原子(??、??、?P和?P)在这里似乎没有多大帮助,尽管看起来它们应该。也许吧有一种方法可以通过压缩(";)一个二进函数来缩短代码,每个二进函数的反方向是(U)?JavaScript语言(节点.js),76 72 bytes 由于@tsh
s=gt;Buffer(w).map((c,i,a)=amp;=a[w.length+~i]95)) 在线试用!
Commented s=gt;//对于每个单词w:Buffer(w)//将其转换为Buffer.map((c,i,a)=amp;=//c的按位与:a[w.length+~i]//从单词95//或0b1011111///(除小写位以外的所有字母位)结尾获取的对应字符//映射()//将缓冲区隐式强制为字符串)//replace()的结尾
Perl 5-p,60 bytes s
\pL+
$i=0;join“”,map$F[--$i]=~/[a-Z]/?uc:$\F,@F=$&;=~//g
ge 在线试用!
Ruby,73 72字节 ->;s{s.gsub(/[A-Z]+/i){
A
r=0;w='';A.bytes{
b
wgt;?Z?b: b&;95)};w}} 在线试用!
视网膜0.8.2,62字节 t`l`l`.(?=([A-Za-z])*)(?gt;(?gt;)【A-Z】(?lt;=(?=)(?gt;(?gt;)*) 。。。匹配相同数量的字符,…
[A-Z] 。。。后跟一个大写字母。
T`l`l` 大写匹配字母。
Stax,19 16 bytes ?;√∩b?Aμ╗∞q?J,╕* 运行并调试it
使用规则集替换[A-Za-z]+的每个匹配项。
-3,借用Jonathan Allan的答案中的不真实想法。
Explanation V^{c{96amp;}R stringV^regex的隐式输入:quot;{c{96amp;}R用以下regex替换每个匹配项:c复制匹配的{96amp;大写匹配那些索引外壳,16 13字节1??zo?援助?在线试试吧!
?o√#首先?根据元素是否为字母?#将输入分组到子列表(单词)中,现在映射到单词列表中,并使用函数Sz将结果连接到字符串中? #使用μ)2参数lambda函数将每个单词及其反面压缩在一起:?D?#如果arg 1是大写a2#返回arg 2的大写I#否则返回arg 2不变C(gcc),126 bytes f(s,b,e)char*s,*b,*e;{for(b=s;!isalpha(*b);++b);for(e=b;isalpha(*++e););for(s=e;bamp;*b&;32
(*bamp;=95);*slt;e;//循环,直到指向//开头的指针没有在//指向末尾的指针之前++b)*--e//将b和e向中间移动++b)//将b向前移动到//每个循环的末尾*--e//将e向前移动在//每个循环的开头向后*--eamp;32
//如果两个字符都不是(//都是小写,那么*bamp;=95//和第二个字符大写//case无关大小写)*s&;//如果我们不在s的末尾f(s);//进入下一个单词}
Julia,76 bytes n-quot;[a-zA-Z]+gt;x-gt;c-32(x[L-=1]lt;c),x))) 联机试用!
05AB1E,15 14字节 -1感谢Makonede!(复制TOS,然后反向TOS有一个内置的单字节,
.γa}ε- End
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。