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
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
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] -> []
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

1 comment thread

General comments (4 comments)

6 answers

You are accessing this answer with a direct link, so it's being shown above all other answers regardless of its score. You can return to the normal view.

+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
)
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+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
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

General comments (1 comment)
+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

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

General comments (2 comments)
+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
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

General comments (1 comment)
+0
−0

Husk, 6 bytes

Fo+hx0

Try it online!

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

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+0
−0

Japt, 9 bytes

ô rÈÔÅÔcY

Try it or run all test cases

ô 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
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

Sign up to answer this question »