CJam ( 100 98 91 89 83 바이트)
1a{_[XX]*\_{_0a*}:E~\{E\_{ff*W%{0@+.+}*}:C~.+2f/}:D~.+C.+3f/1\+}q~:I*DE1$D.-X\+.+I=
stdin에서 입력을 가져오고 stdout으로 출력합니다. 이것은 및 0
의 정의를 인라인하여 2 바이트를 절약하기 위해 입력 을 처리하지 않는 라이센스를 이용합니다 . 온라인 데모C
D
NB는 매우 느리고 메모리 비효율적입니다. 배열을 트리밍함으로써 훨씬 빠른 버전을 얻을 수 있습니다 (3 바이트 이상). 온라인 데모 .
해부
000,598 ( X )000,678 ( X )000,599 ( X )000,602 ( X )====1 + x Z( S삼; 000,598 ( X ) )x Z( S4; 000,598 ( X ) )지( S2; 000,598 ( X ) - 1 )A 000678 ( x ) − A 000599 ( x ) + A 000598 ( x2)
어디 지( S엔; 에프( x ) ) 대칭 그룹의 사이클 인덱스를 나타냅니다. 에스엔 기능에 적용 에프( x ).
나는 이것을 약간의 골퍼 분해로 조작 한 다음 중간 시퀀스를 찾아서 OEIS에도 있음을 발견했다.
000,642 ( X )000,631 ( X )000,602 ( X )===지( S2, A 000598 ( x ) )지( S2, A 000642 ( x ) )A 000642 ( x ) + x A 000642 ( x2) − x A 000631 ( x )
이전 버전 C
은 이 답변 에서 차단 (다항식으로 나눠 짐)을 재사용했습니다 . 훨씬 더 짧은 것을 찾았지만 체인 질문에 의한 답변을 업데이트 할 수 없습니다.
1a e# Starting from [1]...
{ e# Loop I times (see below) to build A000598 by f -> 1 + Z(S_3; f)
_[XX]* e# Copy and double-inflate to f(x^3)
\_ e# Flip and copy: stack is f(x^3) f(x) f(x)
{_0a*}:E~ e# Assign copy-and-inflate to E and execute
e# Stack: f(x^3) f(x) f(x) f(x^2)
\ e# Flip
{ e# Define and execute block D, which applies f -> Z(S_2;f)
e# Stack: ... f
E\_ e# Stack: ... f(x^2) f(x) f(x)
{ e# Define and execute block C, which convolves two sequences
ff* e# Multiply copies of the second sequence by each term of the first
W% e# Reverse
{ e# Fold
0@+.+ e# Prepend a 0 to the first and pointwise sum
}*
}:C~ e# Stack: ... f(x^2) f(x)^2
.+2f/ e# Pointwise average
}:D~ e# Stack: f(x^3) f(x) f(x^2) Z(S_2;f(x))
.+C e# Stack: f(x^3) f(x)*(f(x^2) + Z(S_2;f(x)))
.+3f/ e# Add and divide by 3 to finish computing Z(S_3; f)
1\+ e# Prepend a 1
}
q~:I e# Read input to I
* e# Loop that many times
e# Stack: I+1 terms of A000598 followed by junk
D e# Stack: I+1 terms of A000642 followed by junk
E1$D e# Stack: A000642 A000642(x^2) A000631
.-X\+.+ e# Stack: A000602
I= e# Extract term I