Dada una matriz entera y dos números como entrada, elimine una cierta cantidad del primer y último elemento, especificado por los números. La entrada puede estar en el orden que desee.
Debe eliminar los primeros elementos x , donde x es la primera entrada numérica, y también eliminar los últimos elementos y , donde y es la segunda entrada numérica.
Se garantiza que la matriz resultante tendrá una longitud de al menos dos.
Ejemplos:
[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]
Respuestas:
Haskell,
55393329 bytesGuardado 16 bytes gracias a Laikoni
Ahorré 6 bytes más gracias a Laikoni
Ahorré 4 bytes más gracias a Laikoni
Estoy seguro de que esto podría mejorarse, pero como principiante, di mi mejor oportunidad.
Uso
Pruébalo en línea!
fuente
xs
.f x a b
af a b x
, puede simplemente dejar caer elx
:f a b=reverse.drop b.reverse.drop a
.a#b=let r=reverse in r.drop b.r.drop a
es de 38 bytes. ¿O se nos permite tener una función declarada fuera de esta?Octava, 20 bytes
Pruébalo en línea!
fuente
Mathematica, 17 bytes
entrada
fuente
;;
! Me las arreglé para vincularloDrop@##2~Drop~-#&
(si tomamos la entrada en un orden extraño como1, {1,2,3,4,5,6}, 2
), pero no mejor.Python ,
2826 bytes-2 bytes gracias a @Rod
Pruébalo en línea!
fuente
lambda a,n,m:a[n:~m]
+
y, por lo tanto, se aplica a[0]
. Usted necesitaría paréntesis:(a+[0])[n:~m]
.C # (.NET Core) ,
5554 bytesPruébalo en línea!
Utiliza a
List<int>
como entrada.fuente
List
como entrada para poder usarlo enCount
lugar deLength
.Where
que solo es un poco más larga que esta de la que estoy bastante contento :)using System.Linq;
al conteo de bytes :)using
que agrego mi respuesta, y los métodosSkip
y loTake
necesitousing
.Perl 5 , 21 bytes
19 bytes de código +
-ap
banderas.Pruébalo en línea!
Se utiliza
-a
para dividir automáticamente la entrada en el interior@F
, luego solo se mantiene una porción de ella de acuerdo con las otras entradas: desde el índice<>
(segunda entrada) hasta el índice$#F-<>
(tamaño de la matriz menos la tercera entrada). Y$_
se imprime implícitamente gracias a la-p
bandera.fuente
Óxido, 29 bytes
Llámalo como sigue:
Me divertí mucho peleando con el verificador de préstamos descubriendo cuál era el enfoque más corto para que infiriera la vida útil de una porción devuelta. Su comportamiento en torno a los cierres es algo errático, ya que inferirá las vidas, pero solo si no declara realmente el parámetro como un tipo de referencia. Desafortunadamente, esto entra en conflicto con la obligación de definir el tipo de argumento en la firma ya que la llamada al método n.len necesita saber el tipo en el que está operando.
Otros enfoques que probé para solucionar este problema:
fuente
Neim , 3 bytes
Pruébalo aquí
Gracias a Okx para animarme a hacer esto ... :)
fuente
C #, 62 bytes
Toma un
List<int>
como entrada y devuelve unIEnumerable<int>
.Esto también funciona para 64 bytes:
fuente
TIS-100,
413405bytes472 ciclos, 5 nodos, 35 líneas de código
El m4,6 en la parte superior no es parte del código, pero indica la ubicación de los módulos de memoria.
Juega este nivel tú mismo pegando esto en el juego:
Así que supongo que esto también cuenta como una respuesta lua ...
fuente
MATL , 6 bytes
Pruébalo en línea!
La entrada se da como 1) número de elementos para recortar desde el principio; 2) número de elementos para recortar desde el final; 3) matriz. Explicación
fuente
Java (OpenJDK 8) , 32 bytes
Pruébalo en línea!
Si realmente restringimos a las matrices, entonces son 53 bytes:
Pruébalo en línea!
fuente
JavaScript (ES6), 27 bytes
Un segundo parámetro negativo para
slice
detener el cortem
desde el final, sin embargo, cuandom
es cero, tenemos que pasar un marcador de posición (Infinity
aquí, aunque(a,n,m,o)=>a.slice(n,-m||o)
también funciona).fuente
R ,
323130 bytes-1 byte gracias a Rift
-1 byte gracias a Jarko Dubbeldam
Evalúa a una función anónima:
1+l
es necesario ya que R tiene indexación basada en 1.sum(n|1)
es equivalente alength(n)
pero es un byte más corto.Pruébalo en línea!
fuente
pryr::f(n[(1+l):(length(n)-r)])
MATL , 10 bytes
Pruébalo en línea!
Explicación:
Es un poco largo para solo 11 bytes, pero lo estoy escribiendo en detalle, para aprenderlo yo mismo también.
fuente
J
cuando se usaba así. Sospeché que estaba equivocado, simplemente no podía resolverlo por mi vida ... Gracias por vincularme a su respuesta, soy un novato de MATL ...)
y más notoriamente(
escalofrío ...(
confuso. :) He recurrido a recitar "ddi" (= "destino, datos, índices" del manual) cada vez, y todavía me equivoco a veces.C ++,
9695 bytes¡Gracias a @Tas por guardar un byte!
Pruébalo en línea!
C ++ (MinGW), 91 bytes
fuente
#include<list>
? Usted podría afeitarse un byte por tenerint f
. Los compiladores permitirán que una función no regrese, pero advertirán en contra de ellaint f
funcionará en la mayoría de los compiladores, lo editaré. En MinGW, incluso omitiendo completamente el tipo de función funciona. Y sí,#include<list>
sería una forma compatible con el estándar para incluir el encabezado, pero#import<list>
debería funcionar al menos en GCC, MinGW y MSVC, por lo que también debería estar bien.APL (Dyalog) ,
87 bytesPruébalo en línea!
Esto toma la matriz como la primera entrada, seguida de los dos números por separado.
Explicación
fuente
⎕↓⎕↓⍨-⎕
PHP> = 7.1, 59 bytes
PHP Sandbox en línea
fuente
Brain-Flak , 60 bytes
Pruébalo en línea!
La entrada está en este formato:
¿Dónde
x
está el número para tomar desde el frente,y
es el número para tomar desde la parte posterior, y la matriz tiene todos los números que desee, separados por nuevas líneas. Aquí están mis primeros dos intentos (más largos):Y aquí hay una explicación:
fuente
APL (Dyalog) , 5 bytes
Pruébalo en línea!
El formato de entrada es
y x A
Explicación
/
es Reducir, que inserta la función a la izquierda entre cada par de elementos del argumento(⌽↓)
es un tren de funciones equivalente a{⌽⍺↓⍵}
, que elimina los primeros⍺
elementos de la matriz⍵
y luego invierte la matriz. (⍺
es el argumento izquierdo y⍵
es el argumento correcto)Por lo tanto,
(⌽↓)/y x A
es equivalente a⌽y↓⌽x↓A
, que es lo que se necesita.fuente
Java 8, 82 bytes
Pruébalo aquí
Alternativa con el mismo ( 82 ) conteo de bytes usando un bucle:
Pruébalo aquí
Explicación:
System.arraycopy
:fuente
(a,n,m)->
tiene el mismo número de bytes quea->n->m->
. Aunque tienes razón, podría haber usado una llamada normal en lugar de curry. Estoy un poco acostumbrado a usar curry cuando tengo dos (o más) parámetros ... Ya he cometido el error de usar curry cuando tengo cuatro parámetros varias veces ...C ++,
504846 bytesPruébalo en línea!
fuente
Kotlin , 30 bytes
Pruébalo en línea!
Toma
List<Int>
como entrada y cae desde el principio y luego desde el final.fuente
try it online
. ¿Puedes agregar un código de llamada? ¿Cómo compilar lambda sin definiciones de tipo en Kotlin? Gracias.val f: (List<Int>, Int, Int) -> List<Int>
Brachylog ,
1110 bytesPruébalo en línea!
Toma la entrada como [x, A, y] donde A es la matriz a recortar.
(-1 byte gracias a @Fatalize.)
fuente
kb₍B&t;Bk₍
.,
se agrega (vea el resultado de este programa parcial ), no actúa como∧
. Tampoco intente copiar cosas de las respuestas antiguas de Brachylog (2016-principios de 2017) porque era la primera versión del lenguaje y los programas no son retrocompatibles (en particular,,
en Brachylog v1 ahora está∧
en Brachylog v2),
que anexé en la versión anterior, pero simplemente no importó en este caso porque hubo unt
después de todos modos, una coincidencia afortunada. Y sí, me di cuenta de las diferencias de versión después de publicar esto, todavía estaba resolviendo cosas y dando vueltas en esta etapa. :)Dyalog APL, 16 bytes
Pruébalo en línea!
fuente
Pyth, 5 bytes
Pruébalo aquí
Toma los argumentos en el orden opuesto.
<
y>
en Pyth trim basado en el orden de los argumentos. Por ejemplo,<Q5
recortará todos los valores en la entrada después del quinto.fuente
tcl, 19
¿Dónde
L
está la matriz?manifestación
fuente
CJam , 8 bytes
Bloque anónimo que toma las entradas de la pila en el orden x , y , matriz y las reemplaza por la matriz de salida.
Pruébalo en línea!
Explicación
Considere insumos
2
,1
,[10 20 30 40 50 60]
.fuente
q / kdb, 12 bytes
Solución:
Ejemplo:
Explicación:
fuente
Raqueta, 33 bytes
Se le puede llamar así:
fuente