Esta es una revisión de esta pregunta ahora eliminada por ar kang . Si el OP de esa pregunta quisiera reclamar esta pregunta o tiene un problema conmigo publicando esto, me complacería complacerlo
Dada una lista de enteros como entrada, encuentre la suma máxima posible de una sublista continua que comienza y termina con el mismo valor. Las sublistas deben tener una longitud de al menos 2. Por ejemplo, para la lista
[1, 2, -2, 4, 1, 4]
Hay 2 sublistas continuas diferentes que comienzan y terminan con el mismo valor
[1,2,-2,4,1] -> 6
[4,1,4] -> 9
La suma mayor es 9, por lo que produce 9.
Puede suponer que cada entrada contiene al menos 1 duplicado.
Este es el código de golf, por lo que las respuestas se puntuarán en bytes, con menos bytes mejor.
Casos de prueba
[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
Asistente de trigo
fuente
fuente
[2,8,2,3,2]
ser 12 o 17? Presumo 17.Respuestas:
Haskell , 62 bytes
f
toma una lista de enteros y devuelve un entero.Pruébalo en línea!
Cómo funciona
t
es la función estándar "obtener todos los sufijos de una lista sin importarData.List.tails
".f l
, la comprensión de la lista recorre en iteración todos los sufijos no vacíos de la lista de argumentosl
, con el primer elementox
y el restom
.m
, seleccionando el primer elementoy
y el reston
.x
yy
son iguales, la comprensión de la lista incluye la suma de los elementos entre ellos. Esta sublista es la misma quex:m
con su sufijon
eliminado, por lo que la suma se puede calcular comox+sum m-sum n
.fuente
JavaScript (ES6),
6862 bytesCasos de prueba
Mostrar fragmento de código
Comentado
fuente
y - a[i]
y(x += y) < m
, en mi humilde opinión, el código sería un poco más claro con el intercambio, ya que parece un simple campo de golf(x += y) < m || y != a[i]
.(x+=y)<m|y-a[i]
podría malinterpretarse(x+=y)<(m|y-a[i])
. No estoy seguro de que realmente elimine la ambigüedad. (Editado de todos modos porque tiendo a preferir esta versión).y-a[i]|(x+=y)<m
como(y-a[i]|(x+=y))<m
...Jalea , 12 bytes
Pruébalo en línea!
Cómo funciona
fuente
Casco , 10 bytes
Pruébalo en línea!
Explicación
fuente
Haskell , 66 bytes
Pruébalo en línea!
fuente
R ,
108103908883 bytesPruébalo en línea!
combn
¡golpea de nuevo! Genera al menos todas las sublistas de longitud2
, establece la suma de la sublista en-Inf
si el primero y el último no son iguales, y toma el máximo de todas las sumas.Esto
"if"
generará un montón de advertencias, pero son ignorables con seguridad: ese es probablemente el mejor truco de golf aquí,rev(p)-p
es cero en el primer elemento iffp[1]==tail(p,1)
y"if"
usa el primer elemento de su condición con una advertencia.fuente
Python 3 , 81 bytes
Pruébalo en línea!
fuente
Python , 62 bytes
Pruébalo en línea!
Emite una lista singleton .
fuente
Jalea ,
13, 12 bytesPruébalo en línea!
Un byte guardado por el Sr. Xcoder, que actualmente está compitiendo conmigo. :RE
Explicación:
fuente
Wolfram Language (Mathematica) , 54 bytes
Pruébalo en línea!
fuente
Pyth, 15 bytes
Pruébalo en línea
Explicación
fuente
05AB1E , 9 bytes
Pruébalo en línea!
Explicación
fuente
Limpio ,
949086 bytesPruébalo en línea!
fuente
[1, 1, 80]
caso de prueba.Python 2 , 86 bytes
Afligido por Dennis
Pruébalo en línea!
Genera todas las sublistas más grandes que la longitud 2, donde el primer elemento es igual al último, luego asigna cada una a su suma y selecciona el valor más grande.
fuente
enumerate
.Ruby , 64 bytes
Pruébalo en línea!
fuente
Julia 0.6 , 70 bytes
Pruébalo en línea!
fuente
Jalea , 11 bytes
Utiliza algunas características que son posteriores al desafío.
Pruébalo en línea!
¿Cómo funciona?
-1 con ayuda de caird .
fuente
Lote, 179 bytes
Toma datos como parámetros de línea de comandos.
fuente
C, 104 bytes
Pruébalo en línea!
C (gcc) , 99 bytes
Pruébalo en línea!
fuente
Clojure, 92 bytes
fuente
Java 8, 129 byes
Para cada número entero
X
en la lista, la función encuentra la suma de la sublista más grande con inicio y finX
. Luego, encuentra la suma máxima que especifica el OP.fuente
[2,8,2,-3,2]
caso de prueba, y posiblemente[1,1,80]
también.Perl,
6159 bytesIncluye
+3
para-p
:max_ident_run.pl
:Correr como:
fuente