Skip to main content
We’ve updated our Terms of Service. A new AI Addendum clarifies how Stack Overflow utilizes AI interactions.
Code Golf

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

Required fields*

Parse nested digit-lead strings

The task

A string S is constructed with the following process:

  1. Start with S being the empty string.
  2. Insert at some position of S a string of the form ds, where d is a nonzero digit and s is a string of d lowercase ASCII letters. We say ds is a constituent of S.
  3. Go to step 2 or stop.

Your task is to take such a string as input, and output its constituents concatenated into a single string, in the order of appearance of their leading digits. The output must be a single string, and there can't be any delimiters (including newlines) between the constituents. You can choose whether the input and output strings have quotes. Note that the input and output will never be empty.

Example

Let's construct a string with the above process. The structure of the constituents is highlighted in the final result.

S = "" // Insert "3abc"
S = "3abc" // Insert "2gh" after 'a'
S = "3a2ghbc" // Insert "1x" before '3'
S = "1x3a2ghbc" // Insert "3tty" after '3'
S = "1x33ttya2ghbc" // Final result
 └┘│└┴┴┘│└┴┘││
 └────┴───┴┘

The output is obtained by concatenating the constituents in the order of their digits. In this case, the correct output is

"1x3abc3tty2gh"

Rules and scoring

You can write a full program or a function. the lowest byte count wins, and standard loopholes are disallowed.

Test cases

1k -> 1k
4asdf -> 4asdf
111xyz -> 1z1y1x
8whatever3yes -> 8whatever3yes
8what3yesever -> 8whatever3yes
1x33ttya2ghbc -> 1x3abc3tty2gh
63252supernestedstrings2ok -> 6trings3eds2st5perne2su2ok
9long3yes4lo2ngwords11here -> 9longrdsre3yes4lowo2ng1e1h
9abc8de7fg6hi5jk4lm3o2pq1rstuvwxyzabcdefghijklmnopqrst -> 9abcopqrst8deijklmn7fgdefgh6hizabc5jkwxy4lmuv3ost2pq1r

Answer*

Draft saved
Draft discarded
Cancel
2
  • 1
    \$\begingroup\$ For one line if statements you don't need a linefeed for example if z in k:m+=N(z)+1. \$\endgroup\$ Commented Oct 14, 2017 at 20:04
  • 1
    \$\begingroup\$ Removing the N=int actually saves you 2 bytes. Renaming int is only beneficial after 4 uses. \$\endgroup\$ Commented Oct 14, 2017 at 23:40

AltStyle によって変換されたページ (->オリジナル) /