Ein unbedeutendes Array ist ein Array positiver Ganzzahlen, bei dem die absoluten Unterschiede zwischen aufeinanderfolgenden Elementen alle kleiner oder gleich 1 sind .
Das folgende Array ist beispielsweise unbedeutend:
[1, 2, 3, 4, 3, 4, 5, 5, 5, 4]
Weil die entsprechenden (absoluten) Unterschiede sind:
[1, 1, 1, 1, 1, 1, 0, 0, 1]
Welches sind alle kleiner als oder gleich 1 .
Ihre Aufgabe besteht darin, festzustellen, ob ein bestimmtes Array von Ganzzahlen unbedeutend ist.
- Sie können davon ausgehen, dass das Array immer mindestens zwei Elemente enthält.
- Es gelten die Standard-Ein- und Ausgaberegeln . Sie können Eingaben (und Ausgaben) in jedem vernünftigen Format vornehmen.
- Standardlücken sind verboten.
- Die Wahrheits- / Falschheitswerte müssen eindeutig und konsistent sein.
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Testfälle
Eingabe -> Ausgabe [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] -> wahr [1, 2, 3, 4, 5, 6, 7, 8, 9, 8] -> wahr [3, 3, 3, 3, 3, 3, 3] -> wahr [3, 4, 4, 4, 3, 3, 3, 4, 4, 4] -> wahr [1, 2, 3, 4] -> wahr [5, 4, 3, 2] -> wahr [1, 3, 5, 7, 9, 7, 5, 3, 1] -> falsch [1, 1, 1, 2, 3, 4, 5, 6, 19] -> falsch [3, 4, 5, 6, 7, 8, 7, 5] -> falsch [1, 2, 4, 10, 18, 10, 100] -> falsch [10, 20, 30, 30, 30] -> falsch
Ich habe die Werte true
und verwendet false
.
code-golf
number
array-manipulation
decision-problem
Martin Ender
quelle
quelle
Antworten:
Gelee , 3 Bytes
Probieren Sie es online!
Wie?
Genau die richtige Herausforderung für Jelly.
quelle
P
würde nicht funktionieren, würde es, denn wenn alle Unterschiede1
ausgegeben würden1
, aber wenn einer von ihnen0
ausgegeben würde0
? Und wenn ein Unterschied5
nur einer0
wäre, würde er immer noch reichen0
?JavaScript (ES7),
3329 Bytes4 Bytes gespart dank @JohanKarlsson
Wie?
Wenn erzwungen
Number
, werden Arrays von mindestens zwei Elementen ausgewertetNaN
. Durch die Wiederverwendung des Eingangs a als Variable, die den vorherigen Wert enthält, ergibt die erste Iteration von some () immer ([v0, v1, ...] - a [0]) ** 2 = NaN , unabhängig von der Wert von a [0] . Der erste Test ist also immer falsch und die tatsächlichen Vergleiche beginnen bei der zweiten Iteration, genau wie sie beabsichtigt sind.Testfälle
Code-Snippet anzeigen
quelle
a=>!a.some(v=>(a-(a=v))**2>1)
Python 3 , 40 Bytes
Probieren Sie es online!
quelle
Mathematica, 24 Bytes
quelle
#==Clip@#&@*Differences
ist ein Byte kürzer.Python 2 , 35 Bytes
Existiert mit Statuscode 1 für unbedeutende Arrays, mit Statuscode 0 ansonsten.
Probieren Sie es online!
quelle
Schale , 4 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Oktave , 21 Bytes
Anonyme Funktion, die einen numerischen Vektor und Ausgaben eingibt,
1
wenn diese unbedeutend sind oder0
nicht.Probieren Sie es online!
quelle
Haskell ,
3433 BytesProbieren Sie es online! -1 Byte danke an @ user1472751
Die punktfreie Lösung ist
einszweiwieder nur ein Byte ( dank -1 Byte von @Dennis ) kürzer als der rekursive Ansatz:Probieren Sie es online!
quelle
Pyth , 6 Bytes
Überprüfen Sie alle Testfälle.
Pyth , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
I#
stattdessen gedacht habeM
.Proton , 41 Bytes
Probieren Sie es online!
-16 Bytes dank Mr. Xcoder
-2 Bytes
-6 Bytes dank Mr. Xcoder
quelle
<2 for
könnte weggelassen werden.Japt , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
C # (.NET Core) ,
514544 + 18 Bytes-1 Byte danke an Jeppe Stig Nielsen
Die Byteanzahl umfasst auch:
Probieren Sie es online!
Erläuterung:
quelle
a=>a.Zip(a.Skip(1),(x,y)=>x-y).All(x=>x*x<4)
Es vermeidet die Verneinung!
.Perl 6 , 25 Bytes
Probieren Sie es online!
Dies sollte ziemlich lesbar sein. Das einzig weniger offensichtliche ist, dass der zip-Operator
Z
das Zippen beendet, wenn die kürzere Liste erschöpft ist (wir entfernen das erste Element der Liste rechts) und dass das leere Index.[]
, das sogenannte Zen-Slice, die gesamte Liste enthält..skip
gibt die Liste ohne das erste Element zurück.quelle
.rotate
hier nicht gebraucht wird.-2<
statt-1≤
und<2
statt≤1
vier weitere Bytes zu speichern.2>...>-2
, um<
eine fehlerhafte Interpretation zu vermeiden .R ,
3026 BytesProbieren Sie es online!
quelle
function(a)all(diff(a)^2<2)
spart 3 Bytes.all(diff(scan())^2<2)
scan
, aber es wird trotzdem ein Byte gespeichert !05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
[5,2]
zum Beispiel nicht funktionieren .Ohm v2 , 4 Bytes
Probieren Sie es online!
Wie?
quelle
PowerShell , 62 Byte
Probieren Sie es online!
Powershell hat bisher keine
.map
oder.some
oder ähnlichen Befehl, so dass hier wir individuell jedes Delta überprüfen.Wir nehmen Eingaben
$a
und setzen sie$l
gleich dem ersten Element. Dann durchlaufen wir$a
jedes Element und nehmen es heraus, wobei|?{...}
der Unterschied$_-$l
in-in
der Reichweite liegt1,0,-1
. Wir setzen dann$l
gleich dem aktuellen Element. Nun haben wir also eine Sammlung von Elementen, bei denen das Delta zwischen ihrem vorherigen Nachbarn 1 ist. Wir nehmen das.count
von und prüfen, ob es-eq
dem.count
des Arrays als Ganzes entspricht. Wenn dies der Fall ist, ist jedes Delta 1 oder kleiner, sodass es sich um ein unbedeutendes Array handelt. Dieses boolesche Ergebnis verbleibt in der Pipeline, und die Ausgabe ist implizit.quelle
$l=($a=$args)[0]
$l
, dass in Ihrem Vorschlag das gesamte Eingabearray festgelegt wird.$args
selbst das gesamte Array. Beispiel$args
. Wenn Sie ein Skript oder eine Funktion mit einer Reihe von Argumenten aufrufen, die als Leerzeichen voneinander getrennt sind, werden sie als separate Elemente in$args
TIO eingegeben. Ich persönlich habe es schon oft so benutzt, aber für jeden dasPython 3 , 45 Bytes
Probieren Sie es online! oder Probieren Sie die Testsuite aus.
Vielen Dank an Jonathan Frech für -2 Bytes.
quelle
abs(x-y)<2
->-2<x-y<2
.Java (OpenJDK 8) , 78 Byte
Probieren Sie es online!
quelle
MATL ,
65 Bytes-1 Byte danke an Giuseppe
Probieren Sie es online! oder Überprüfen Sie alle Testfälle
quelle
d|2<
stattdessen als ein Array mit einem Nullwert ist Falsey in MATL.d|2<A
für etwas, das Ihrer ursprünglichen Antwort näher kommt.Anyfix , 9 Bytes
Probieren Sie es online!
Dies ist größtenteils ein Port der 05AB1E-Lösung, außer fürchterlich, da anyfix keine automatische Vektorisierung und andere coole Dinge enthält
quelle
C
6156 BytesVielen Dank an @scottinet für das Speichern von fünf Bytes!
Probieren Sie es online!
C (gcc), 47 Bytes
Probieren Sie es online!
quelle
r
anstatt es zurückzugeben. :-)Clojure, 35 Bytes
Wie ordentlich ist das?
quelle
TI-Basic,
67 Bytesoder 5 Bytes, wenn Fehler als gültiger Rückgabewert gelten (gibt zurück,
ERR:ARGUMENT
wenn sie nicht signifikant sind, sonstERR:DOMAIN
)quelle
abs(ΔList(Ans
, oder fällt um mehr als 1 (wie in {5,3,1} oder im Testfall {3,4,5,6,7,8,7,5}) nicht erkannt.JavaScript (ES6),
37-36ByteBearbeiten: 1 Byte durch Stehlen von @ Arnauld's Trick gespeichert.
quelle
a=>u=>!a.some(e=>(e-=(u=e))>1|e<-1)
Pyth, 7 Bytes
Test Suite
Gibt true / false zurück.
Erläuterung:
quelle
Mathematica, 34 Bytes
Erläuterung
quelle
Java (OpenJDK 8) , 60 Byte
Probieren Sie es online!
quelle
r
in der Schleife verwenden, um(p-n)
nur einmal zu berechnen ,>>1
können/2
oder entfernt werden, wenn Sie|
anstelle von+
:a->{int r=1,p=a[0];for(int i:a)r|=(r=p-(p=i))*r;return r<2;}
(60 Bytes) verwenden.Schnelle 4, 52 Bytes
Testsuite:
quelle
APL, 13 Bytes
Erste APL-Antwort \ o /
Hinweis: Ich bin ein Bot von Hyper Neutrino. Ich existiere hauptsächlich für Chat-Tests.
Erläuterung
quelle
∧/2>(|2-/⊢)