Dada una lista de enteros positivos, escriba código que encuentre la longitud de la sublista contigua más larga que está aumentando (no estrictamente). Esa es la sublista más larga, de modo que cada elemento es mayor o igual que el anterior.
Por ejemplo, si la entrada fue:
La sublista creciente más larga sería , por lo que obtendría .
Su respuesta se puntuará tomando su fuente como una lista de bytes y luego encontrando la longitud de la sublista creciente más larga de esa lista. Un puntaje más bajo es el objetivo. Los lazos se rompen a favor de los programas con menos bytes totales.
code-challenge
source-layout
Ad Hoc Garf Hunter
fuente
fuente
True
haber sido un sustituto,1
pero puede ser. Debería poder manejar la lista vacía (La salida es, por supuesto, 0).[] => 0
,[0] => 1
,[3,2,1] => 1
,[1,2,1,2] => 2
Respuestas:
Pyth , puntaje 2 (8 bytes)
Pruébalo aquí!
Puntos de código
[108, 101, 102, 83, 73, 84, 46, 58]
. Otra solución más corta,leSI#.:
puntajes 3, pero sus puntos de código son[108, 101, 83, 73, 35, 46, 58]
, en realidad, muy cercanos a un puntaje de 1.Reorganizar un poco puede ayudar aNevermind, las subcadenas integradas son las.:
que no se pueden reorganizar, por lo que la puntuación más baja debe ser 2 si el programa la utiliza.¿Cómo?
fuente
Haskell , puntaje 2,
6664616065 bytesPruébalo en línea! (se verifica a sí mismo).
Nunca pensé que podría obtener un puntaje de 2 con Haskell, ¡pero aquí estoy!
La función
g
calcula las longitudes de todas las subcadenas crecientes de forma recursiva.foldr1 max.g
toma el máximo de esas longitudes (foldr1 max
es equivalente amaximum
, pero con una puntuación más baja).fuente
1+a : b
no es necesario, por lo que son 62 bytes.1
para la lista vacía, donde debería regresar0
JavaScript (Node.js) ,
puntaje 3,puntaje 2,5346 bytes5150 bytes-7 bytes gracias @Arnauld
+5+4 espacios a cambio de -1 puntajePruébalo en línea!
Asume una entrada no vacía. 61 bytes si se debe manejar una lista vacía. Puntuación 2 todavía.
Pruébalo en línea!
... o 58 si
false
se permite regresar . Puntuación 2 todavía.fuente
Cáscara , 5 bytes , puntuación = 2
Pruébalo en línea!
Es poco probable que obtenga una puntuación inferior a 2 con Husk porque
ġ
1 tiene un punto de código realmente alto y debe haber algo antes para obtener el máximo y la longitud. Se podría intentar intentar usar múltiples funciones, pero\n
sería antes de cualquier función auxiliar que tenga un punto de código realmente bajo, por lo que cualquier cosa después de esto crearía una secuencia de bytes creciente de al menos longitud 2.1: Esta parece ser la mejor manera de usarla para los operadores de comparación que necesitarían seguir las diversas funciones divididas como
↕
(span
).Explicación
fuente
Retina 0.8.2 , 40 bytes, puntaje 3
Pruébalo en línea! El enlace se incluye a sí mismo como códigos de bytes como entrada. Explicación:
Convierte a unario.
Dividir en pares decrecientes.
Eliminar los dígitos.
Ordena las comas en orden inverso. (Normalmente escribiría esto como
O^
pero no puedo hacer eso aquí por razones obvias).Cuente la ejecución de coma más larga y agregue una para incluir el número final.
fuente
Japt
-h
, 6 bytes, puntaje 2No pienses que una puntuación de 1 es posible. También debería funcionar con cadenas y matrices de caracteres.
Pruébelo : el caso de prueba incluido es el código de la solución.
Explicación
fuente
MATL , puntaje 2, 13 bytes
La entrada puede ser:
MATL usa codificación ASCII. Los puntos de código del código anterior son
Pruébalo en línea!
Explicación
fuente
Pascal (FPC) , puntaje 2
111 bytes
Pruébalo en línea!
Asume una entrada no vacía. Los números se toman de la entrada estándar separados por espacios.
fuente
Gelatina , 8 bytes , puntaje 2
Probablemente haya una solución de puntuación 1 de alguna manera ...
Pruébalo en línea!
Código fuente como una lista de valores de bytes:
¿Cómo?
fuente
Perl 6 , puntaje 2, 46 bytes
Pruébalo en línea!
Maneja la lista vacía. El código original fue:
Entonces solo 5 bytes adicionales para reducir la puntuación a 2.
Editar: Ah, descubrí cómo eliminar la tarea , pero no puedo obtener esa puntuación por debajo de 3 debido a
)]]
...Explicación:
fuente
[[&(*+*)]]
funciona como[+]
? Increíble ...Z
yX
. Pruébalo en línea!{max 0,|.[[X..] ^$_ xx 2].map({+$_ if [<=] $_})}
05AB1E , puntaje 3 (9 bytes )
Lo más probable es que sea una puntuación de 2 de alguna manera.
Puntos de código de los bytes del programa:
[140,1,90,100,80,125,233,9,103]
(dos sublistas de longitud 3:[1,90,100]
y[80,125,233]
)Pruébalo en línea.
Explicación:
fuente
Java (JDK) , puntaje 3, 94 bytes
Pruébalo en línea!
Puerto de mi (con sugerencias de Arnauld) JS respuesta.
etu
inreturn
yhil
inwhile
hacen que sea imposible jugar golf para anotar 2.for
no se puede usar aquí porque:;for
está ascendiendofor
no se puede usar al comienzo del cuerpo lambda (restricciones de alcance). Es posible envolverlo{}
pero aparentemente usandowhile
bytes de guardado.fuente
\u
en algunos lugares, pero luego debe haber00
seguido un dígito que es 3 de todos modos ...Powershell, puntuación 3, 44 bytes
Script de prueba:
Salida:
Explicación:
contiguous sub-list that is increasing (not strictly)
. Luego, la secuencia de comandos ordena alarga y toma un último (máximo)(...|sort)[-1]
.Powershell 6, puntaje 3, 43 bytes
Lo mismo que arriba. Una diferencia:
sort -b 1
es el acceso directo parasort -Bottom 1
y significa 1 elemento desde el final de la matriz ordenada . Entonces no necesitamos un índice[-1]
.fuente
Stax , puntaje 3 (15 bytes)
Ejecutar y depurarlo
fuente
Python 2 ,
puntaje 5, 87 bytespuntaje 2,1019392101 bytesPruébalo en línea!
Ooops! Pensé que este era el código de golf por primera vez ...
fuente
m=1,o=[1]
pieza no termine guardando bytes una vez que reduzcamos el puntajeDyalog APL , puntaje 2, 20 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , puntaje 3, 45 bytes
Pruébalo en línea!
SequenceCases
yOrderedQ
por sí mismos dan una puntuación de 3, por lo que la puntuación no se puede mejorar sin cambiar significativamente el enfoque.fuente
Max[Length/@SequenceCases[#,_?OrderedQ]]&
, pero_?Or
es una subsecuencia creciente de longitud 4. (Como está_?AnyCamelCaseCommand
.)Java (JDK), 126 bytes, puntaje 6
Golfed
Sin golf
Entrada
fuente
byte
serloint
, yabyte
que estaría restringido a 8 bits?Kotlin, puntaje 6, 119 bytes
Probar en línea
Explicación
fuente
Kotlin, puntaje 4, 67 bytes
La idea principal es: transformar cada número entero en la longitud de subsecuencias contiguas que está aumentando (no estrictamente). Retorno máximo.
a.map{...}
- para cada entero en la matriz hacerif(it<p){i=0}
- si el número entero actual es menor que un número entero anterior, reinicie el contadorp=it
- almacenar el entero actual en el anterior(++i)
- contador de incremento y valor de retorno de la expresión.max()
- obtener el máximo de toda la longitudfuente
Ruby , 64 bytes
Pruébalo en línea!
fuente
6
. Además, su código no maneja la lista vacía (donde debería estar la salida0
)