#Haskell, (削除) 120 (削除ここまで) 105
Haskell, (削除) 120 (削除ここまで) 105
f s|t<-l s=maximum[g$drop t$iterate(\i->s!!mod(i+s!!mod i t)t)i|i<-s]
g(x:s)=l0ドル:fst(span(/=x)o)
l=length
this generates an infinite list for each starting point (for golfing reasons we iterate over all values instead of all indexes, which are equivalent). then it calculates the cycle of each list (the cycle length of xs is xs % []).
it uses @jakubes's observations about cycles. because it steps 2 steps at a time, we don't need to divide by 2 at the end.
Edit: now using @MthViewMark's trick of dropping the first n elements to guarantee having a cycle with the first element. by the way, I managed to golf his algorithm to 112 characters:
l=length
o(x:y)=1+l(takeWhile(/=x)y)
j a|n<-l a=maximum$map(o.drop n.iterate(\i->mod(a!!mod(i+a!!i)n)n))[0..n-1]
#Haskell, (削除) 120 (削除ここまで) 105
f s|t<-l s=maximum[g$drop t$iterate(\i->s!!mod(i+s!!mod i t)t)i|i<-s]
g(x:s)=l0ドル:fst(span(/=x)o)
l=length
this generates an infinite list for each starting point (for golfing reasons we iterate over all values instead of all indexes, which are equivalent). then it calculates the cycle of each list (the cycle length of xs is xs % []).
it uses @jakubes's observations about cycles. because it steps 2 steps at a time, we don't need to divide by 2 at the end.
Edit: now using @MthViewMark's trick of dropping the first n elements to guarantee having a cycle with the first element. by the way, I managed to golf his algorithm to 112 characters:
l=length
o(x:y)=1+l(takeWhile(/=x)y)
j a|n<-l a=maximum$map(o.drop n.iterate(\i->mod(a!!mod(i+a!!i)n)n))[0..n-1]
Haskell, (削除) 120 (削除ここまで) 105
f s|t<-l s=maximum[g$drop t$iterate(\i->s!!mod(i+s!!mod i t)t)i|i<-s]
g(x:s)=l0ドル:fst(span(/=x)o)
l=length
this generates an infinite list for each starting point (for golfing reasons we iterate over all values instead of all indexes, which are equivalent). then it calculates the cycle of each list (the cycle length of xs is xs % []).
it uses @jakubes's observations about cycles. because it steps 2 steps at a time, we don't need to divide by 2 at the end.
Edit: now using @MthViewMark's trick of dropping the first n elements to guarantee having a cycle with the first element. by the way, I managed to golf his algorithm to 112 characters:
l=length
o(x:y)=1+l(takeWhile(/=x)y)
j a|n<-l a=maximum$map(o.drop n.iterate(\i->mod(a!!mod(i+a!!i)n)n))[0..n-1]
#Haskell, (削除) 120 (削除ここまで) 105
f s|t<-l s=maximum[g$drop t$iterate(\i->s!!mod(i+s!!mod i t)t)i|i<-s]
g(x:s)=l0ドル:fst(span(/=x)o)
l=length
this generates an infinite list for each starting point (for golfing reasons we iterate over all values instead of all indexes, which are equivalent). then it calculates the cycle of each list (the cycle length of xs is xs % []).
it uses @jakubes's observations about cycles. because it steps 2 steps at a time, we don't need to divide by 2 at the end.
Edit: now using @MthViewMark's trick of dropping the first n elements to guarantee having a cycle with the first element. by the way, I managed to golf his algorithm to 112 characters:
l=length
o(x:y)=1+l(takeWhile(/=x)y)
j a|n<-l a=maximum$map(o.drop n.iterate(\i->mod(a!!mod(i+a!!i)n)n))[0..n-1]
#Haskell, (削除) 120 (削除ここまで) 105
f s|t<-l s=maximum[g$drop t$iterate(\i->s!!mod(i+s!!mod i t)t)i|i<-s]
g(x:s)=l0ドル:fst(span(/=x)o)
l=length
this generates an infinite list for each starting point (for golfing reasons we iterate over all values instead of all indexes, which are equivalent). then it calculates the cycle of each list (the cycle length of xs is xs % []).
it uses @jakubes's observations about cycles. because it steps 2 steps at a time, we don't need to divide by 2 at the end.
Edit: now using @MthViewMark's trick of dropping the first n elements to guarantee having a cycle with the first element.
#Haskell, (削除) 120 (削除ここまで) 105
f s|t<-l s=maximum[g$drop t$iterate(\i->s!!mod(i+s!!mod i t)t)i|i<-s]
g(x:s)=l0ドル:fst(span(/=x)o)
l=length
this generates an infinite list for each starting point (for golfing reasons we iterate over all values instead of all indexes, which are equivalent). then it calculates the cycle of each list (the cycle length of xs is xs % []).
it uses @jakubes's observations about cycles. because it steps 2 steps at a time, we don't need to divide by 2 at the end.
Edit: now using @MthViewMark's trick of dropping the first n elements to guarantee having a cycle with the first element. by the way, I managed to golf his algorithm to 112 characters:
l=length
o(x:y)=1+l(takeWhile(/=x)y)
j a|n<-l a=maximum$map(o.drop n.iterate(\i->mod(a!!mod(i+a!!i)n)n))[0..n-1]
#Haskell, 120(削除) 120 (削除ここまで) 105
(x:s)%o|elemf xs|t<-l o=l0ドル:fst(span(/=x)o)|0<1=s%(x:o)
fs=maximum[g$drop s|j<t$iterate(\i->s!!mod(si+s!!mod i t).t)i|i<-s]
g(`mod`l x:s)=maximum[iterate(j.=l0ドル:fst(j>>=span(+)/=x)o)i%[]|i<-s]
l=length
this generates an infinite list for each starting point (for golfing reasons we iterate over all values instead of all indexes, which are equivalent). then it calculates the cycle of each list (the cycle length of xs is xs % []).
it uses @jakubes's observations about cycles. because it steps 2 steps at a time, we don't need to divide by 2 at the end.
Edit: now using @MthViewMark's trick of dropping the first n elements to guarantee having a cycle with the first element.
#Haskell, 120
(x:s)%o|elem x o=l0ドル:fst(span(/=x)o)|0<1=s%(x:o)
f s|j<-(s!!).(`mod`l s)=maximum[iterate(j.(j>>=(+)))i%[]|i<-s]
l=length
this generates an infinite list for each starting point (for golfing reasons we iterate over all values instead of all indexes, which are equivalent). then it calculates the cycle of each list (the cycle length of xs is xs % []).
it uses @jakubes's observations about cycles. because it steps 2 steps at a time, we don't need to divide by 2 at the end.
#Haskell, (削除) 120 (削除ここまで) 105
f s|t<-l s=maximum[g$drop t$iterate(\i->s!!mod(i+s!!mod i t)t)i|i<-s]
g(x:s)=l0ドル:fst(span(/=x)o)
l=length
this generates an infinite list for each starting point (for golfing reasons we iterate over all values instead of all indexes, which are equivalent). then it calculates the cycle of each list (the cycle length of xs is xs % []).
it uses @jakubes's observations about cycles. because it steps 2 steps at a time, we don't need to divide by 2 at the end.
Edit: now using @MthViewMark's trick of dropping the first n elements to guarantee having a cycle with the first element.