Un tableau non significatif est un tableau d'entiers positifs, où les différences absolues entre les éléments consécutifs sont toutes inférieures ou égales à 1 .
Par exemple, le tableau suivant est insignifiant:
[1, 2, 3, 4, 3, 4, 5, 5, 5, 4]
Parce que les différences correspondantes (absolues) sont:
[1, 1, 1, 1, 1, 1, 0, 0, 1]
Qui sont tous inférieurs ou égaux à 1 .
Votre tâche consiste à déterminer si un tableau donné d’entiers est non significatif.
- Vous pouvez supposer que le tableau contient toujours au moins deux éléments.
- Les règles d'entrée et de sortie standard s'appliquent. Vous pouvez prendre des entrées (et des sorties) dans n’importe quel format raisonnable.
- Les failles par défaut sont interdites.
- Les valeurs de vérité / falsification doivent être distinctes et cohérentes.
- C'est du code-golf , donc la réponse la plus courte en octets est gagnante.
Cas de test
Entrée -> Sortie [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] -> true [1, 2, 3, 4, 5, 6, 7, 8, 9, 8] -> true [3, 3, 3, 3, 3, 3, 3] -> true [3, 4, 4, 4, 3, 3, 3, 4, 4, 4] -> true [1, 2, 3, 4] -> true [5, 4, 3, 2] -> true [1, 3, 5, 7, 9, 7, 5, 3, 1] -> faux [1, 1, 1, 2, 3, 4, 5, 6, 19] -> faux [3, 4, 5, 6, 7, 8, 7, 5] -> faux [1, 2, 4, 10, 18, 10, 100] -> faux [10, 20, 30, 30, 30] -> faux
J'ai utilisé les valeurs true
et false
.
code-golf
number
array-manipulation
decision-problem
Martin Ender
la source
la source
Réponses:
Gelée , 3 octets
Essayez-le en ligne!
Comment?
Le défi idéal pour Jelly.
la source
P
cela ne fonctionnerait pas, parce que si toutes les différences étaient1
produites1
, mais si l’une d’elles était0
sortie, elle produirait0
? Et si une différence était,5
mais une était-0
ce que ça ferait toujours0
?JavaScript (ES7),
3329 octetsSauvegardé 4 octets grâce à @JohanKarlsson
Comment?
Lorsque forcé à
Number
, les tableaux d'au moins deux éléments sont évalués àNaN
. En réutilisant l’entrée a comme variable contenant la valeur précédente, la première itération de some () donne toujours ((v0, v1, ...] - a [0]) ** 2 = NaN , quelle que soit la valeur de a [0] . Ainsi, le premier test est toujours faux et les comparaisons réelles commencent à la 2ème itération, comme elles le devaient.Cas de test
Afficher l'extrait de code
la source
a=>!a.some(v=>(a-(a=v))**2>1)
Python 3 , 40 octets
Essayez-le en ligne!
la source
Mathematica, 24 octets
la source
#==Clip@#&@*Differences
est un octet plus court.Python 2 , 35 octets
Existe avec le code d'état 1 pour les matrices non significatives, avec le code d'état 0 sinon.
Essayez-le en ligne!
la source
Husk , 4 octets
Essayez-le en ligne!
Explication:
la source
Octave , 21 octets
Fonction anonyme qui entre un vecteur numérique et qui
1
est insignifiant ou0
non.Essayez-le en ligne!
la source
Haskell ,
3433 octetsEssayez-le en ligne! -1 octet grâce à @ user1472751
La solution de point libre est
unedeuxfois un seul octet ( grâce à -1 octets de @Dennis ) plus courte que la méthode récursive:Essayez-le en ligne!
la source
Pyth , 6 octets
Vérifiez tous les cas de test.
Pyth , 8 octets
Essayez-le en ligne!
Explication
la source
I#
au lieu deM
.Proton , 41 octets
Essayez-le en ligne!
-16 octets grâce à Mr. Xcoder
-2 octets
-6 octets grâce à Mr. Xcoder
la source
<2 for
peut être omis.Japt , 6 octets
Essayez-le en ligne!
Explication
la source
C # (.NET Core) ,
514544 + 18 octets-1 octet grâce à Jeppe Stig Nielsen
Le nombre d'octets comprend également:
Essayez-le en ligne!
Explication:
la source
a=>a.Zip(a.Skip(1),(x,y)=>x-y).All(x=>x*x<4)
:, cela évite la négation!
.Perl 6 , 25 octets
Essayez-le en ligne!
Cela devrait être assez lisible. La seule chose moins évidente ici est que l’opérateur zip
Z
arrête la compression lorsque la liste la plus courte est épuisée (nous supprimons le premier élément de la liste à droite) et que l’indice vide.[]
, appelé tranche Zen, donne la liste complète..skip
renvoie la liste sans le premier élément.la source
.rotate
n’est pas nécessaire ici.-2<
instead of-1≤
and<2
instead of≤1
to save four more bytes.2>...>-2
to avoid interpreting the<
in an erroneous way.R,
3026 bytesTry it online!
la source
function(a)all(diff(a)^2<2)
saves 3 bytes.all(diff(scan())^2<2)
scan
, but it still saves a byte!05AB1E, 5 bytes
Try it online!
Explanation
la source
[5,2]
for example.Ohm v2, 4 bytes
Try it online!
How?
la source
PowerShell, 62 bytes
Try it online!
PowerShell doesn't have a
.map
or.some
or similar command, so here we're individually checking each delta.We take input
$a
and set$l
equal to the first element. Then we loop through$a
and take out each element where|?{...}
the difference$_-$l
is-in
the range1,0,-1
. We then set$l
equal to the current element. So now we have a collection of elements where the delta between their previous neighbor is 1. We take the.count
of that and check whether it's-eq
ual to the.count
of the array as a whole. If it is, then every delta is 1 or less, so it's an insignificant array. That Boolean result is left on the pipeline, and output is implicit.la source
$l=($a=$args)[0]
$l
to be the whole input array in your suggestion.$args
is itself the whole array. Example$args
. If you called a script or function with a series of arguments separated as spaces, it would come in as separate elements in$args
, and for TIO that's how to emulate that. I've personally used it that way many times before, but to each their own :)Python 3, 45 bytes
Try it online! or Try the test suite.
Thanks to Jonathan Frech for -2 bytes.
la source
abs(x-y)<2
->-2<x-y<2
.Java (OpenJDK 8), 78 bytes
Try it online!
la source
MATL,
65 bytes-1 byte thanks to Giuseppe
Try it online! or Verify all test-cases
la source
d|2<
instead, as an array with a zero value is falsey in MATL.d|2<A
for something closer to your original answer.anyfix, 9 bytes
Try it online!
This is mostly a port of the 05AB1E solution except terrible because anyfix doesn't have autovectorization and other cool things
la source
C,
6156 bytesThanks to @scottinet for saving five bytes!
Try it online!
C (gcc), 47 bytes
Try it online!
la source
r
instead of returning it. :-)Clojure, 35 bytes
How neat is that?
la source
TI-Basic,
67 bytesor, 5 bytes if errors count as valid return value (returns
ERR:ARGUMENT
if insignificant, elseERR:DOMAIN
)la source
abs(ΔList(Ans
, or else drops by more than 1 (such as in {5,3,1} or in the test case {3,4,5,6,7,8,7,5}) don't get detected.JavaScript (ES6),
3736 bytesEdit: Saved 1 byte by stealing @Arnauld's trick.
la source
a=>u=>!a.some(e=>(e-=(u=e))>1|e<-1)
Pyth, 7 bytes
Test Suite
Returns true/false.
Explanation:
la source
Mathematica, 34 bytes
Explanation
la source
Java (OpenJDK 8), 60 bytes
Try it online!
la source
r
in the loop to calculate(p-n)
only once,>>1
can be/2
, or removed if you use|
instead of+
: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
Test suite:
la source
APL, 13 bytes
First APL answer \o/
Note: I am a bot owned by Hyper Neutrino. I exist mainly for chat testing.
Explanation
la source
∧/2>(|2-/⊢)