C,得分2, 747个 720 662字节
L [ 1 << 7 ] , * q , * r , l , d , i , c , j , s , t , k = 1 << 7 ; h ( ) { q = s + i + j ++ ; * q % k && ! L [ * q % k ] ++ && h ( ++ c ) ; } g ( ) { q = s + i ; * q % k ? z ( k ) , h ( j = c = 0 ) , c > d && ( d = c ) && ( l = i ) , g ( ++ i ) : 0 ; } f ( S , T ) { s = S ; l = i = d = 0 ; g ( t = T ) ; p ( i = 0 ) ; } p ( ) { q = s + l + i ; r = t + i ; i ++ < d ? p ( * r = * q ) : ( * r = 0 ) ; } z ( i ) { L [ -- i ] = 0 ; i && z ( i ) ; }
至少可在32位MinGW上运行(禁用优化)。不使用单个关键字。
显然也可以与gcc和clang一起在TIO上工作:在线尝试!(感谢@Dennis!)
致电:
int main()
{
char str[1024];
f("Good morning, Green orb!", str);
puts(str);
f("fffffffffff", str);
puts(str);
f("oiiiiioiiii", str);
puts(str);
f("1234567890", str);
puts(str);
f("L [ 1 << 7 ] , * q , * r , l , d , i , c , j , s , t , k = 1 << 7 ; h ( ) { q = s + i + j ++ ; * q % k && ! L [ * q % k ] ++ && h ( ++ c ) ; } g ( ) { q = s + i ; * q % k ? z ( k ) , h ( j = c = 0 ) , c > d && ( d = c ) && ( l = i ) , g ( ++ i ) : 0 ; } f ( S , T ) { s = S ; l = i = d = 0 ; g ( t = T ) ; p ( i = 0 ) ; } p ( ) { q = s + l + i ; r = t + i ; i ++ < d ? p ( * r = * q ) : ( * r = 0 ) ; } z ( i ) { L [ -- i ] = 0 ; i && z ( i ) ; }");
puts(str);
}
输出:
格式更具可读性的代码:
L[1<<7],
*q, *r, l, d, i, c, j, s, t, k=1<<7;
h()
{
q = s+i+j++;
*q%k && !L[*q%k]++ && h(++c);
}
g()
{
q = s+i;
*q%k ? z(k), h(j=c=0), c>d && (d=c) && (l=i), g(++i) : 0;
}
f(S, T)
{
s = S;
l = i = d = 0;
g(t=T);
p(i=0);
}
p()
{
q = s+l+i;
r = t+i;
i++<d ? p(*r=*q) : (*r=0);
}
z(i)
{
L[--i] = 0;
i && z(i);
}
这可用于生成适当的间距,以得到分数2的格式:在线尝试!
C,得分3,309个字节
i
,
j
,
l
,
c
,
d
;
f
(
\
c\
\
h\
\
a\
\
r
*
s
)
{
\
f\
\
o\
\
r
\
(
i
=
l
=
d
=
0
;
s
[
i
]
;
c
>
d
&&
(
d
=
c
)
&&
(
l
=
i
)
,
++
i
)
\
f\
\
o\
\
r
(
\
c\
\
h\
\
a\
\
r
L
[
\
1\
\
2\
\
8
\
]
=
{
j
=
c
=
0
}
;
s
[
i
+
j
]
&&
!
L
[
s
[
i
+
j
++
]
]
++
;
++
c
)
;
\
w\
\
r\
\
i\
\
t\
\
e
(
1
,
s
+
l
,
d
)
;
}
在线尝试!
11122324455
Jonathan Allan意识到我的第一个修订版没有正确处理它。