Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users

Dashboard
Notifications
Mark all as read
Challenges

Backspace an array

+5
−0

Challenge

Given an array consisting of positive integers and 0s, return it with 0s acting like backspaces.

Leading backspaces do nothing, and more backspaces than elements also does nothing.

Credit: A comment on this video

Test Cases

[0,0,0,0,0,5,7] -> [5,7]
[1,2,0,3] -> [1,3]
[1,5,5,0,2,0,0,8] -> [1,8]
[1,2,3,4,0,0,9] -> [1,2,9]
[1,2,0,0,0,0,0] -> []
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

2 comments

Can I take it as a string? Wezl‭ 14 days ago

Sorry for the late reply, sure, that's fine rak1507‭ 9 days ago

5 answers

+2
−0

Scala, 45 bytes

_./:(Seq[Int]())((a,x)=>a:+x dropRight-x*2+2)

Try it in Scastie!

I couldn't find a way to use underscores in the inner function :(. Explanation on its way.

_      //The input
./:(   //Fold over it,
 Seq[Int]() //starting with an empty list,
)(         //using this function
 (a,x) =>  //a is the accumulator, x is the current element
   a:+x    //Append x to a
    dropRight //then drop an element from the right if x is 0
    -x*2+2    //For 0, this is 2
              //(drop the 0 that we just appended and the previous element)
              //and for other numbers, it's negative, so it doesn't do anything
)
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comments

+2
−0

Jelly, 6 bytes

ṣ0Ṗ;¥/

Try it online!

How it works

ṣ0Ṗ;¥/ - Main link. Takes a list on the left
ṣ0     - Split at zeroes
    ¥/ - Reduce by:
  Ṗ    -   Remove the last element
   ;   -   Concatenate
Why does this post require moderator attention?
You might want to add some details to your flag.

1 comment

twins Razetime‭ 6 days ago

+1
−0

Python 3.8 (pre-release), 62 bytes

f=lambda x,a=[]:f(x[1:],a+[x[0]]if x[0]else a[:-1])if x else a

Try it online!

-11 bytes thanks to user

Why does this post require moderator attention?
You might want to add some details to your flag.

2 comments

You can get this to 62 bytes, and probably lower with Python slice black magic. user‭ 17 days ago

@user Oh, using an accumulator is a good idea. thanks. hyper-neutrino‭ 17 days ago

+1
−0

JavaScript (Node.js), 41 bytes

x=>(a=[],x.map(e=>e?a.push(e):a.pop()),a)

Try it online!

x => ( //x is the input
a=[],  //The accumulator to be returned (initially empty)
x.map(e=> //For every element e in x
 e?       //If e is not 0
 a.push(e) //Add it to the accumulator
 :a.pop()), //Otherwise, pop the last element
a)    //Return the accumulator
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comments

+0
−0

Husk, 6 bytes

Fo+hx0

Try it online!

there's got to be a smarter way to do this with grouping.

Why does this post require moderator attention?
You might want to add some details to your flag.

0 comments

Sign up to answer this question »

This community is part of the Codidact network. We have other communities too — take a look!

You can also join us in chat!

Want to advertise this community? Use our templates!