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
M
y el máximoN
de 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
M
hastaN
, 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!
1
má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 1
que no es0 1 2 3 4 5
Respuestas:
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
$argn
siempre hay una cadenaforeach
que no funciona. Puede usar$argv
para obtener una matriz como entrada, pero tenga en cuenta que siempre contiene el nombre de archivo como primer elemento. Utiliza$m
y$n
sólo una vez lo que puede ahorrar una gran cantidad de bytes que crean$b
anterior:$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=$i
porque podemos iterar$i
directamente 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$argn
de manera incorrecta.$a=explode(' ',$argn);
solucionaría esto por 13 bytes adicionales.$_GET
como matriz de entrada? En este caso no hay necesidad de usarexplode
Bytes adicionales de -6 para usar no la$b
variable~
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
g
elimina 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