### Communities

tag:snake search within a tag
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
created:<1w created < 1 week ago
post_type:xxxx type of post
Challenges

# Backspace an array

+7
−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?
Why should this post be closed?

+3
−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?

+3
−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?

+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?

+1
−0

# JavaScript (Node.js), 41 40 bytes

Saved 1 byte thanks to Shaggy

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


Try it online!

x =>      //x is the input
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=[])     //Initial value of the accumulator
&&a       //Return the accumulator

Why does this post require moderator attention?

+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?

+0
−0

# Japt, 9 bytes

ô rÈÔÅÔcY

ô rÈÔÅÔcY     :Implicit input of array
ô             :Split on falsey elements (i.e., 0)
r           :Reduce by
È          :Passing each Y through the following function, with the first element serving as the start value, X
Ô         :  Reverse X
Å        :  Slice off the first element
Ô       :  Reverse
cY     :  Concat Y
Why does this post require moderator attention?