При наличии массива положительных целых чисел и двух различных допустимых индексов, верните массив с двумя элементами, соответствующими двум индексам, поменяв местами.
Вы можете выбрать 0-индексирование или 1-индексирование, но приведенные ниже тестовые примеры будут 0-индексированы.
array m n output
[1,2,3,4] 0 1 [2,1,3,4]
[5,8,9] 0 2 [9,8,5]
[11,13,15,3] 1 2 [11,15,13,3]
[11,13,15,3] 2 1 [11,15,13,3]
[11,15,15,3] 2 1 [11,15,15,3]
Это код-гольф . Кратчайший ответ в байтах побеждает. Применяются стандартные лазейки .
code-golf
array-manipulation
Дрянная Монахиня
источник
источник
m
иn
принять за массив?Ответы:
С
/ C ++,535039 байтПопробуйте онлайн
Сохранено 11 байтов благодаря @Dennis
источник
Язык сценариев работы Flashpoint ,
9895 байтМодифицирует массив напрямую.
Объяснение:
Звоните с:
Выход:
источник
JavaScript ES6,
3632 байтаСмотри, мама, нет временной переменной!
Попытайся
Введите разделенный запятыми список элементов для
a
и 2 целых числа дляm
&n
.источник
(a,m,n)=>[a[m],a[n]]=[a[n],a[m]]
? Это вывело бы только 2 замененных элемента без остальной части массива (например,[5,8,9],0,2
->[9,5]
).a
в конце, чтобы дать нам полный, модифицированный массив. Или я полностью упускаю то, что вы пытаетесь сказать?Python 3 ,
4132 байта-9 байт благодаря @notjagan
Попробуйте онлайн!
Изменяет аргумент, который является допустимым форматом вывода .
источник
Желе , 7 байт
Попробуйте онлайн!
Как это работает
источник
y
y
, но не думал использовать это здесь. Это довольно умный ответ.Jelly
действительный код Jelly?Japt ,
1716 байтПопробуйте онлайн!
Сохраненный байт благодаря ETHproductions
источник
MATL ,
76 байтИндексы основаны на 1.
Попробуйте онлайн!
объяснение
Рассмотрим входы
[11 13 15 3]
,[2 3]
.источник
C # (.NET Core) ,
48 4331 байтПопробуйте онлайн!
Меняет местами числа в исходном массиве, временные переменные не используются. Тем не менее я не могу взять кредит на этот ответ, так как это была идея Нейла .
источник
(a,m,n)=>a[m]+=a[n]-(a[n]=a[m])
кажется, работает, хотя.Common Lisp , 42 байта
-2 байта благодаря @coredump .
Попробуйте онлайн!
Довольно прямо вперед, так как существует макрос Common Lisp для обмена:
rotatef
.источник
Javascript ES6,
3634 байтадемонстрация
Показать фрагмент кода
источник
CJam , 4 байта
Попробуйте онлайн!
источник
Java 8 , 48 байт
Входные данные:
источник
(a,b,c)->a[b]+=a[c]-(a[c]=a[b])
( 31 байт )Collections::swap
составляет 17 байт ... по крайней мере, предполагая, что это справедливо для этого вызова ...05AB1E , 10 байтов
Попробуйте онлайн!
источник
Октава , 28 байт
Попробуйте онлайн!
Вполне доволен этим на самом деле :)
Вводит данные по форме:
f([1,2,3,4],[1,2])
1, индексируется.Объяснение:
источник
Медуза , 7 байт
Принимает список и пару индексов. Попробуйте онлайн!
объяснение
У медузы есть функция «изменить элементы по индексам»
Z
, которая делает именно то, что нам нужно. Дваi
s получают данные от STDIN.Z
принимает в качестве аргументов второй вход, функцию обращенияR
и список. ЗатемZ
выполняет модификацию иp
печатает результат.источник
R, 38 байт
Чувствуется довольно долго, но я не могу получить это намного короче. К сожалению, это требует явного возврата через
x
, требуя{}
вокруг тела функции.pryr::f()
не распознает необходимость вx
качестве аргумента функции, поэтому не работает: /.источник
function(x,i)replace(x,i,rev(i))
будет работать, даже с синтаксисом Pryr.replace(x,i,x[rev(i)])
, иначе вы разместите индексы вместо их значений.Шэньчжэньский ввод / вывод, 735 байт
23 ¥, 810 Power, 48 строк кода
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Массивы в этом случае заканчиваются на 0. Массивы - боль в заднице, чтобы работать с вводом-выводом в Шэньчжэне иначе.
Я сделал паровой уровень для этой игры. Вы можете сыграть здесь.
РЕДАКТИРОВАТЬ: Aa, и я только что понял, что я сказал, что массив в был заказан. Heck.
источник
Swift,
11165 байт (0-проиндексирован)Swift уже известен как один из худших языков кода-гольфа, но вот функция,
которая использует троичные выражения:Проверьте это! - Использование:
t(l:[1,2,3],m:0,n:1)
.источник
k ( kona ), 13 байтов
Довольно простой, но это работает. Пример:
источник
Perl 5 , 32 байта
-3 байта благодаря @Dom Hastings !
30 байтов кода +
-pa
флаги.Попробуйте онлайн!
Совершенно прямо, используя кусочки массива.
источник
@F[pop@p,@p]=@F[@p=<>];$_="@F"
,Mathematica, 32 байта
источник
a[[{##2}]]==a[[{#3,#2}]]
должно бытьa[[{##2}]]=a[[{#3,#2}]]
(используяSet
, а неEquals
)C, 42 байта
Измените массив на месте с помощью временного значения.
C
6058 байтНемного интереснее, не используя никакого временного значения ...
C, 49 байтов
Использование XOR
источник
f(x,i,j,t)int*x;{t=x[i];x[i]=x[j];x[j]=t;}
.^
?#define X(x,y,z)x[y]^=x[z],x[z]^=x[y],x[y]^=x[z]
f(r,m,n){int*a=r;r=a[m];a[m]=a[n];a[n]=r;}
сломан: SIGSEGV.Pyth ,
178 байтСохранено 9 байтов благодаря Leaky Num.
Проверьте это онлайн!
Это 0 индексированные, а индексы представлены в виде кортежа:
(n, m)
.Пояснения
источник
@LQ.rUQE
Mathematica, 20 байтов
Чистая функция, принимающая два аргумента в следующем 1-индексированном (и, возможно, оскорбительном) формате: второй контрольный пример
[5,8,9]; 0 2; [9,8,5]
будет вызываться как(пробелы посторонние и просто для видимого разбора).
Permute
это встроенная функция, которая применяет перестановку к списку иCycles[{{a,b}}]
представляет перестановку, которая обмениваетa
th-b
й элемент списка и игнорирует остальные.источник
~
делать?~
является инфиксной нотацией Mathematica для двоичной функции:x~f~y
означает то же самое, что иf[x,y]
.Машинный код x86, 10 байт
Это функция, написанная на 32-битном машинном коде x86, которая меняет значения по указанным индексам в данном массиве. Массив изменяется на месте , и функция не возвращает значение.
Используется пользовательское соглашение о вызовах, требующее передачи параметров функции в регистры :
EBX
регистр.ECX
регистр.(Предполагается, что действительный индекс.)
EDX
регистр.(Предполагается, что действительный индекс.)
Это уменьшает размер и соответствует всем формальным требованиям, но означает, что функцию нельзя легко вызвать из других языков, таких как C. Вам нужно будет вызывать ее из другой программы на языке ассемблера. (Вы можете переписать его, чтобы использовать любые входные регистры, однако, не влияя на количество байтов; в тех, что я выбрал, нет ничего волшебного.)
Ungolfed:
источник
R, 34 байта
источник
Java 8 + InverseY , 27 байт
Просто вызывает функцию подкачки ... это ссылка на метод типа
Consumer3<List, Integer, Integer>
.Попробуйте онлайн! (верхний и нижний колонтитулы для шаблона и копия
Consumer3
интерфейса)источник
JavaScript (ES2015),
665749 байтДругой (увы, более длинный) подход, чем предыдущие ответы JavaScript
Источник
источник
(s,h,o,w=s.splice.bind(s))=>w(h,1,...w(o,1,s[h]))
49 байтовawk, 31 байт
Попробуйте онлайн!
Принимает ввод в формате
и выводит как
(1-индексированных).
объяснение
Вся программа представляет собой отсутствующий шаблон с действием, за которым следует шаблон с отсутствующим действием.
Поскольку отсутствующий шаблон выполняется в каждой строке, код внутри фигурных скобок выполняется для обеих строк ввода.
c=$a;$a=$b;$b=c;
Часть обменивает два значения с индексамиa
иb
(через временную переменнуюc
). Это влияет только на вторую строку, так как в первой строкеa
иb
еще не определены. Вa=$1;b=$2
части определяется ,a
чтобы быть первым полем , иb
будет второе поле, которое устанавливает соответствующие значения для первой части для запуска на второй линии.Поскольку отсутствующее действие эквивалентно
{print}
, шаблон печатает каждую строку, которой он соответствует. В частности, этот шаблонNR>1
: то есть печатать всякий раз, когда номер строки больше 1, что является строкой 2. Это выполняется после обмена значениями, что завершает задачу.источник
q / kdb +, 17 байт
Решение:
Пример:
Объяснение:
Q-версия ответа Саймона. Примените
:
функцию присваивания x для индексов в обратном направлении y со значением x, индексированным в y. Сломанные вы можете увидеть более четко:источник