Étant donné un tableau entier et deux nombres en entrée, supprimez une certaine quantité des premier et dernier éléments, spécifiés par les nombres. L'entrée peut être dans n'importe quel ordre.
Vous devez supprimer les premiers éléments x , où x est la première entrée numérique, et également supprimer les derniers éléments y , où y est la deuxième entrée numérique.
Le tableau résultant est garanti d'avoir une longueur d'au moins deux.
Exemples:
[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]
Réponses:
Haskell,
55393329 octets16 octets enregistrés grâce à Laikoni
6 octets de plus enregistrés grâce à Laikoni
4 octets de plus enregistrés grâce à Laikoni
Je suis sûr que cela pourrait être amélioré, mais en tant que débutant, j'ai fait de mon mieux.
Usage
Essayez-le en ligne!
la source
xs
.f x a b
def a b x
, vous pouvez simplement laisser tomber lex
:f a b=reverse.drop b.reverse.drop a
.a#b=let r=reverse in r.drop b.r.drop a
est de 38 octets. Ou sommes-nous autorisés à avoir une fonction déclarée en dehors de celle-ci?Octave, 20 octets
Essayez-le en ligne!
la source
Mathematica, 17 octets
contribution
la source
;;
! J'ai réussi à vous lier avecDrop@##2~Drop~-#&
(si nous prenons l'entrée dans un ordre bizarre comme1, {1,2,3,4,5,6}, 2
), mais pas mieux.Python ,
2826 octets-2 octets grâce à @Rod
Essayez-le en ligne!
la source
lambda a,n,m:a[n:~m]
+
et est donc appliquée à[0]
. Vous auriez besoin entre parenthèses:(a+[0])[n:~m]
.C # (.NET Core) ,
5554 octetsEssayez-le en ligne!
Utilise une
List<int>
entrée.la source
List
comme entrée afin de pouvoir l'utiliser à laCount
place deLength
.Where
qui n'est que légèrement plus longue que celle-ci et qui me satisfait également :)using System.Linq;
au nombre d'octets :)using
ajout de ma réponse, ainsi que les méthodesSkip
et lesTake
besoinsusing
.Perl 5 , 21 octets
19 octets de code +
-ap
drapeaux.Essayez-le en ligne!
Utilise
-a
pour diviser automatiquement l'entrée à l'intérieur@F
, puis n'en conserver qu'une tranche en fonction des autres entrées: de l'index<>
(deuxième entrée) à l'index$#F-<>
(taille du tableau moins troisième entrée). Et$_
est implicitement imprimé grâce au-p
drapeau.la source
Rouille, 29 octets
Appelez-le comme suit:
Je me suis beaucoup amusé à me battre avec le vérificateur d'emprunt pour déterminer l'approche la plus courte afin de déduire la durée de vie d'une tranche retournée. Son comportement autour des fermetures est quelque peu erratique, car il déduira les durées de vie, mais uniquement si vous ne déclarez pas réellement le paramètre comme type de référence. Malheureusement, cela entre en conflit avec la nécessité de définir le type d'argument dans la signature car l'appel de méthode n.len doit connaître le type sur lequel il fonctionne.
D'autres approches, j'ai essayé de contourner ce problème:
la source
Neim , 3 octets
Essayez-le ici
Merci à Okx de m'avoir encouragé à le faire ... :)
la source
C #, 62 octets
Prend une
List<int>
entrée et renvoie unIEnumerable<int>
.Cela fonctionne également pour 64 octets:
la source
TIS-100,
413405 octets472 cycles, 5 nœuds, 35 lignes de code
Le m4,6 en haut ne fait pas partie du code, mais signale le placement des modules de mémoire.
Jouez ce niveau vous-même en le collant dans le jeu:
Donc je suppose que cela compte aussi comme une réponse lua ...
la source
MATL , 6 octets
Essayez-le en ligne!
L'entrée est donnée comme 1) nombre d'éléments à couper depuis le début; 2) nombre d'éléments à couper à partir de la fin; 3) tableau. Explication
la source
Java (OpenJDK 8) , 32 octets
Essayez-le en ligne!
Si nous nous limitons vraiment aux tableaux, alors c'est 53 octets:
Essayez-le en ligne!
la source
JavaScript (ES6), 27 octets
Un deuxième paramètre négatif pour
slice
arrêter le découpage àm
partir de la fin, mais quand ilm
est nul, nous devons passer un espace réservé (Infinity
ici, bien que cela(a,n,m,o)=>a.slice(n,-m||o)
fonctionne également).la source
R ,
323130 octets-1 octet grâce à Rift
-1 octet grâce à Jarko Dubbeldam
Évalue à une fonction anonyme:
1+l
est nécessaire car R a une indexation basée sur 1.sum(n|1)
est équivalent àlength(n)
mais c'est un octet plus court.Essayez-le en ligne!
la source
pryr::f(n[(1+l):(length(n)-r)])
MATL , 10 octets
Essayez-le en ligne!
Explication:
C'est un peu long pour seulement 11 octets, mais je l'écris en détail, pour l'apprendre moi aussi.
la source
J
, lorsqu'il est utilisé comme ça. Je soupçonnais que j'avais tort, je ne pouvais tout simplement pas comprendre pour la vie de moi ... Merci pour le lien vers votre réponse, je suis vraiment un novice MATL ...)
et plus notoirement(
frissonne ...(
déroutant. :) Je me suis mis à réciter "ddi" (= "destination, données, indices" du manuel) à chaque fois, et je me trompe parfois.C ++,
9695 octetsMerci à @Tas pour avoir sauvé un octet!
Essayez-le en ligne!
C ++ (MinGW), 91 octets
la source
#include<list>
? Vous pourriez raser un octet en ayantint f
. Les compilateurs autoriseront une fonction à ne pas revenir, mais ils mettront en garde contre elleint f
cela fonctionnera sur la plupart des compilateurs, je vais le modifier. Sur MinGW, même en omettant complètement le type de la fonction fonctionne. Et oui, ce#include<list>
serait une manière conforme aux normes d'inclure l'en-tête, mais cela#import<list>
devrait fonctionner au moins sur GCC, MinGW et MSVC, donc ça devrait aller aussi.APL (Dyalog) ,
87 octetsEssayez-le en ligne!
Cela prend le tableau comme première entrée, suivi des deux nombres séparément.
Explication
la source
⎕↓⎕↓⍨-⎕
PHP> = 7.1, 59 octets
PHP Sandbox Online
la source
Brain-Flak , 60 octets
Essayez-le en ligne!
L'entrée est dans ce format:
Où
x
est le numéro à prendre de l'avant,y
est le numéro à prendre de l'arrière, et le tableau est juste autant de nombres que vous voulez, séparés par des retours à la ligne. Voici mes deux premières tentatives (plus longues):Et voici une explication:
la source
APL (Dyalog) , 5 octets
Essayez-le en ligne!
Le format d'entrée est
y x A
Explication
/
est Reduce, qui insère la fonction à gauche entre chaque paire d'éléments de l'argument(⌽↓)
est un train de fonctions équivalent à{⌽⍺↓⍵}
, qui supprime les premiers⍺
éléments du tableau⍵
puis inverse le tableau. (⍺
est l'argument de gauche et⍵
l'argument de droite)Ainsi,
(⌽↓)/y x A
est équivalent à⌽y↓⌽x↓A
, ce qui est nécessaire.la source
Java 8, 82 octets
Essayez-le ici.
Alternative avec le même ( 82 ) nombre d'octets en utilisant une boucle:
Essayez-le ici.
Explication:
System.arraycopy
:la source
(a,n,m)->
a le même nombre d'octets quea->n->m->
. Bien que vous ayez raison, j'aurais pu simplement utiliser un appel régulier au lieu de curry. J'ai un peu l'habitude d'utiliser le curry quand j'ai deux (ou plus) paramètres .. J'ai déjà fait l'erreur d'utiliser le curry quand j'ai quatre paramètres plusieurs fois ..C ++,
504846 octetsEssayez-le en ligne!
la source
Kotlin , 30 octets
Essayez-le en ligne!
Prend
List<Int>
en entrée et tombe du début puis de la fin.la source
try it online
. Pouvez-vous ajouter un code d'appel? comment compiler lambda sans définitions de types dans Kotlin? Merci.val f: (List<Int>, Int, Int) -> List<Int>
Brachylog ,
1110 octetsEssayez-le en ligne!
Prend l'entrée comme [x, A, y] où A est le tableau à découper.
(-1 octet grâce à @Fatalize.)
la source
kb₍B&t;Bk₍
.,
s'ajoute (voir le résultat de ce programme partiel ), il n'agit pas comme∧
. N'essayez pas non plus de copier des éléments des réponses Brachylog anciennes (2016-début 2017) car il s'agissait de la première version du langage, et les programmes ne sont pas rétrocompatibles (en particulier,,
dans Brachylog v1 est maintenant∧
dans Brachylog v2),
même dans la version précédente, mais cela n'avait pas d'importance dans ce cas, car il y avait det
toute façon une chance - une coïncidence chanceuse. Et oui, j'ai réalisé les différences de version après avoir posté cela, je réfléchissais toujours aux choses et je marmonnais à ce stade. :)Dyalog APL, 16 octets
Essayez-le en ligne!
la source
Pyth, 5 octets
Essayez-le ici
Prend les arguments dans l'ordre inverse.
<
et>
en Pyth Trim basé sur l'ordre des arguments. Par exemple,<Q5
supprimera toutes les valeurs de l'entrée après la cinquième.la source
tcl, 19
où
L
est le tableau.démo
la source
CJam , 8 octets
Bloc anonyme qui prend les entrées de la pile dans l'ordre x , y , tableau et les remplace par le tableau de sortie.
Essayez-le en ligne!
Explication
Tenez compte des entrées
2
,1
,[10 20 30 40 50 60]
.la source
q / kdb, 12 octets
Solution:
Exemple:
Explication:
la source
Raquette, 33 octets
Il peut être appelé ainsi:
la source