Если в качестве входных данных указать массив целых чисел и два числа, удалите определенное количество первого и последнего элементов, указанных числами. Ввод может быть в любом порядке.
Вы должны удалить первые элементы x , где x - первый числовой ввод, а также удалить последние элементы y , где y - второй числовой ввод.
Полученный массив гарантированно будет иметь длину не менее двух.
Примеры:
[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]
Ответы:
Haskell,
55393329 байтСохранено 16 байтов благодаря Laikoni
Сохранено еще 6 байтов благодаря Laikoni
Сохранено еще 4 байта благодаря Laikoni
Уверен, что это можно улучшить, но, как новичок, сделал все возможное.
использование
Попробуйте онлайн!
источник
xs
.f x a b
кf a b x
, вы можете просто удалитьx
:f a b=reverse.drop b.reverse.drop a
.a#b=let r=reverse in r.drop b.r.drop a
это 38 байтов. Или мы можем объявить функцию вне этой?Октава, 20 байт
Попробуйте онлайн!
источник
Mathematica, 17 байт
вход
источник
;;
! Мне удалось связать васDrop@##2~Drop~-#&
(если мы примем ввод в странном порядке1, {1,2,3,4,5,6}, 2
), но не лучше.Python ,
2826 байт-2 байта благодаря @Rod
Попробуйте онлайн!
источник
lambda a,n,m:a[n:~m]
+
и поэтому применяется к[0]
. Вы должны были бы скобки:(a+[0])[n:~m]
.C # (.NET Core) ,
5554 байтаПопробуйте онлайн!
Использует
List<int>
как вход.источник
List
качестве входных данных, чтобы вы могли использоватьCount
вместоLength
.Where
это, лишь немного длиннее, чем этот способ, которым я тоже вполне доволен :)using System.Linq;
в счетчик байтов :)using
я добавлю в своем ответе, и методыSkip
иTake
нужно этоusing
.Perl 5 , 21 байт
19 байт кода +
-ap
флаги.Попробуйте онлайн!
Использует
-a
для автоматического разделения входных данных внутри@F
, а затем сохраняет только его часть в соответствии с другими входными данными: от индекса<>
(второй вход) до индекса$#F-<>
(размер массива минус третий вход). И$_
неявно печатается благодаря-p
флажку.источник
Ржавчина, 29 байт
Назовите это следующим образом:
Мне было очень весело бороться с средством проверки заимствования, выясняя, какой кратчайший подход был для того, чтобы сделать вывод о сроке службы возвращенного среза. Его поведение в отношении замыканий несколько ошибочно, так как оно выведет время жизни, но только если вы фактически не объявите параметр как ссылочный тип. К сожалению, это конфликтует с необходимостью определения типа аргумента в сигнатуре, так как вызов метода n.len должен знать тип, над которым он работает.
Другие подходы, которые я пытался обойти эту проблему:
источник
Нейм , 3 байта
Попробуй здесь
Спасибо Okx за то, что побудили меня сделать это ... :)
источник
C #, 62 байта
Принимает в
List<int>
качестве входных данных и возвращаетIEnumerable<int>
.Это также работает для 64 байтов:
источник
TIS-100,
413405 байт472 цикла, 5 узлов, 35 строк кода
M4,6 в верхней части не является частью кода, но сигнализирует о размещении модулей памяти.
Пройдите этот уровень самостоятельно, вставив это в игру:
Итак, я полагаю, это также считается ответом Луа ...
источник
MATL , 6 байтов
Попробуйте онлайн!
Входные данные даны как 1) количество элементов, которые нужно обрезать с самого начала; 2) количество элементов для обрезки с конца; 3) массив. объяснение
источник
Java (OpenJDK 8) , 32 байта
Попробуйте онлайн!
Если мы действительно ограничиваемся массивами, то это 53 байта:
Попробуйте онлайн!
источник
JavaScript (ES6), 27 байт
Отрицательный второй параметр, который
slice
прекращает нарезкуm
с конца, однако, когда онm
равен нулю, мы должны передать заполнитель (Infinity
здесь, хотя(a,n,m,o)=>a.slice(n,-m||o)
и работает).источник
Р ,
323130 байт-1 байт благодаря Rift
-1 байт благодаря Ярко Дуббельдаму
Оценивает анонимную функцию:
1+l
необходим, поскольку R имеет индексирование на основе 1.sum(n|1)
эквивалентно,length(n)
но это на байт короче.Попробуйте онлайн!
источник
pryr::f(n[(1+l):(length(n)-r)])
MATL , 10 байт
Попробуйте онлайн!
Объяснение:
Это немного длинно всего для 11 байтов, но я пишу это в деталях, чтобы выучить это и сам.
источник
J
при таком использовании невозможно что-то вычесть . Я подозревал, что был неправ, я просто не мог понять это ради своей жизни ... Спасибо за ссылку на ваш ответ, я очень новичок в MATL ...)
и, как известно,(
дрожание ...(
запутанным. :) Я каждый раз повторял «ddi» (= «пункт назначения, данные, индексы» из руководства) и иногда все еще ошибаюсь.C ++,
9695 байтСпасибо @Tas за сохранение байта!
Попробуйте онлайн!
C ++ (MinGW), 91 байт
источник
#include<list>
? Вы можете побрить байт, имеяint f
. Компиляторы позволят функции не возвращаться, но они будут предупреждать об этомint f
будет работать на большинстве компиляторов, я отредактирую это в. На MinGW, даже полное опускание типа функции работает. И да,#include<list>
это был бы совместимый со стандартами способ включения заголовка, но он#import<list>
должен работать по крайней мере на GCC, MinGW и MSVC, поэтому он тоже должен быть в порядке.APL (Dyalog) ,
87 байтовПопробуйте онлайн!
Это берет массив как первый вход, сопровождаемый двумя числами отдельно.
объяснение
источник
⎕↓⎕↓⍨-⎕
PHP> = 7.1, 59 байт
PHP Sandbox Online
источник
Brain-Flak , 60 байт
Попробуйте онлайн!
Ввод в этом формате:
Где
x
число, которое нужно взять с фронта,y
это число, которое нужно взять со спины, а массив - это сколько угодно чисел, разделенных символом новой строки. Вот мои первые две (более длинные) попытки:И вот объяснение:
источник
APL (Dyalog) , 5 байтов
Попробуйте онлайн!
Формат ввода
y x A
объяснение
/
является Reduce, который вставляет функцию слева между каждой парой элементов аргумента(⌽↓)
является эквивалентом последовательности функций{⌽⍺↓⍵}
, который удаляет первые⍺
элементы массива,⍵
а затем переворачивает массив. (⍺
это левый аргумент и⍵
правый аргумент)Таким образом,
(⌽↓)/y x A
эквивалентно тому⌽y↓⌽x↓A
, что нужно.источник
Java 8, 82 байта
Попробуй это здесь.
Альтернатива с таким же ( 82 ) счетчиком байтов с использованием цикла:
Попробуй это здесь.
Объяснение:
System.arraycopy
:источник
(a,n,m)->
имеет тот же счетчик байтов, что иa->n->m->
. Хотя вы правы, я мог бы просто использовать обычный звонок вместо карри. Я использую карри, когда у меня есть два (или более) параметра. Я уже совершил ошибку, используя карри, когда у меня есть четыре параметра несколько раз ..C ++,
504846 байтПопробуйте онлайн!
источник
Котлин , 30 байтов
Попробуйте онлайн!
Принимает в
List<Int>
качестве входных данных и падает с начала и затем с конца.источник
try it online
. Вы можете добавить код звонящего? Как скомпилировать лямбда без определения типа в Kotlin? Спасибо.val f: (List<Int>, Int, Int) -> List<Int>
Брахилог ,
1110 байтПопробуйте онлайн!
Принимает ввод как [x, A, y], где A - массив для обрезки.
(-1 байт благодаря @Fatalize.)
источник
kb₍B&t;Bk₍
.,
действительно добавляет (см. результат этой частичной программы ), это не действует как∧
. Также не пытайтесь копировать старые ответы (с начала 2016 года по начало 2017 года), потому что это была первая версия языка, а программы не являются,
∧
,
же самое было добавлено в предыдущей версии, но в данном случае это не имело значения, потому чтоt
после него все равно было - счастливое совпадение. И да, я понял различия версий после того, как опубликовал это, я все еще разбирался в вещах и неуклюже на этом этапе. :)Дьялог АПЛ, 16 байт
Попробуйте онлайн!
источник
Pyth, 5 байт
Попробуй здесь
Принимает аргументы в обратном порядке.
<
и>
в Pyth Trim на основе порядка аргументов. Например,<Q5
обрезает все значения на входе после пятого.источник
ткл, 19
где
L
находится массивдемонстрация
источник
CJam , 8 байт
Анонимный блок, который принимает входные данные из стека в порядке x , y , массив и заменяет их выходным массивом.
Попробуйте онлайн!
объяснение
Рассмотрим входы
2
,1
,[10 20 30 40 50 60]
.источник
q / kdb, 12 байтов
Решение:
Пример:
Объяснение:
источник
Ракетка, 33 байта
Это можно назвать так:
источник