Для заданной строки S
и списка индексов X
измените S
, удалив элемент в каждом индексе S
, используя этот результат в качестве нового значения S
.
Например, учитывая S = 'codegolf'
и X = [1, 4, 4, 0, 2]
,
0 1 2 3 4 5 6 7 |
c o d e g o l f | Remove 1
c d e g o l f | Remove 4
c d e g l f | Remove 4
c d e g f | Remove 0
d e g f | Remove 2
d e f
Ваша задача - выполнить этот процесс, собирать значения S
после каждой операции и отображать каждое в новой строке по порядку. Окончательный ответ будет
S = 'codegolf'
X = [1, 4, 4, 0, 2]
Answer:
codegolf
cdegolf
cdeglf
cdegf
degf
def
- Это код-гольф, поэтому сделайте ваш код как можно короче.
- Вы можете предположить, что значения in
X
всегда являются действительными индексамиS
, и вы можете использовать индексирование на основе 0 или 1. - Строка будет содержать только
[A-Za-z0-9]
- Либо
S
илиx
может быть пустым. ЕслиS
пусто, значит, оноx
также должно быть пустым. - Вы также можете использовать
S
в качестве списка символов вместо строки. - Вы можете распечатать вывод или вернуть список строк. Начальные и конечные пробелы приемлемы. Любая форма вывода хороша, если она легко читаема.
Тестовые случаи
S = 'abc', x = [0]
'abc'
'bc'
S = 'abc', x = []
'abc'
S = 'abc', x = [2, 0, 0]
'abc'
'ab'
'b'
''
S = '', x = []
''
S = 'codegolfing', x = [10, 9, 8, 3, 2, 1, 0]
'codegolfing'
'codegolfin'
'codegolfi'
'codegolf'
'codgolf'
'cogolf'
'cgolf'
'golf'
code-golf
string
array-manipulation
code-golf
string
ascii-art
code-golf
number
sequence
pi
code-golf
number
array-manipulation
code-golf
string
ascii-art
code-golf
math
number
game
code-golf
math
sequence
polynomials
recursion
code-golf
math
number
sequence
number-theory
code-golf
permutations
balanced-string
code-golf
string
ascii-art
integer
code-golf
decision-problem
hexagonal-grid
code-golf
ascii-art
kolmogorov-complexity
code-golf
number
code-golf
matrix
binary-matrix
code-golf
math
statistics
code-golf
string
polyglot
code-golf
random
lost
code-golf
date
path-finding
code-golf
string
code-golf
math
number
arithmetic
number-theory
code-golf
tetris
binary-matrix
code-golf
array-manipulation
sorting
code-golf
number
code-golf
array-manipulation
rubiks-cube
cubically
code-golf
grid
optimization
code-golf
math
function
code-golf
string
quine
code-golf
ascii-art
grid
code-golf
decision-problem
grid
simulation
code-golf
math
sequence
code-golf
path-finding
code-golf
ascii-art
grid
simulation
code-golf
number
whitespace
code-golf
sequence
code-golf
sequence
code-golf
sequence
integer
code-golf
math
game
code-golf
internet
stack-exchange-api
code-golf
sequence
code-golf
internet
stack-exchange-api
code-golf
math
factoring
code-challenge
sequence
polyglot
rosetta-stone
code-golf
string
browser
code-golf
date
code-golf
base-conversion
code-challenge
cops-and-robbers
hello-world
code-golf
cops-and-robbers
hello-world
миль
источник
источник
S
в качестве списка персонажей?len(x)+1
строки.Ответы:
Haskell,
3833 байтаПрямо вперед: несколько раз возьмите элементы до и после индекса i, присоединитесь к ним и соберите результаты.
Попробуйте онлайн!
Редактировать: @Lynn сохранил 5 байтов. Благодарность!
источник
s#i=take i s++drop(i+1)s
на самом деле короче, экономя 5 байтов.q=
^^;JavaScript (ES6),
5750484542 байтаПринимает строку как массив отдельных символов, выводит массив, содержащий разделенную запятыми строку оригинала, за которой следует подстрока строк, разделенных запятыми, для каждого шага.
Проверь это
объяснение
Мы принимаем два входа через параметры
s
(строковый массив) иa
(целочисленный массив) в синтаксисе карри, то есть мы вызываем функцию сf(s)(a)
.Мы строим новый массив и начинаем его с оригинала
s
. Однако, посколькуsplice
метод, который мы будем использовать позже, модифицирует массив, нам нужно сделать его копию, что мы можем сделать, преобразовав его в строку (просто добавив пустую строку).Чтобы сгенерировать подмассив, мы
map
над массивом целых чиселa
(гдеx
текущее целое число) и для каждого элемента мыsplice
1 элементs
, начиная с индексаx
. Мы возвращаем измененноеs
, снова делая его копию, преобразовав его в строку.источник
s=>a=>[s+'',...a.map(x=>s.splice(x,1)&&s+'')]
Japt , 6 байт
Проверьте это онлайн!
объяснение
В качестве альтернативы:
Это работает, потому что удаление элемента в index
"
ничего не делает и поэтому возвращает исходную строку.источник
Шелуха , 7 байт
Принимает сначала строку, затем (на основе 1) индексы. Попробуйте онлайн!
объяснение
источник
x
?Python 2 , 43 байта
Попробуйте онлайн!
Так что это печатает как списки символов.
источник
for i in i+[0]
?+[0]
я говорюfor i in i
.for k in i
эквивалентно .Python 2 , 47 байт
Это может быть сокращено до 43 байт , как указывало @LuisMendo, но это уже решение @ ErktheOutgolfer.
Попробуйте онлайн!
источник
`a`[2::5]
вместо этого''.join(a)
repr
и разделение строк, хорошо работает для преобразования списка символов в строку,`a`[1::3]
также может использоваться со списком цифр::5
здесь работает: PJava 8, 78 байт
Это лямбда с карри, от
int[]
потребителяStringBuilder
илиStringBuffer
. Вывод распечатывается на стандартный вывод.Попробуйте онлайн
источник
Stream
s в качестве входных данных и получал очень хорошие ответы. Фактически, почти все языки гольфа используют потоки, эквивалентные внутренне. Таким образом, выбрав свой вход, вы просто выровняете немного. +1 тем не менее05AB1E , 11 байт
Попробуйте онлайн!
источник
Any form of output is fine as long as it is easily readable
Mathematica, 70 байт
Попробуйте онлайн!
источник
R ,
4632 байтаПопробуйте онлайн!
Вводит в виде списка символов и
X
основывается на 1.Reduce
является эквивалентом Rfold
, функция в этом случае[
является подмножеством. Выполняется итерация,-X
поскольку отрицательное индексирование в R удаляет элемент иinit
устанавливается равнымS
,accum=TRUE
поэтому мы накапливаем промежуточные результаты.R , 80 байт
2-аргументная функция, принимает
X
1-индексированный. принимаетS
как строку.Попробуйте онлайн!
источник
Reduce
здесь. Отлично сработано!Haskell , 33 байта
Попробуйте онлайн!
источник
PowerShell ,
9484 байтаПопробуйте онлайн!
Принимает ввод
$s
как строку и$x
как явный массив. Затем мы создаем$a
на основе$s
списка.Массивы в PowerShell имеют фиксированный размер (для наших целей здесь), поэтому нам нужно использовать длинные
[System.Collections.Generic.list]
тип longy, чтобы получить доступ к.removeAt()
функции, которая в точности соответствует тому, что написано на жестком диске.Я пожертвовал 10 байтами, чтобы включить два
-join
оператора, чтобы сделать вывод красивым. ОП заявил, что вывод списка символов - это нормально, поэтому я мог бы выводить только$a
вместо-join$a
, но, на мой взгляд, это действительно ужасно.Сохранено 10 байт благодаря бриантисту.
источник
System
и просто использовать[Collections.Generic.list[char]]
. Чтобы сохранить его красивым, не жертвуя байтами, вы можете поместить последний-join$a
в нижний колонтитул в TIO.$a.removeat($_)
на,$a|% r*t $_
.System
из названия класса. К сожалению, последний-join$a
код необходим для кода, поэтому я не могу переместить его в нижний колонтитул.Python 2 , 50 байт
Попробуйте онлайн!
источник
05AB1E ,
97 байтПопробуйте онлайн!
-2 благодаря идее от @ETHProductions.
источник
x
пусто.=sv""yǝ=
или что-то подобное вместо замены новой строки, а затем удаления новой строки?õ
также работает :)Сетчатка , 58 байт
Попробуйте онлайн! Объяснение:
Сопоставьте индексы (которые никогда не находятся на первой строке, поэтому всегда начинаются с новой строки).
Двойные пробелы индексов, преобразование в унарное и добавление 1 (потому что нули жесткие в сетчатке).
Повторно меняйте первое совпадение, которое всегда является текущим значением строки.
Получить следующий индекс в
$#1
.Захватите строку, включая
$#1
символ th и одну новую строку .Отдельно запишите префикс и суффикс
$#1
th-го символа строки.Подходим индекс.
Замените строку на себя, а индекс - на префикс и суффикс
$#1
символа th.источник
Pyth, 8 байт
демонстрация
Уменьшите, начиная со строки и перебирая список индексов, функции удаления.
источник
PowerShell ,
5458 байтПопробуйте онлайн!
объяснение
Принимает ввод как массив символов (
[char[]]
).Перебирает массив индексов (
$x
) плюс впрыскивает первый элемент-1
, то для каждого из них, присваивает текущий элемент$z
, инициализирует$i
к0
, а затем итерации через массив символов ($s
), возвращая новый массив только символы , чьи индекс ($i
) не равно (-ne
) текущему индексу для исключения ($z
). Этот новый массив присваивается обратно$s
, и одновременно возвращается (это происходит, когда присваивание выполняется в скобках). Этот возвращенный результат-join
редактируется для формирования строки, которая отправляется в конвейер.Внедрение
-1
в начале гарантирует, что оригинальная строка будет напечатана, так как это первый элемент, и индекс никогда не будет совпадать-1
.источник
q / kdb +,
2710 байтРешение:
Примеры:
Объяснение:
Использует преимущества как конвергентной функциональности,
\
так и дропа_
.Примечания:
Если нам не нужно печатать исходный результат, это будет 2 байта
q
:источник
Perl 5 , 55 байт (54 + "
-l
")Попробуйте онлайн!
источник
-pa
) на 44 байта:$_=<>;substr$_,shift@F,print,""while@F&&$_
&&$_
так как вы можете предположить, что ввод действителен (список индексов не может быть длиннее строки). Использование возвращаемого значения вprint
качестве количества символов довольно гладко.MATL , 8 байт
Индексирование основано на 1.
Попробуйте онлайн! Или проверьте контрольные примеры .
объяснение
источник
C # (.NET Core) ,
87877470 байтПопробуйте онлайн!
Это говорит о том, что рекурсия не всегда является лучшим решением. Это на самом деле короче, чем мой первоначальный неверный ответ. Все еще печатает в STDOUT, а не возвращает, что необходимо, потому что это заканчивается ошибкой.
-4 байта благодаря TheLethalCoder
источник
Func
что возвращает другойFunc
,Action
,Predicate
, ...C (gcc) , 99 байтов
Попробуйте онлайн!
Принимает строку, массив и длину массива.
источник
Pyth , 10 байт
Изменения правил спасли мне 1 байт:
Попробуйте онлайн!
Pyth , 11 байт
Попробуйте онлайн!
источник
Gaia , 9 байт
Я действительно должен добавить функцию "удалить по индексу" ...
Попробуйте онлайн!
объяснение
источник
V , 12 байт
Попробуйте онлайн!
Это 1-индексированный, ввод выглядит так:
объяснение
источник
x
?1,2,3,
. Пустой список был бы ничем, Синглтон был бы1,
Swift 3 , 80 байт
Попробуйте онлайн!
источник
Pyth, 8 байт
Тестирование!
объяснение
источник
Python 2 , 54
Попробуйте онлайн
источник
APL,
313028 байтПопробуйте онлайн!
источник
C # (моно) , 85 байт
Попробуйте онлайн!
источник