Esta é uma revisão geral desta pergunta excluída por ar kang . Se o OP dessa pergunta desejar recuperar essa pergunta ou tiver algum problema ao postar isso, ficarei feliz em acomodar
Dada uma lista de números inteiros como entrada, encontre a soma máxima possível de uma sub-lista contínua que comece e termine com o mesmo valor. As sublistas devem ter pelo menos 2. Por exemplo, para a lista
[1, 2, -2, 4, 1, 4]
Existem 2 sublistas contínuas diferentes, iniciando e terminando com o mesmo valor
[1,2,-2,4,1] -> 6
[4,1,4] -> 9
A soma maior é 9, então você gera 9.
Você pode assumir que cada entrada contém pelo menos 1 duplicado.
Isso é código-golfe, então as respostas serão pontuadas em bytes, com menos bytes sendo melhores.
Casos de teste
[1,2,-2,4,1,4] -> 9
[1,2,1,2] -> 5
[-1,-2,-1,-2] -> -4
[1,1,1,8,-1,8] -> 15
[1,1,1,-1,6,-1] -> 4
[2,8,2,-3,2] -> 12
[1,1,80] -> 2
[2,8,2,3,2] -> 17
code-golf
number
array-manipulation
Assistente de Trigo
fonte
fonte
[2,8,2,3,2]
ser 12 ou 17? Eu presumo 17.Respostas:
Haskell , 62 bytes
f
pega uma lista de números inteiros e retorna um número inteiro.Experimente online!
Como funciona
t
é a função padrão "obter todos os sufixos de uma lista sem importarData.List.tails
".f l
, a compreensão da lista interage com todos os sufixos não vazios da lista de argumentosl
, com o primeiro elementox
e o restantem
.m
, selecionando o primeiro elementoy
e o restanten
.x
ey
for igual, a compreensão da lista inclui a soma dos elementos entre eles. Esta sub-lista é igualx:m
à do seu sufixon
retirado, portanto, a soma pode ser calculada comox+sum m-sum n
.fonte
JavaScript (ES6),
6862 bytesCasos de teste
Mostrar snippet de código
Comentado
fonte
y - a[i]
e(x += y) < m
- IMHO o código seria um pouco mais claro com eles trocados, desde então, parece um simples golfe de(x += y) < m || y != a[i]
.(x+=y)<m|y-a[i]
poderia ser mal interpretado(x+=y)<(m|y-a[i])
também. Não tenho certeza se isso realmente afastaria a ambiguidade. (Editado qualquer maneira porque eu tendem a preferir esta versão.)y-a[i]|(x+=y)<m
como(y-a[i]|(x+=y))<m
...Gelatina , 12 bytes
Experimente online!
Como funciona
fonte
Casca , 10 bytes
Experimente online!
Explicação
fonte
Haskell , 66 bytes
Experimente online!
fonte
R ,
108103908883 bytesExperimente online!
combn
ataca novamente! Gera pelo menos todas as sublistas de comprimento2
, define a soma da sub-lista como-Inf
se o primeiro e o último não forem iguais e obtém o máximo de todas as somas.O
"if"
recurso gera vários avisos, mas eles são ignorados com segurança - esse é provavelmente o melhor truque de golfe aqui,rev(p)-p
é zero no primeiro elemento sep[1]==tail(p,1)
e"if"
usa o primeiro elemento de sua condição com um aviso.fonte
Python 3 , 81 bytes
Experimente online!
fonte
Python , 62 bytes
Experimente online!
Gera uma lista de singleton .
fonte
Gelatina ,
13, 12 bytesExperimente online!
Um byte salvo pelo Sr. Xcoder, que atualmente está competindo comigo. : D
Explicação:
fonte
Wolfram Language (Mathematica) , 54 bytes
Experimente online!
fonte
Pitão, 15 bytes
Experimente online
Explicação
fonte
05AB1E , 9 bytes
Experimente online!
Explicação
fonte
Limpo ,
949086 bytesExperimente online!
fonte
[1, 1, 80]
caso de teste.Python 2 , 86 bytes
Superado por Dennis
Experimente online!
Gera todas as sublistas maiores que o comprimento 2, onde o primeiro elemento é igual ao último, mapeia cada uma delas à sua soma e seleciona o maior valor.
fonte
enumerate
.Ruby , 64 bytes
Experimente online!
fonte
Julia 0.6 , 70 bytes
Experimente online!
fonte
Gelatina , 11 bytes
Usa alguns recursos que pós-datam o desafio.
Experimente online!
Como funciona?
-1 com a ajuda de caird .
fonte
Lote, 179 bytes
Recebe a entrada como parâmetros da linha de comando.
fonte
C, 104 bytes
Experimente online!
C (gcc) , 99 bytes
Experimente online!
fonte
Clojure, 92 bytes
fonte
Java 8, 129 bytes
Para cada número inteiro
X
na lista, a função localiza a soma da maior sublist com início e fimX
. Em seguida, ele encontra a soma máxima especificada pelo OP.fonte
[2,8,2,-3,2]
caso de teste e possivelmente[1,1,80]
também.Perl,
6159 bytesInclui
+3
para-p
:max_ident_run.pl
:Correr como:
fonte