Biorąc pod uwagę tablicę liczb całkowitych i dwie liczby jako dane wejściowe, usuń pewną liczbę pierwszego i ostatniego elementu, określoną liczbami. Dane wejściowe mogą być w dowolnej kolejności.
Powinieneś usunąć pierwsze x elementów, gdzie x jest pierwszym wprowadzeniem numerycznym, a także usunąć ostatnie y elementów, gdzie y jest drugim wprowadzeniem numerycznym.
Wynikowa tablica ma długość co najmniej dwóch.
Przykłady:
[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]
Odpowiedzi:
Haskell,
55393329 bajtówZaoszczędzono 16 bajtów dzięki Laikoni
Zaoszczędź jeszcze 6 bajtów dzięki Laikoni
Zaoszczędzono jeszcze 4 bajty dzięki Laikoni
Jestem pewien, że można to poprawić, ale jako początkujący dałem z siebie wszystko.
Stosowanie
Wypróbuj online!
źródło
xs
.f x a b
sięf a b x
, można po prostu upuśćx
:f a b=reverse.drop b.reverse.drop a
.a#b=let r=reverse in r.drop b.r.drop a
to 38 bajtów. A może wolno nam zadeklarować funkcję poza tym?Oktawa, 20 bajtów
Wypróbuj online!
źródło
Mathematica, 17 bajtów
wkład
źródło
;;
! Udało mi się cię związaćDrop@##2~Drop~-#&
(jeśli weźmiemy wkład w dziwnej kolejności, jak1, {1,2,3,4,5,6}, 2
), ale nie lepiej.Python ,
2826 bajtów-2 bajty dzięki @Rod
Wypróbuj online!
źródło
lambda a,n,m:a[n:~m]
+
i dlatego jest stosowany do[0]
. Będzie trzeba wsporniki:(a+[0])[n:~m]
.C # (.NET Core) ,
5554 bajtówWypróbuj online!
Używa
List<int>
jako danych wejściowych.źródło
List
dane wejściowe jako, dzięki czemu można go użyćCount
zamiastLength
.Where
które jest tylko trochę dłuższe niż ten sposób, z którego jestem również całkiem zadowolony :)using System.Linq;
do liczby bajtów :)using
dodanie w mojej odpowiedzi oraz metodySkip
iTake
potrzebyusing
.Perl 5 , 21 bajtów
19 bajtów kodu +
-ap
flagi.Wypróbuj online!
Używa automatycznego
-a
podziału wejścia wewnątrz@F
, a następnie zachowuje tylko jego fragment zgodnie z innymi danymi wejściowymi: od indeksu<>
(drugie wejście) do indeksu$#F-<>
(rozmiar tablicy minus trzecie wejście). I$_
jest domyślnie drukowane dzięki-p
flagom.źródło
Rdza, 29 bajtów
Nazwij to w następujący sposób:
Świetnie się bawiłem, walcząc z funkcją sprawdzania pożyczek, zastanawiając się, jakie było najkrótsze podejście, aby mieć wpływ na żywotność zwróconego wycinka. Jego zachowanie wokół zamknięć jest nieco nieobliczalne, ponieważ będzie wnioskować o żywotnościach, ale tylko wtedy, gdy w rzeczywistości nie zadeklarujesz parametru jako typu odniesienia. Niestety koliduje to z koniecznością zdefiniowania typu argumentu w podpisie, ponieważ wywołanie metody n.len musi znać typ, na którym działa.
Inne podejścia próbowałem obejść ten problem:
źródło
Neim , 3 bajty
Wypróbuj tutaj
Dzięki Okx za zachęcenie mnie do tego ... :)
źródło
C #, 62 bajty
Pobiera
List<int>
dane wejściowe i zwraca wartość anIEnumerable<int>
.Działa to również dla 64 bajtów:
źródło
TIS-100,
413405 bajtów472 cykli, 5 węzłów, 35 linii kodu
M4,6 na górze nie jest częścią kodu, ale sygnalizuje umieszczenie modułów pamięci.
Zagraj na tym poziomie, wklejając go do gry:
Więc przypuszczam, że to również liczy się jako odpowiedź lua ...
źródło
MATL , 6 bajtów
Wypróbuj online!
Dane wejściowe podano jako 1) liczbę elementów do przycięcia od początku; 2) liczba elementów do przycięcia od końca; 3) tablica. Wyjaśnienie
źródło
Java (OpenJDK 8) , 32 bajty
Wypróbuj online!
Jeśli naprawdę ograniczamy się do tablic, to jest to 53 bajty:
Wypróbuj online!
źródło
JavaScript (ES6), 27 bajtów
Drugi ujemny parametr
slice
zatrzymujący krojeniem
od końca, jednak gdym
wynosi zero, musimy przekazać symbol zastępczy (Infinity
tutaj, chociaż(a,n,m,o)=>a.slice(n,-m||o)
również działa).źródło
R ,
323130 bajtów-1 bajt dzięki Rift
-1 bajt dzięki Jarko Dubbeldam
Ocenia anonimową funkcję:
1+l
jest konieczne, ponieważ R ma indeksowanie 1.sum(n|1)
jest równoważne,length(n)
ale bajt jest krótszy.Wypróbuj online!
źródło
pryr::f(n[(1+l):(length(n)-r)])
MATL , 10 bajtów
Wypróbuj online!
Wyjaśnienie:
Trochę za długo zajmuje zaledwie 11 bajtów, ale piszę to szczegółowo, aby samemu się tego nauczyć.
źródło
J
, kiedy się tak używa. Podejrzewałem, że się myliłem, po prostu nie mogłem tego rozgryźć na całe życie ... Dzięki za link do twojej odpowiedzi, jestem nowicjuszem MATL ...)
bardziej notorycznie(
dreszcz ...(
mylącą. :) Za każdym razem zacząłem recytować „ddi” (= „miejsce docelowe, dane, indeksy” z podręcznika) i czasami źle się mylę.C ++,
9695 bajtówDzięki @Tas za uratowanie bajtu!
Wypróbuj online!
C ++ (MinGW), 91 bajtów
źródło
#include<list>
? Państwo mogłoby golić bajt mającint f
. Kompilatory pozwolą, aby funkcja nie powróciła, ale ostrzegają przed niąint f
będzie działał na większości kompilatorów, edytuję to. W MinGW nawet całkowite pominięcie rodzaju funkcji działa. I tak,#include<list>
byłby to zgodny ze standardami sposób dołączania nagłówka, ale#import<list>
powinien działać przynajmniej na GCC, MinGW i MSVC, więc też powinien być w porządku.APL (Dyalog) ,
87 bajtówWypróbuj online!
Pobiera tablicę jako pierwsze wejście, a następnie dwie liczby osobno.
Wyjaśnienie
źródło
⎕↓⎕↓⍨-⎕
PHP> = 7,1, 59 bajtów
PHP Sandbox Online
źródło
Brain-Flak , 60 bajtów
Wypróbuj online!
Dane wejściowe są w tym formacie:
Gdzie
x
jest liczba do pobrania z przodu,y
to liczba do pobrania z tyłu, a tablica zawiera tyle liczb, ile chcesz, oddzielonych znakami nowej linii. Oto moje pierwsze dwie (dłuższe) próby:A oto wyjaśnienie:
źródło
APL (Dyalog) , 5 bajtów
Wypróbuj online!
Format wejściowy to
y x A
Wyjaśnienie
/
to Reduce, która wstawia funkcję po lewej stronie między każdą parą elementów argumentu(⌽↓)
jest ciągiem funkcji równoważnym z{⌽⍺↓⍵}
, który usuwa pierwsze⍺
elementy tablicy,⍵
a następnie odwraca tablicę. (⍺
to lewy argument i⍵
prawy argument)Jest więc
(⌽↓)/y x A
równoważne z tym⌽y↓⌽x↓A
, co jest potrzebne.źródło
Java 8, 82 bajty
Wypróbuj tutaj.
Alternatywnie z taką samą ( 82 ) liczbą bajtów za pomocą pętli:
Wypróbuj tutaj.
Wyjaśnienie:
System.arraycopy
:źródło
(a,n,m)->
ma taką samą liczbę bajtów jaka->n->m->
. Chociaż masz rację, mógłbym po prostu użyć zwykłego połączenia zamiast curry. Jestem przyzwyczajony do używania curry, gdy mam dwa (lub więcej) parametrów. Już popełniłem błąd przy użyciu curry, gdy mam kilka parametrów kilka razy ..C ++,
504846 bajtówWypróbuj online!
źródło
Kotlin , 30 bajtów
Wypróbuj online!
Bierze
List<Int>
jako dane wejściowe i spada od początku, a następnie od końca.źródło
try it online
. Czy możesz dodać kod dzwoniącego? jak skompilować lambda bez definicji typu w Kotlinie? Dzięki.val f: (List<Int>, Int, Int) -> List<Int>
Brachylog ,
1110 bajtówWypróbuj online!
Pobiera dane wejściowe jako [x, A, y], gdzie A jest tablicą do przycięcia.
(-1 bajt dzięki @Fatalize.)
źródło
kb₍B&t;Bk₍
.,
dołącza się (patrz wynik tego programu częściowego ), nie działa jak∧
. Nie próbuj też kopiować rzeczy ze starych ( Brachylog v2, 2016 - początek 2017) odpowiedzi, ponieważ była to pierwsza wersja języka, a programy nie są kompatybilne (w szczególności,
w Brachylog v1 jest teraz∧
Brachylog v2),
było w poprzedniej wersji, ale w tym przypadkut
po prostu nie miało to znaczenia, ponieważ i tak było po niej - szczęśliwy zbieg okoliczności. I tak, zdałem sobie sprawę z różnic wersji po tym, jak to opublikowałem, wciąż zastanawiałem się i grzebałem na tym etapie. :)Dyalog APL, 16 bajtów
Wypróbuj online!
źródło
Pyth, 5 bajtów
Wypróbuj tutaj
Przyjmuje argumenty w odwrotnej kolejności.
<
oraz>
w przycinaniu Pyth na podstawie kolejności argumentów. Na przykład<Q5
odetnie wszystkie wartości na wejściu po piątej.źródło
tcl, 19
gdzie
L
jest tablica.próbny
źródło
CJam , 8 bajtów
Anonimowy blok, który pobiera dane wejściowe ze stosu w kolejności x , y , tablica i zastępuje je tablicą wyjściową.
Wypróbuj online!
Wyjaśnienie
Rozważmy wejść
2
,1
,[10 20 30 40 50 60]
.źródło
q / kdb, 12 bajtów
Rozwiązanie:
Przykład:
Wyjaśnienie:
źródło
Rakieta, 33 bajty
Można to tak nazwać:
źródło