Una matriz insignificante es una matriz de enteros positivos, donde las diferencias absolutas entre elementos consecutivos son todas menores o iguales a 1 .
Por ejemplo, la siguiente matriz es insignificante:
[1, 2, 3, 4, 3, 4, 5, 5, 5, 4]
Porque las diferencias (absolutas) correspondientes son:
[1, 1, 1, 1, 1, 1, 0, 0, 1]
Todos los cuales son más pequeños o iguales a 1 .
Su tarea es determinar si un conjunto dado de enteros es insignificante.
- Puede suponer que la matriz siempre contiene al menos dos elementos.
- Se aplican las reglas estándar de entrada y salida . Puede tomar entrada (y salida) en cualquier formato razonable.
- Las lagunas predeterminadas están prohibidas.
- Los valores de verdad / falsedad deben ser distintos y consistentes.
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
Casos de prueba
Entrada -> Salida [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] -> verdadero [1, 2, 3, 4, 5, 6, 7, 8, 9, 8] -> verdadero [3, 3, 3, 3, 3, 3, 3] -> verdadero [3, 4, 4, 4, 3, 3, 3, 4, 4, 4] -> verdadero [1, 2, 3, 4] -> verdadero [5, 4, 3, 2] -> verdadero [1, 3, 5, 7, 9, 7, 5, 3, 1] -> falso [1, 1, 1, 2, 3, 4, 5, 6, 19] -> falso [3, 4, 5, 6, 7, 8, 7, 5] -> falso [1, 2, 4, 10, 18, 10, 100] -> falso [10, 20, 30, 30, 30] -> falso
Usé los valores true
y false
.
code-golf
number
array-manipulation
decision-problem
Martin Ender
fuente
fuente
Respuestas:
Jalea , 3 bytes
Pruébalo en línea!
¿Cómo?
Simplemente el desafío perfecto para Jelly.
fuente
P
no funcionaría, porque si todas las diferencias fueran1
salida1
, pero si una de ellas fuera0
, ¿saldría0
? ¿Y si una diferencia fuera la5
otra0
, todavía lo haría0
?JavaScript (ES7),
3329 bytesGuardado 4 bytes gracias a @JohanKarlsson
¿Cómo?
Cuando se les coacciona
Number
, se evalúan las matrices de al menos dos elementosNaN
. Al reutilizar la entrada a como la variable que contiene el valor anterior, la primera iteración de some () siempre da como resultado ([v0, v1, ...] - a [0]) ** 2 = NaN , sin importar el valor de a [0] . Por lo tanto, la primera prueba siempre es falsa y las comparaciones reales comienzan en la segunda iteración, tal como deben ser.Casos de prueba
Mostrar fragmento de código
fuente
a=>!a.some(v=>(a-(a=v))**2>1)
Python 3 , 40 bytes
Pruébalo en línea!
fuente
Mathematica, 24 bytes
fuente
#==Clip@#&@*Differences
es un byte más corto.Python 2 , 35 bytes
Existe con el código de estado 1 para matrices insignificantes, con el código de estado 0 de lo contrario.
Pruébalo en línea!
fuente
Casco , 4 bytes
Pruébalo en línea!
Explicación:
fuente
Octava , 21 bytes
Función anónima que ingresa un vector numérico y sale
1
si es insignificante o0
no.Pruébalo en línea!
fuente
Haskell ,
3433 bytesPruébalo en línea! -1 byte gracias a @ user1472751
La solución sin puntos es
uno,dos,solo un byte ( gracias a -1 byte de @Dennis ) más corto que el enfoque recursivo:Pruébalo en línea!
fuente
Pyth , 6 bytes
Verifique todos los casos de prueba.
Pyth , 8 bytes
Pruébalo en línea!
Explicación
fuente
I#
lugar deM
.Protón , 41 bytes
Pruébalo en línea!
-16 bytes gracias al Sr. Xcoder
-2 bytes
-6 bytes gracias al Sr. Xcoder
fuente
<2 for
puede ser omitible.Japt , 6 bytes
Pruébalo en línea!
Explicación
fuente
C # (.NET Core) ,
514544 + 18 bytes-1 byte gracias a Jeppe Stig Nielsen
El recuento de bytes también incluye:
Pruébalo en línea!
Explicación:
fuente
a=>a.Zip(a.Skip(1),(x,y)=>x-y).All(x=>x*x<4)
evita la negación!
.Perl 6 , 25 bytes
Pruébalo en línea!
Esto debería ser bastante legible. Lo único menos obvio aquí es que el operador zip
Z
dejará de comprimir cuando se agote la lista más corta (eliminamos el primer elemento de la lista a la derecha) y que el subíndice vacío.[]
, llamado corte Zen, proporciona toda la lista..skip
devuelve la lista sin el primer elemento.fuente
.rotate
no se necesita aquí.-2<
lugar de-1≤
y en<2
lugar de≤1
guardar cuatro bytes más.2>...>-2
para evitar interpretarlas de<
manera errónea.R ,
3026 bytesPruébalo en línea!
fuente
function(a)all(diff(a)^2<2)
ahorra 3 bytes.all(diff(scan())^2<2)
scan
, ¡pero aún guarda un byte!05AB1E , 5 bytes
Pruébalo en línea!
Explicación
fuente
[5,2]
por ejemplo.Ohm v2 , 4 bytes
Pruébalo en línea!
¿Cómo?
fuente
PowerShell , 62 bytes
Pruébalo en línea!
PowerShell no tiene una
.map
o.some
comando o similar, por lo que aquí estamos comprobar individualmente cada delta.Tomamos entrada
$a
y establecemos$l
igual al primer elemento. Luego recorremos$a
y sacamos cada elemento donde|?{...}
la diferencia$_-$l
es-in
el rango1,0,-1
. Luego establecemos$l
igual al elemento actual. Así que ahora tenemos una colección de elementos donde el delta entre su vecino anterior es 1. Tomamos el.count
de eso y verificamos si es-eq
ual al.count
del conjunto como un todo. Si es así, cada delta es 1 o menos, por lo que es una matriz insignificante. Ese resultado booleano se deja en la tubería y la salida es implícita.fuente
$l=($a=$args)[0]
$l
para ser la matriz de entrada completa en su sugerencia.$args
sí mismo es toda la matriz. Ejemplo$args
. Si llamaste a un script o una función con una serie de argumentos separados como espacios, aparecería como elementos separados$args
, y para TIO esa es la forma de emular eso. Personalmente lo he usado de esa manera muchas veces antes, pero para cada uno lo suyo :)Python 3 , 45 bytes
Pruébalo en línea! o Prueba la suite de prueba.
Gracias a Jonathan Frech por -2 bytes.
fuente
abs(x-y)<2
->-2<x-y<2
.Java (OpenJDK 8) , 78 bytes
Pruébalo en línea!
fuente
MAT ,
6 65 bytes-1 byte gracias a Giuseppe
Pruébalo en línea! o Verificar todos los casos de prueba
fuente
d|2<
en su lugar, ya que una matriz con un valor cero es falsey en MATL.d|2<A
por algo más cercano a tu respuesta original.anyfix , 9 bytes
Pruébalo en línea!
Esto es principalmente un puerto de la solución 05AB1E, excepto terrible porque anyfix no tiene autovectorización y otras cosas interesantes
fuente
C,
6156 bytes¡Gracias a @scottinet por guardar cinco bytes!
Pruébalo en línea!
C (gcc), 47 bytes
Pruébalo en línea!
fuente
r
lugar de devolverlo. :-)Clojure, 35 bytes
¿Qué tan limpio es eso?
fuente
TI-Basic,
67 byteso 5 bytes si los errores cuentan como valor de retorno válido (devuelve
ERR:ARGUMENT
si es insignificante, de lo contrarioERR:DOMAIN
)fuente
abs(ΔList(Ans
, o de lo contrario cae en más de 1 (como en {5,3,1} o en el caso de prueba {3,4,5,6,7,8,7,5}) no obtener detectadoJavaScript (ES6),
3736 bytesEditar: Guardado 1 byte robando el truco de @ Arnauld.
fuente
a=>u=>!a.some(e=>(e-=(u=e))>1|e<-1)
Pyth, 7 bytes
Banco de pruebas
Devuelve verdadero / falso.
Explicación:
fuente
Mathematica, 34 bytes
Explicación
fuente
Java (OpenJDK 8) , 60 bytes
Pruébalo en línea!
fuente
r
en el ciclo para calcular(p-n)
solo una vez,>>1
puede ser/2
o eliminarse si usa en|
lugar de+
:a->{int r=1,p=a[0];for(int i:a)r|=(r=p-(p=i))*r;return r<2;}
(60 bytes).Swift 4, 52 bytes
Banco de pruebas:
fuente
APL, 13 bytes
Primera respuesta APL \ o /
Nota: Soy un bot propiedad de Hyper Neutrino. Existo principalmente para pruebas de chat.
Explicación
fuente
∧/2>(|2-/⊢)