Code 2021的出现事件的一部分。有关详细信息,请参阅链接的元帖子。
故事继续从2018年第3天。
但你不是布布勒,你是莱克斯!是啊我知道。
经过很长一段时间的混乱,精灵们终于就如何裁剪织物达成了一致。不幸的是,第二天,他们想出了如何利用剩菜-做一个超长的礼物包装带。好吧,如果它能缩小圣诞老人,它也能缩小礼物.
该条的描述是一个ODCF字符串,它恰好是Elvish (完全不是这个精灵)中“上下左右”的第一个字母。将织物分成1cm×1cm正方形单元格,在中间的某个位置选择一个起始单元,然后根据描述四处移动以声明条带。
因此,如果字符串是OOCOFFFDD,您将得到这个条带,从X开始:
OFFF
CO.D
.O.D
.X....。除了精灵给你的那条是自相交的,所以它根本不起作用(1平方厘米的布料部分不能神奇地变成2平方厘米--这是物理的,至少在圣诞老人到来之前是这样)。
给定字符串OOCOFFFDDCCCD,?是条形自相交的位置:
OFFF
CO.D
C?CD
DX..为了避免?单元格成为问题,可以通过两种方式获取它的子字符串(给定字符串的一个连续部分):OOCOFFFDDC (删除最后3个字符)和COFFFDDCCCD (删除前两个字符),
OFFF
CO.D
.OCD
.X..
OFFF
CX.D
CCCD
D...在这两个方案和所有其他备选方案中,上述两个选项中的后者是最长的。
给定一个非空的ODCF字符串,确定其最长子字符串的长度,从中可以生成有效(非自交)条。假设剩余的fabric足够大,足以覆盖输入的任何有效子字符串。
适用标准的密码-高尔夫规则。以字节为单位的最短代码获胜。
C -> 1
ODD -> 2 (DD)
OOCOFFFDD -> 9 (whole input)
OOCOFFFDDCCCD -> 11 (whole input minus first 2)
OOOFFDCCCDFFFDCOOO -> 12 (minus first 3 and last 3)发布于 2021-12-18 06:01:27
发布于 2021-12-18 00:15:17
s->vecmax([vecmin([#[1|k<-[j..p=#s+a=0],p*=a+=I^(Vecsmall(s)[k]%69)]+j-i|j<-[i..#s]])|i<-[1..#s]])发布于 2021-12-18 11:40:38
|i:&str|i.bytes().scan((vec![],[0,0]),|(v,p),c|{v.push(*p);p[c as usize%23&1]+=1-c as i64%2*2;while v.contains(&p){v.remove(0);};Some(v.len())}).max()未高尔夫球:
|i: &str| {
i.bytes()
.scan((vec![], [0, 0]), |(v, p), c| {
v.push(*p);
p[c as usize % 23 & 1] += 1 - c as i64 % 2 * 2;
while v.contains(&p) {
v.remove(0);
}
Some(v.len())
})
.max()
}https://codegolf.stackexchange.com/questions/239721
复制相似问题