Entfernen Sie bei einem Ganzzahl-Array und zwei Zahlen als Eingabe eine bestimmte Menge des ersten und des letzten Elements, die durch die Zahlen angegeben werden. Die Eingabe kann in beliebiger Reihenfolge erfolgen.
Sie sollten die ersten x- Elemente entfernen , wobei x die erste numerische Eingabe ist, und auch das letzte y entfernen Elemente, wobei y die zweite numerische Eingabe ist.
Das resultierende Array hat garantiert eine Länge von mindestens zwei.
Beispiele:
[1 2 3 4 5 6] 2 1 -> [3 4 5]
[6 2 4 3 5 1 3] 5 0 -> [1 3]
[1 2] 0 0 -> [1 2]
Antworten:
Haskell,
55393329 Bytes16 Bytes dank Laikoni gespart
6 weitere Bytes dank Laikoni gespart
4 weitere Bytes dank Laikoni gespeichert
Ich bin mir sicher, dass dies verbessert werden könnte, aber als Anfänger habe ich mein Bestes gegeben.
Verwendung
Probieren Sie es online!
quelle
xs
.f x a b
zuf a b x
können Sie einfach das Dropx
:f a b=reverse.drop b.reverse.drop a
.a#b=let r=reverse in r.drop b.r.drop a
ist 38 Bytes. Oder dürfen wir eine Funktion außerhalb dieser deklarieren lassen?Oktave, 20 Bytes
Probieren Sie es online!
quelle
Mathematica, 17 Bytes
Eingang
quelle
;;
! Ich habe es geschafft, Sie zu bindenDrop@##2~Drop~-#&
(wenn wir die Eingabe in einer seltsamen Reihenfolge vornehmen1, {1,2,3,4,5,6}, 2
), aber nicht besser.Python ,
2826 Bytes-2 Bytes dank @Rod
Probieren Sie es online!
quelle
lambda a,n,m:a[n:~m]
+
und wird daher auf angewendet[0]
. Sie müssten Klammern:(a+[0])[n:~m]
.C # (.NET Core) ,
5554 BytesProbieren Sie es online!
Verwendet a
List<int>
als Eingabe.quelle
List
als Eingabe verwenden, damit Sie esCount
anstelle von verwenden könnenLength
.Where
die nur geringfügig länger ist als diese Methode, mit der ich auch sehr zufrieden bin :)using System.Linq;
die Byteanzahl nicht erhöhen :)using
ich in meiner Antwort hinzufüge, und die Methoden zählenSkip
undTake
brauche dasusing
.Perl 5 , 21 Bytes
19 Byte Code +
-ap
Flags.Probieren Sie es online!
Verwendet
-a
, um die Eingabe automatisch zu teilen@F
, und behält dann nur einen Teil davon entsprechend den anderen Eingaben bei: vom Index<>
(zweite Eingabe) bis zum Index$#F-<>
(Größe des Arrays abzüglich der dritten Eingabe). Und$_
wird dank-p
Flagge implizit gedruckt .quelle
Rust, 29 Bytes
Nennen Sie es wie folgt:
Ich hatte viel Spaß beim Kämpfen mit dem Leihscheck, um herauszufinden, was der kürzeste Weg war, um daraus die Lebensdauer eines zurückgegebenen Slices abzuleiten. Das Verhalten bei Schließungen ist etwas unregelmäßig, da dies auf die Lebensdauer schließen lässt, jedoch nur, wenn Sie den Parameter nicht als Referenztyp deklarieren. Leider steht dies im Widerspruch zu der Anforderung, den Argumenttyp in der Signatur zu definieren, da der Methodenaufruf n.len den Typ kennen muss, auf dem er ausgeführt wird.
Andere Ansätze, mit denen ich dieses Problem umgehen wollte:
quelle
Neim , 3 Bytes
Probieren Sie es hier aus
Vielen Dank an Okx , der mich dazu ermutigt hat ... :)
quelle
C #, 62 Bytes
Nimmt ein
List<int>
als Eingabe und gibt ein zurückIEnumerable<int>
.Dies funktioniert auch für 64 Bytes:
quelle
TIS-100,
413405 Bytes472 Zyklen, 5 Knoten, 35 Codezeilen
Das m4,6 oben ist nicht Teil des Codes, signalisiert aber die Platzierung der Speichermodule.
Spielen Sie dieses Level selbst, indem Sie es in das Spiel einfügen:
Also ich nehme an, das zählt auch als lua Antwort ...
quelle
MATL , 6 Bytes
Probieren Sie es online!
Die Eingabe erfolgt als 1) Anzahl der zu trimmenden Elemente von Anfang an; 2) Anzahl der Elemente, die vom Ende abgeschnitten werden sollen; 3) Array. Erläuterung
quelle
Java (OpenJDK 8) , 32 Byte
Probieren Sie es online!
Wenn wir uns wirklich auf Arrays beschränken, dann sind es 53 Bytes:
Probieren Sie es online!
quelle
JavaScript (ES6), 27 Byte
Ein negativer zweiter Parameter
slice
stoppt das Slicingm
am Ende, wennm
jedoch Null ist, müssen wir einen Platzhalter übergeben (Infinity
hier(a,n,m,o)=>a.slice(n,-m||o)
funktioniert es zwar auch).quelle
R ,
323130 Byte-1 Byte dank Rift
-1 Byte danke an Jarko Dubbeldam
Wertet zu einer anonymen Funktion aus:
1+l
ist notwendig, da R 1-basierte Indizierung hat.sum(n|1)
entsprichtlength(n)
aber es ist ein Byte kürzer.Probieren Sie es online!
quelle
pryr::f(n[(1+l):(length(n)-r)])
MATL , 10 Bytes
Probieren Sie es online!
Erläuterung:
Es ist ein bisschen lang für nur 11 Bytes, aber ich schreibe es ausführlich auf, um es selbst zu lernen.
quelle
J
, wenn man es so benutzt. Ich vermutete , dass ich falsch war, konnte ich es einfach nicht herausfinden , für das Leben von mir ... Vielen Dank für die Anbindung an Ihre Antwort, ich bin sehr viel ein MATL Anfänger ...)
und mehr notorisch(
zittern ...(
verwirrend finde . :) Ich habe jedes Mal versucht, "ddi" (= "Ziel, Daten, Indizes" aus dem Handbuch) zu rezitieren und manchmal immer noch falsch zu verstehen.C ++
9695 BytesVielen Dank an @Tas für das Speichern eines Bytes!
Probieren Sie es online!
C ++ (MinGW), 91 Bytes
quelle
#include<list>
? Sie könnten ein Byte rasieren, indem Sie habenint f
. Compiler lassen zu, dass eine Funktion nicht zurückgegeben wird, warnen jedoch davorint f
wird auf den meisten Compilern funktionieren, ich werde das in bearbeiten. Auf MinGW funktioniert sogar das völlige Weglassen des Funktionstyps. Und ja, es#include<list>
wäre eine standardkonforme Möglichkeit, den Header#import<list>
einzuschließen, sollte aber zumindest auf GCC, MinGW und MSVC funktionieren, also sollte es auch in Ordnung sein.APL (Dyalog) ,
87 BytesProbieren Sie es online!
Dies nimmt das Array als erste Eingabe, gefolgt von den beiden Zahlen getrennt.
Erläuterung
quelle
⎕↓⎕↓⍨-⎕
PHP> = 7.1, 59 Bytes
PHP Sandbox Online
quelle
Brain-Flak , 60 Bytes
Probieren Sie es online!
Die Eingabe erfolgt in folgendem Format:
Wo
x
ist die Nummer von vorne zu nehmen,y
ist die Nummer von hinten zu nehmen, und das Array ist nur so viele Zahlen, wie Sie möchten, durch Zeilenumbrüche getrennt. Hier sind meine ersten beiden (längeren) Versuche:Und hier ist eine Erklärung:
quelle
APL (Dyalog) , 5 Bytes
Probieren Sie es online!
Eingabeformat ist
y x A
Erläuterung
/
is Reduce fügt die Funktion links zwischen jedes Elementpaar des Arguments ein(⌽↓)
ist ein äquivalenter Funktionszug{⌽⍺↓⍵}
, der die ersten⍺
Elemente des Arrays entfernt⍵
und das Array dann umkehrt. (⍺
ist das linke Argument und⍵
ist das rechte Argument)Also
(⌽↓)/y x A
ist gleichbedeutend damit⌽y↓⌽x↓A
, was gebraucht wird.quelle
Java 8, 82 Bytes
Probieren Sie es hier aus.
Alternative mit derselben ( 82 ) Byte-Anzahl unter Verwendung einer Schleife:
Probieren Sie es hier aus.
Erläuterung:
System.arraycopy
:quelle
(a,n,m)->
hat die gleiche Byteanzahl wiea->n->m->
. Obwohl Sie Recht haben, hätte ich auch einfach einen normalen Anruf tätigen können, anstatt zu curry. Ich bin irgendwie verwenden currying verwendet , wenn ich zwei (oder mehr) Parameter .. Ich habe schon den Fehler mit currying gemacht , als ich vier Parameter ein paar Mal habe ..C ++,
504846 BytesProbieren Sie es online!
quelle
Kotlin , 30 Bytes
Probieren Sie es online!
Nimmt
List<Int>
als Eingabe und fällt vom Anfang und dann vom Ende.quelle
try it online
. Können Sie einen Anrufercode hinzufügen? Wie kompiliere ich Lambda ohne Typdefinitionen in Kotlin? Vielen Dank.val f: (List<Int>, Int, Int) -> List<Int>
Brachylog ,
1110 BytesProbieren Sie es online!
Übernimmt die Eingabe als [x, A, y], wobei A das zu trimmende Array ist.
(-1 Byte dank @Fatalize.)
quelle
kb₍B&t;Bk₍
.,
hängt an (siehe das Ergebnis dieses Teilprogramms ), es verhält sich nicht so∧
. Versuchen Sie auch nicht , die Dinge aus altem (2016 bis Anfang 2017) zu kopieren Brachylog beantwortet , weil es die erste Version der Sprache war, und Programme sind nicht retrocompatible (insbesondere,
in Brachylog v1 jetzt ist∧
in Brachylog v2),
hat in der vorherigen Version anhängen, aber es hat einfach nicht Sache in diesem Fall , weil es eine war ,t
nachdem es sowieso - glücklicher Zufall. Und ja, ich erkannte die Versionsunterschiede, nachdem ich dies gepostet hatte. Ich war noch dabei, Dinge herauszufinden und herumzuspielen. :)Dyalog APL, 16 Bytes
Probieren Sie es online!
quelle
Pyth, 5 Bytes
Probieren Sie es hier aus
Fasst die Argumente in umgekehrter Reihenfolge zusammen.
<
und>
in Pyth schneiden basierend auf der Argumentreihenfolge. Zum Beispiel<Q5
werden alle Werte in der Eingabe nach dem fünften abgeschnitten.quelle
tcl, 19
woher
L
ist das Array?Demo
quelle
CJam , 8 Bytes
Anonymer Block, der die Eingaben vom Stapel in der Reihenfolge x , y , array nimmt und durch das Ausgabearray ersetzt.
Probieren Sie es online!
Erläuterung
Betrachten Sie Eingänge
2
,1
,[10 20 30 40 50 60]
.quelle
q / kdb, 12 Bytes
Lösung:
Beispiel:
Erläuterung:
quelle
Schläger, 33 Bytes
Man kann es so nennen:
quelle