Los niños que están aprendiendo a contar a menudo conocen series de números, pero parece que no pueden juntar esas series correctamente.
Por ejemplo, podrían decir:
1,2,3,4,7,8,9,10
A veces los niños se darán cuenta de que se saltaron algunos números y volverán:
1,2,3,4,7,8,5,6,7,8,9,10
Este es claramente el patrón superior. Necesitamos identificarlos.
Para identificar estas listas:
Identificamos el mínimo
My el máximoNde la lista.Pasamos por la lista. Si el número actual es mayor o igual que cualquier miembro de la lista a su derecha, entonces eliminamos el número actual.
Si la lista restante contiene todos los números desde
MhastaN, entonces devolvemos un valor verdadero.
Puede suponer que su lista de entrada contendrá al menos 1 elemento. Puede suponer que todos los enteros serán no negativos.
Casos de prueba:
Verdad:
0
10
0 0 0
1 0 1
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 0 1 2 3
0 1 2 3 4 5 5
0 1 1 2 2 3
0 3 6 1 4 7 2 5 8 3 4 5 6 7 8
1 3 5 7 2 3 4 5 6 7
5 6 0 1 2 3 6 7 4 5 6 7
5 6 7 8
5 5 6 7 8
4 6 7 8 3 4 5 6 7 8
Falsy
1 0
4 3 2 1
1 2 3 7 8 9
0 1 2 3 1 3
0 1 2 3 1 3 4
0 1 2 3 1 3 2 4
0 1 2 3 1 3 2 4 3
1 3 5 7 2 4 6 8
0 1 2 1 3 4 5 6
4 5 6 3 4 5
Este es el código de golf , ¡así que haga sus respuestas lo más breve posible!

1más adelante en la línea). También eliminaría todos los demás elementos (excepto el último 1), por lo que terminaría con lo0 1que no es0 1 2 3 4 5Respuestas:
05AB1E , 5 bytes
No estoy 100% seguro de que esto funcione, pero pasa todos los casos de prueba y no pude encontrar ninguna situación en la que falle.
Pruébalo en línea!
fuente
Jalea ,
109 bytesPruébalo en línea!
Cómo funciona
fuente
ɓuna característica relativamente nueva?«\embargo, la parte realmente interesante aquí está en mi opinión.Ruby ,
59 5441 bytesPruébalo en línea!
fuente
Python 2 , 81 bytes
Pruébalo en línea!
fuente
PHP ,
148130 bytes-18 bytes, gracias @Christoph
Pruébalo en línea!
fuente
$argnsiempre hay una cadenaforeachque no funciona. Puede usar$argvpara obtener una matriz como entrada, pero tenga en cuenta que siempre contiene el nombre de archivo como primer elemento. Utiliza$my$nsólo una vez lo que puede ahorrar una gran cantidad de bytes que crean$banterior:$b=range(min($a),max($a));. El reparto(bool)es completamente innecesario.if($k>=$a[$s])$a[$i]=null;a$k<$a[$s]?:$a[$i]=-1;. Usando referencia podemos hacer esto:foreach($a as$i=>&$k)(+1 byte) y$a[$i]a$k(-4 byte). Además, eso nos deja caer$s=$iporque podemos iterar$idirectamente ahora.$a=$argn;$b=range(min($a),max($a));foreach($a as$i=>&$k)for(;++$i<count($a);)$k<$a[$i]?:$k=-1;echo!array_diff($b,$a);(117 bytes). Pero todavía se usa$argnde manera incorrecta.$a=explode(' ',$argn);solucionaría esto por 13 bytes adicionales.$_GETcomo matriz de entrada? En este caso no hay necesidad de usarexplodeBytes adicionales de -6 para usar no la$bvariable~Pruébelo en línea!Java 8,
264262 bytesExplicación:
Pruébalo aquí.
fuente
R,
8885 bytesEsto probablemente se pueda jugar más golf. Recorre los elementos de
x, comprueba si todos los valores próximos son más grandes, y solo entonces mantiene ese elemento. Después del ciclo, crea una secuencia demin(x)amax(x)y verifica%in%si todos los valores están incluidos en la versión podada dex.fuente
function(n)all(unique(cummin(rev(n)))==max(n):min(n))JavaScript (ES6), 60 bytes
Sin golf:
Este es un algoritmo más simple:
Itere la matriz en reversa y asegúrese de que cada número (excepto el primero) sea uno menor o igual a un número ya visto.
Retazo:
Mostrar fragmento de código
fuente
Haskell, 62 bytes
Pruébalo en línea!
Una implementación directa de la definición donde
gelimina los elementos si son> = que los elementos a su derecha.fuente
C #, 69 bytes
En resumen:
s = input (s) equence
toma del elemento s donde todos los elementos después de este (omitir (I) ndex + 1 elementos), el valor actual es mayor,
cuente estos, y vea si la cantidad restante es igual a la cantidad esperada ((max) valor imum menos (min) imum) cantidad de números
Pruébalo en línea!
fuente
JavaScript (ES6),
82737270 bytesDevuelve un booleano.
¿Cómo?
Repetimos en cada elemento x de la matriz de entrada a, haciendo un seguimiento del valor máximo encontrado m el número -k de valores que no son mayores o iguales que cualquier miembro a su derecha. Por definición, los valores válidos aparecen en orden estrictamente ascendente.
Usamos en
filter()lugar demap(), para que todos los elementos se filtren hasta k se vuelva negativo. Esto nos permite aislar el primer elemento válido, que también se garantiza que es el valor mínimo de la matriz.Finalmente, probamos si
minimum - (maximum + 1) == -number_of_valid_elements:Casos de prueba
Mostrar fragmento de código
fuente