text:
Bake me a slice of cake
My birthday is in a month, and this is a slice of tasty cake.
    .-""-.
 .-"      "-.
|""--..      "-.
|      ""--..   "-.
|""--..      ""--..\
|      ""--..      |
|            ""--..|
 ""--..            |
       ""--..      |
             ""--..|

In the fewest number of bytes, construct this slice of cake for me. You can print it to STDOUT or return it as a function result.
Any amount of extraneous whitespace is acceptable, so long as the characters line up appropriately.
Rules and I/O

No input
Output can be given by any convenient method.
Either a full program or a function are acceptable.
Standard loopholes are forbidden.
This is code-golf so all usual golfing rules apply, and the shortest code (in bytes) wins.

How does one bake only a slice of cake? It would just be the entire cake at that point, no? Cake[:] need not apply.

@Veskah the Internet is ahead of you! (isn't it always)... https://www.dhgate.com/product/creative-diy-8-cavity-silicone-mold-pastry/415336422.html.

But... it is a lie, isn't it?

Eggsembly - 203 bytes
push '    .-""-.\n .-"      "-.\n|""--..      "-.\n|      ""--..   "-.\n|""--..      ""--..|\n|      ""--..      |\n|            ""--..|\n ""--..            |\n       ""--..      |\n             ""--..|'

Here is a less golfed version.
push '    .-""-.\n'
push ' .-"      "-.\n'
add
push '|""--..      "-.\n'
add
push '|      ""--..   "-.\n'
add
push '|""--..      ""--..\\n'
add
push '|      ""--..      |\n'
add
push '|            ""--..|\n'
add
push ' ""--..            |\n'
add
push '       ""--..      |\n'
add
push '             ""--..|\n'
add

This one works a bit differently, but it's significantly shorter in Chicken at 57,878 bytes.
push " "
push 4
rooster
push '.-""-.\n'
add
push ' .-"'
push " "
push 6
rooster
add
push '"-.\n'
add
push '|""--..'
push " "
push 6
rooster
add
push '"-.\n|'
add
push " "
push 6
rooster
add
push '""--..   "-.\n'
add
push '|""--..'
push " "
push 6
rooster
add
push '""--..\\n'
add
push '|'
push " "
push 6
rooster
add
push '""--..      |\n'
add
push '|'
push " "
push 12
rooster
add
push '""--..|\n'
add
push ' ""--..'
push " "
push 12
rooster
add
push '|\n'
add
push " "
push 7
rooster
add
push '""--..'
push " "
push 6
rooster
add
push '|\n'
add
push " "
push 13
rooster
add
push '""--..|\n'
add
add
add
add
add
add
add
add

Chicken - 57,878 28,135 bytes
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken

chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken
chicken chicken
chicken chicken

So what was changed here is a little more understandable, here's the Eggsembly version.
push " "
push 4
rooster
push 4
peck
pick 4
axe
push '.-""-.\n'
add
push ' .-"'
pick 4
axe
push " "
push 2
rooster
add
push 6
peck
pick 6
axe
add
push '"-.\n'
add
push '|'
push '""--..'
push 2
peck
pick 2
axe
add
add
pick 6
axe
add
push '"-.\n'
add
push '|'
add
pick 6
axe
add
pick 2
axe
add
push " "
push 3
rooster
add
push '"-.\n'
add
push '|'
add
pick 2
axe
add
pick 6
axe
add
pick 2
axe
add
push '\\n'
add
push '|'
add
pick 6
axe
add
pick 2
axe
add
pick 6
axe
add
push '|\n'
add
push '|'
add
pick 6
axe
pick 6
axe
add
push 3
peck
pick 3
axe
add
pick 2
axe
add
push '|\n'
add
push " "
add
pick 2
axe
add
pick 3
axe
add
push '|\n'
add
pick 6
axe
push " "
add
add
pick 2
axe
add
pick 6
axe
add
push '|\n'
add
pick 3
axe
add
push " "
add
pick 2
axe
add
push '|\n'
add
add

See also this video.

JavaScript (ES8), 115 112 bytes
Saved 3 bytes thanks to @ovs
_=>`4.-""-.
1.-"6"-.
|06"-.
|603"-.
|060\\
|606|
|660|
1066|
706|
670|`.replace(/\d/g,n=>''.padEnd(n)||'""--..')

Try it online!

Canvas, 77 65 58 54 44 43 42 40 39 bytes
"-.＊＼＼＼
２⁸±４⁸＋３⁸２１＊⌐∔１３╋５|＊×ω\；∔Ａ«３╋０３╋

Try it here!
Explanation:
"-.*\\\  Helper function F taking an argument n
"-.*     an array of n strings `"-.`
    \\\  pad each line with 1 more space than the previous, 3 times
Main program:
2⁸                          execute F with 2
  ±                         reverse that
   4⁸+                      and append F(4) - the top of the cake

3⁸                          F(3)
  21*                       extend horizontally 2x and vertically 1x - create one stripe
     ⌐                      create extra 2 copies of that on the stack
      ∔                     append 2 of those together
       13╋                  and insert it at (1; 3) in the last line
          5|*               array of 5 "|"
             ×              prepend that to the left of the stripes
              ω             retrieve back the array of "|"
               \；∔         prepend "\" to that
                   A«3╋     and insert that at ((10<<1); 3) in the object
                       03╋  and join the two parts together

Charcoal, 40 bytes
Ｆ³«↑Ｆι⸿↑Ｆ³¶""--..»↑⁵←\Ｆ⁴←¶.-"Ｆ²«←"-.↓»↓⁵

Try it online! Link is to verbose version of code. Explanation:
Ｆ³«

Loop over the three horizontal lines.
↑Ｆι⸿↑

The lines overlap by an amount depending on which line we're on. This calculates the correct amount of overlap but also moves the cursor to the left of the canvas again.
Ｆ³¶""--..»

Repeat three times, move the cursor down one line and then print a third of the horizontal line.
↑⁵←\

Print the vertical line on the right and the backslash on the corner.
Ｆ⁴←¶.-"

Repeat four times, move the cursor up one line and then print a quarter of the diagonal.
Ｆ²«←"-.↓»

Print the other diagonal. (I couldn't find a way of combining the printing with the movement but this is still 2 bytes shorter than the next best way I could find.)
↓⁵

Print the vertical line on the left.

T-SQL, 125 121 bytes
PRINT REPLACE(REPLACE('    .-""-.
 .-"1"-.
|21"-.
|12   "-.
|212\
|121|
|112|
 211|
 121|
 112|',2,'""--..'),1,'      ')

Due to the overhead of the REPLACE() keyword, just two replacements gave me the best score. SQL allows line breaks inside of strings, so I don't have to replace those with CHAR(13) or whatever.
Hard to tell in the code above, but I had to add an extra space after the \, because normally that would be an escape character that would cause it to ignore the subsequent line break.
EDIT: Saved 4 bytes by changing my replacement characters to numerals instead of letters. This lets me eliminate the single quotes since REPLACE casts them to strings implicitly.
This generates:
    .-""-.
 .-"      "-.
|""--..      "-.
|      ""--..   "-.
|""--..      ""--..\
|      ""--..      |
|            ""--..|
 ""--..            |
       ""--..      |
             ""--..|

Happy birthday (next month)!

Python 2, 99 bytes
00000000: 2363 6f64 696e 673a 4c31 0a70 7269 6e74  #coding:L1.print
00000010: 2278 da53 5050 50d0 d355 52d2 d5e3 02d1  "x.SPPP..UR.....
00000020: 5c6e 605c 30e2 d55c 30c5 74f5 f490 04a0  \n`\0..\0.t.....
00000030: 4c98 30a6 5c22 303b 0643 2110 d4c0 0491  L.0.\"0;.C!.....
00000040: a56a b850 d4c0 542a 60d3 ae80 453b 5c30  .j.P..T*`...E;\0
00000050: a94e 1d27 222e 6465 636f 6465 2827 7a69  .N.'".decode('zi
00000060: 7027 29                                  p')

Try it online!

R, 47+61=108 bytes
Once again stolen from @DigEmAll's nice answer previously, just compress to gzip and decompress in a 2 part answer.
cat(memDecompress(readBin('a','raw',61),'g',T))

Try it online!

05AB1E, 58 bytes
”. -"|\
”S”""--..”ð6×)˜•I8Γ·³§€ΓÎíÈÜ7γ¿·U₃´îØ©G¹râî.
d•SèJ

Try it online!

After seeing the other answers I knew a more algorithmic built-up would be shorter. :) Too bad •2ā_/¦Y ¸|pζÚˆ#ñÕηbp^Ωÿ_veCuŽJ•9в is the same amount of bytes as •I8Γ·³§€ΓÎíÈÜ7γ¿·U₃´îØ©G¹râî.\nd•S.

@KevinCruijssen: I wanted to try using the canvas, but I feel like due to the multi-string "elements" it will likely be longer.

Hmm, in my experience canvas is usually longer for such complex strings. I would still be interested to see an answer using canvas as comparison, but I seriously doubt it will be near your current byte-count.

Twig, 126 bytes
This is just a simple search/replace.
Nothing fancy
{{'012
 10  2430  240  3   2430  3\\40  30  |40003|
 3000|
0   30  |
000 3|'|replace(['    ','.-"','"-.','""--..','
|'])|raw}}

Try this on https://twigfiddle.com/8zxyxa
Under "Result", click in "Show raw result", or else you will see this:
        .-""-.
    .-"      "-.
|""--..      "-.
|      ""--..   "-.
|""--..      ""--..\
|      ""--..      |
|            ""--..|
    ""--..            |
            ""--..      |
                ""--..|

Which looks closer to melting cheese than a cake slice...

Sadly, your cake has to be |raw, or you would get this:
        .-""-.
    .-"      "-.
|""--..      "-.
|      ""--..   "-.
|""--..      ""--..\
|      ""--..      |
|            ""--..|
    ""--..            |
            ""--..      |
                ""--..|

Which looks like .... I don't know :x

but OP specifically asked for a baked slice D:

:x Sorry, must be |raw to work

Python 3, 116 bytes
print('''    .-" .-"||   |\\
||
||
 |
 |
 |'''.translate({1:'""--..',2:' '*6,3:'"-.\n'}))

Try it online!

Python 2, 158 125 bytes
print"""    .-""-.
 .-"s"-.
|es"-.
|se   "-.
|ese\\
|ses|
|sse|
 ess|
 ses|
 sse|""".replace('e','""--..').replace('s',' '*6)

Try it online!

Basically a translation of the JS and T-SQL answers

05AB1E, 84 82 81 bytes
“
 "-.\|“•6ÅΩæÍ[ÕŽÇ4Δ¼µðв‹ìbÿ¹0mĆÛh6Ë\HvçÏ—ÜâE«εx±5Â\₅δćzÁ₅3¨Éj€¾ï737Æüí·?т¹•7вèJ

-3 bytes thanks to @Emigna.
Try it online.
Explanation:
“\n "-.\|“       "#  Push string '\n "-.\|'
•6ÅΩæÍ[ÕŽÇ4Δ¼µðв‹ìbÿ¹0mĆÛh6Ë\HvçÏ—ÜâE«εx±5Â\₅δćzÁ₅3¨Éj€¾ï737Æüí·?т¹•
                  # Compressed integer 18017524448214263331172789946872235969387180564028761120954323919616255702509406136041325094115009009004153150633415914465807454405990069100373808902652333314
 7в               # Converted to Base 7 as list:
                  # [1,1,1,1,4,3,2,2,3,4,0,1,4,3,2,1,1,1,1,1,1,2,3,4,0,6,2,2,3,3,4,4,1,1,1,1,1,1,2,3,4,0,6,1,1,1,1,1,1,2,2,3,3,4,4,1,1,1,2,3,4,0,6,2,2,3,3,4,4,1,1,1,1,1,1,2,2,3,3,4,4,5,0,6,1,1,1,1,1,1,2,2,3,3,4,4,1,1,1,1,1,1,6,0,6,1,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,6,0,1,2,2,3,3,4,4,1,1,1,1,1,1,1,1,1,1,1,1,6,0,1,1,1,1,1,1,1,2,2,3,3,4,4,1,1,1,1,1,1,6,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,6]
è                 # Index each item in this list in the string
 J                # Join the indexed characters together (and output implicitly)

See this 05AB1E tip of mine (section How to compress large integers?) to understand why •6ÅΩæÍ[ÕŽÇ4Δ¼µðв‹ìbÿ¹0mĆÛh6Ë\HvçÏ—ÜâE«εx±5Â\₅δćzÁ₅3¨Éj€¾ï737Æüí·?т¹• is 18017524448214263331172789946872235969387180564028761120954323919616255702509406136041325094115009009004153150633415914465807454405990069100373808902652333314.
Huge thanks to @MagicOctopusUrn's ASCII art compress generator, after which žLR has been golfed to žh, and the string has been fixed with the … and « because it contained a " the transliterate has been golfed by reversing the string and number on the stack, using в instead of B to make it a list of characters instead, and index into it (thanks @Emigna).

You can save 2 bytes by using one string instead of two, using for example “. You can save another byte by indexing instead of transliterating.

@Emigna Ah, both are pretty smart, thanks! That second suggestion might probably golf some my previous ASCII-art answers as well. Will take a look later on at those once I have some time.

I forgot to mention in my previous comment that switching order of the string and number and using в was required for the indexing to save that third byte.

///, 91 bytes
/d/"-.//D/""--..//s/   //S/ss/s .-"d
 .-"Sd
|DSd
|SDsd
|DSD\\
|SDS|
|SSD|
 DSS|
S DS|
SS D|

Try it online!

Java (JDK), 139 bytes
v->"    .-\"\"-.\n .-\"6\"-.\n|06\"-.\n|60   \"-.\n|060\\\n|606|\n|660|\n 066|\n 606|\n66 0|".replace("6","      ").replace("0","\"\"--..")

Try it online!

C# (.NET Core), 169 154 152 bytes
Console.Write("    .-\"\"-.\n .-\"2\"-.\n|12\"-.\n|21   \"-.\n|121\\\n|212|\n|221|\n 122|\n 212|\n 221|".Replace("1","\"\"--..").Replace("2","      "));

Try it online!
-15 bytes: Realized I could made use of C#'s Replace function and removed a variable.
-2 bytes: Left two unnecessary spaces in the Replace functions.

Alternate way to do this using an anonymous function instead of writing directly to the console.
C# (.NET Core), 154 152 bytes
()=>{return("    .-\"\"-.\n .-\"2\"-.\n|12\"-.\n|21   \"-.\n|121\\\n|212|\n|221|\n 122|\n 212|\n 221|".Replace("1","\"\"--..").Replace("2","      "));};

Try it online!
-2 bytes: Left two unnecessary spaces in the Replace functions.

///, 88 bytes
/%/   //$/"-.
//#/""--..//!/%%/% .-"$ .-"!$|#!$|!#%$|#!#\\
|!#!|
|!!#|
 #!!|
! #!|
!! #|

Try it online!

05AB1E, 79 bytes
•6ÂËhHyã¡0÷íÓ].‚ηƶãqÛ-#Œ‘-)ìMι"ΩÒý³!7₄βýiÑ¡1:l*;∊ëžZ~ÙÂ¯Î©ïŒ×.gιü#‡•“. -"|
\“Åв

Try it online!
•...•“...“Åв  # trimmed program
          Åв  # characters in...
     “...“    # literal...
          Åв  # with indices in digits of...
•...•         # 17991054328044272488457460457310784314009191188977967735225363312688493035783656557746796791541044041617963464968803855853508169575617675885728820813516051270...
          Åв  # in base length of...
     “...“    # literal
              # implicit output


text:
Chop up my ASCII art
Let's say I've got some ASCII art:
          ___
        ,"---".
        :     ;
         `-.-'
          | |
          | |
          | |
       _.-\_/-._
    _ / |     | \ _
   / /   `---'   \ \
  /  `-----------'  \
 /,-""-.       ,-""-.\
( i-..-i       i-..-i )
|`|    |-------|    |'|
\ `-..-'  ,=.  `-..-'/
 `--------|=|-------'
          | |
          \ \
           ) ) hjw
          / /
         ( (

(Source)
But I want to focus on the cable of this joystick, because I actually want a picture of a garden path, leading up to a door.
 ,=.
-|=|-
 | |
 \ \
  ) )
 / /
( (

I could copy out line after line, I could use a text editor with block selection mode, or... I could write some code!
So, my code needs five arguments:

A piece of ASCII art, a newline separated string.
The X axis of the top-left corner (1-indexed, from left hand column, positive integer)
The Y axis of the top-left corner (1-indexed, from top row, positive integer)
Width of the resultant image (positive integer)
Height of the resultant image (positive integer)

Test Cases
ASCII image:
          ___
        ,"---".
        :     ;
         `-.-'
          | |
          | |
          | |
       _.-\_/-._
    _ / |     | \ _
   / /   `---'   \ \
  /  `-----------'  \
 /,-""-.       ,-""-.\
( i-..-i       i-..-i )
|`|    |-------|    |'|
\ `-..-'  ,=.  `-..-'/
 `--------|=|-------'
          | |
          \ \
           ) ) hjw
          / /
         ( (

Garden path

X: 10
Y: 15
Width: 5
Height: 7

Result:
 ,=.
-|=|-
 | |
 \ \
  ) )
 / /
( (

DB icon

X: 3
Y: 12
Width: 6
Height: 4

Output:
,-""-.
i-..-i
|    |
`-..-'

Alien Elder

X: 9
Y: 1
Width: 7
Height: 10

  ___
,"---".
:     ;
 `-.-'
  | |
  | |
  | |
.-\_/-.
|     |
 `---'
Signature

X: 16
Y: 19
Width: 3
Height: 1

hjw
Rules

Output can be given by any convenient method.
Either a full program or a function are acceptable.
Standard loopholes are forbidden.
This is code-golf so all usual golfing rules apply, and the shortest code (in bytes) wins.

Can we take X and Y as 0-indexed?

Also, in testcase 1, Y should bew 15, and in TC 2, X should be 3

Can we assume the input is padded to a rectangle with spaces?

Can you add a test case where the original art doesn't use both single and double quotes, please? Also, I see no good reason to enforce 1-indexing here.

That's exactly what I thought of when I saw that ascii art, a garden path. I didn't think of anything else at all...

It seems many of the X and Y values are incorrect in the test cases (maybe some are 0 indexed?!) - at least: Y of Garden Path should be 15; X of DB Icon should be 3.

Can input be [[X1,X2],[Y1,Y2]] or [[X1,Y1],[X2,Y2]]?

@Shaggy just use a 9x9 grid of 1-9, expected results should be obvious.

If it wasn't for the cable / garden path, I would think the original ascii art was an ostrich carrying a tray with two coffee cups on it.

This question is begging for an elisp answer...

Canvas, 1 byte
＠

Try it here!
It takes height, width, Y, X, and ASCII art as inputs, in that order.
Though almost everything about the ASCII art objects in Canvas is 0-indexed, ＠ is 1-indexed by some reason. ¯\_(ツ)_/¯

Expected answer from canvas :D (mb charcoal have something similar)

What sorcery is this!

@AJFaraday I mean, wouldn't you expect that a language specifically made for ASCII-art manipulation to not have a built-in to get a specific part of an ascii-art? :p

Python 2, 64 62 bytes
lambda I,x,y,w,h:[l[x-1:][:w]for l in I.split('\n')[y-1:][:h]]

Try it online!

If X and Y can be 0-indexed:
Python 2, 56 bytes
lambda I,x,y,w,h:[l[x:x+w]for l in I.split('\n')[y:y+h]]

Try it online!

Charcoal, 7 bytes
δＪθηＴζε

Try it online! Link is to verbose version of code. Takes 0-indexed coordintaes. Explanation:
δ

Print the ASCII art.
Ｊθη

Jump to the top left corner of the desired rectangle.
Ｔζε

Trim the canvas to the desired size.

05AB1E, 21 19 bytes
UV¶¡εXG¦}Y£}sG¦}s£»

Try it online!
Or if 0-indexing is allowed:
05AB1E, 18 bytes
UV¶¡εX.$Y£}sF¦}s£»

Try it online!

12 if you can take in [X1, X2] and [Y1, Y2] as v³ŸNåiy²ŸèJ=

Pip -n, 21 bytes
_@>--b@<dM(a^n--c+,e)

Try it online!
Or, if 0-indexing is allowed...
Pip -n, 17 bytes:
_@>b@<dM(a^nc+,e)

Try it online!
Explanation
Takes all five arguments as command-line args.
                   a-e are the 5 cmdline args; n is newline
         a^n       Split a on newlines
              ,e   Range(e)
            c+     Add c to each element
        (       )  Use the resulting range(c,c+e) to slice into the list of lines
       M           To each line, map this function:
_                   The line
 @>b                Slice, keeping indices b and greater
    @<d             Slice, keeping indices less than d
                   Print, joining on newlines (-n flag)

The above solutions also assume the input is a perfect rectangle--i.e., the lines are all the same length. Otherwise, 2 extra bytes are needed (use -l instead of -n):
(Z(a^nZDsb+,d)c+,e)      0-indexed, 19 bytes
(Z(a^nZDs--b+,d)--c+,e)  1-indexed, 23 bytes

Japt -R, 13 11 bytes
·tWÉY ®tVÉX

Try it
2 bytes saved thanks to Kamil Drakari
9 bytes if not for the unnecessary requirement that solutions use 1-based indexing.
·tWY ®tVX

Explanation
                :Implicit input of string U and integers V=X, W=Y, X=Width & Y=Height
·               :Split U on newlines
 t              :Slice
  WÉ            : From 0-based index W-1
    Y           : To length Y
      ®         :Map
       t        :  Substring
        VÉ      :   From 0-based index V-1
          X     :   To length X
                :Implicitly join with newlines and output

In my testing, you can save 2 bytes by switching the slice to t, and another 2 bytes by 0 indexing. It might be worth waiting on the second one since OP hasn't clarified whether 0 indexing is acceptable, or fixed the test cases.

Nice one, @KamilDrakari - completely forgot the t method works on arrays, too.

JavaScript (Node.js), 70 69 bytes
-1 Thanks @Shaggy for the splice() idea.
(a,x,y,w,h)=>a.split`
`.map(q=>q.substr(x-1,w)).splice(--y,h).join`
`

Try it online!
The ASCII art given is annoying tbh

69 bytes

J, 45 bytes
f=:4 :0
'a b c d'=.x-#:10
y{~<(a+i.b);c+i.d
)

Try it online!
Notes:
J accepts up to 2 arguments, left and right. The right argument is the ASCII art string, the left one - a list of U H X W values
I simulate the newline and the function call has a code to convert the string to an array.

V, 16 bytes
ÀGÀ|<C-v>@cl@djyHVGp

Try it online!
Input is expected to be padded with spaces to be a perfect rectangle. Also, the 'Y' input comes before the 'X'.
Hexdump:
00000000: c047 c07c 1640 636c 4064 6a79 4856 4770  .G.|.@cl@djyHVGp

C (gcc), 118 109 bytes
The input can contain jagged lines: newlines are printed if they exist in the y-range.
Thanks to ceilingcat for the suggestion.
f(s,x,y,w,h,a,b,c)char*s;{for(b=1,a=0;*s;a=c?!b++:a,s++)((c=*s==10)|++a>=x&a-x<w)&b>=y&b-y<h-c&&putchar(*s);}

Try it online!

Jelly, 11 bytes
Ỵṫ€¥ṫḣ€ḣ4ƭ/

Try it online!
Takes the ASCII-art as a Python multi-line r-string (so as to avoid problems with backslashes).

Haskell, 61 bytes
(x#y)w h=unlines.map(take w.drop(x-1)).take h.drop(y-1).lines

Try it online!
Takes arguments in order: x, y, w, h, s.

58 bytes: Try it online!

Bash + coreutils, 37
cut -b$1-$[$1+$3-1]|tail +$2|head -$4

Interestingly, GNU tail 8.28 (on Ubuntu 18.04) allows +NUM format, whereas GNU tail 8.29 on TIO requires 2 extra bytes for this -n+NUM.
Try it online!
I thought doing this all in sed might be shorter, but at 50 bytes its not:
sed -nr "$2,$[$2+$4-1]s/.{$[$1-1]}(.{,$3}).*/\1/p"

R, 62 bytes
Perhaps surprisingly short solution to a text challenge in R, because we don't need to actually read the whole text into a matrix.
function(x,y,w,h)write(substr(readLines()[y+1:h-1],x,x+w-1),1)

Try it online!

K4, 31 bytes
Solution:
{[a;x;y;w;h]a .-1+(y;x)+!:'h,w}

Examples:
q)ASCII:("          ___";"        ,\"---\".";"        :     ;";"         `-.-'";"          | |";"          | |";"          | |";"       _.-\\_/-._";"    _ / |     | \\ _";"   / /   `---'   \\ \\";"  /  `-----------'  \\";" /,-\"\"-.       ,-\"\"-.\\";"( i-..-i       i-..-i )";"|`|    |-------|    |'|";"\\ `-..-'  ,=.  `-..-'/";" `--------|=|-------'";"          | |";"          \\ \\";"           ) ) hjw";"          / /";"         ( (")
q)k){[a;x;y;w;h]a .-1+(y;x)+!:'h,w}[ASCII;10;15;5;7]
" ,=. "
"-|=|-"
" | | "
" \\ \\ "
"  ) )"
" / / "
"( (  "
q)k){[a;x;y;w;h].[a;-1+(y;x)+!:'h,w]}[ASCII;3;12;6;4]
",-\"\"-."
"i-..-i"
"|    |"
"`-..-'"
q)k){[a;x;y;w;h].[a;-1+(y;x)+!:'h,w]}[ASCII;9;1;7;10]
"  ___  "
",\"---\"."
":     ;"
" `-.-' "
"  | |  "
"  | |  "
"  | |  "
".-\\_/-."
"|     |"
" `---' "
q)k){[a;x;y;w;h].[a;-1+(y;x)+!:'h,w]}[ASCII;16;19;3;1]
"hjw"

Explanation:
Take the 1-indexed input, generate the x/y coordinates and index into ascii art.
{[a;x;y;w;h]a .-1+(y;x)+!:'h,w} / the solution
{[a;x;y;w;h]                  } / lambda taking 5 inputs, a(scii), x, y, w(idth), h(eight)
                           h,w  / concatenate height and width, e.g. 7 5
                        !:'     / range til each, e.g. (0 1 2 3 4 5 6;0 1 2 3 4)
                  (y;x)+        / add list y x to it, e.g. (15 16 17 18 19 20 21;10 11 12 13 14)
               -1+              / subtract 1, e.g. (14 15 16 17 18 19 20;9 10 11 12 13)
            a .                 / index into a at these coordinates

\/\/>, 123 bytes
j:j8+}j+}j}pppp80x
{:}i:0(?v:a=?x@s1+:
~~~~1+0!/000y
yp:qqqq~
q{y?=p:+1q:}}g$q:pp:
1}x}p}ap:q~q+1{{y!?:-
ys{{
~!u.*2(0:;!?h

Input consists of a single line of space-delimited input variables x, y, w, and h, followed by the ascii art on the next line onward.
Explanation
This code uses \/\/>'s ability to self-modify by placing the ascii art in the code itself, which ends up looking like this:

It then grabs the characters in the specified rectangle off of the code and outputs it.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Find a recursive acronym
Introduction
A recursive acronym is an acronym that contains or refers to itself, for example:
Fish could be a recursive acronym for Fish is shiny hero, notice how that also contains the acronym itself. Another example is Hi -> Hi igloo. Or even ppcg paints -> ppcg paints cool galaxies pouring acid into night time stars
So basically, a sentence is a recursive acronym if the first letters of each of the words spell out the first word or words.

Challenge
Make a program that takes a string of 1 or more words separated by a space character, and outputs a recursive acronym, or an empty string if it's impossible. It is impossible to make a recursive acronym for a string like, for example, ppcg elephant because you would start by taking the p from ppcg then adding that to the acronym, then taking the e from elephant. But now we have a contradiction, since the acronym currently spells out "pe..", which conflicts with "pp..". That's also the case with, for example, hi. You would take the h from hi, but the sentence is now over and there are no more letters to spell out hi and we are just left with h which doesn't match hi. (The string needs an amount of words more than or equal to the amount of letters in the acronym)
Input and output are not case sensitive

Restrictions

Anything inputted into your program will be valid English words. But you must make sure to output valid English words too (you can use a database or just store a word for each of the 26 letters)
Standard loopholes and default IO rules apply

Test Cases
hi igloo -> hi
ppcg paints -> (impossible)
ppcg paints cool giraffes -> ppcg
ppcg paints cool galaxies pouring acid into night time stars -> ppcgpaints
ppcg paints cool galaxies pouring acid into night time -> ppcg
ppcg questions professional pool challengers greatly -> (impossible)
I -> I

Scoring
This is code-golf, so the smallest source code in bytes wins

Partially related.

What's valid English? Is gat one?

@l4m2 Anything that's found in a dictionary, I wont be too strict about that rule

@FireCubez So as https://www.dictionary.com/browse/dat?s=ts, aat is not allowed and dat is fine?

@l4m2 Yes, I only included that rule to prevent answers where the "word" is a single letter

@FireCubez but single letter exist in lots of dictionary

@l4m2 But not all letters have single-letter words, only ones I can think of are I and a

Q, q
[kyoo]
noun, plural Q's or Qs, q's or qs.
the 17th letter of the English alphabet, a consonant.
any spoken sound represented by the letter Q or q, as in quick, acquit, or Iraq.
something having the shape of a Q.

Also I don't think ppcg is a word in dictionary

For ppcg paints cool galaxies paints air in not the sea should the acronym actually include space, as in ppcg paints? As I see, most answers don't and simply output ppcgpaints.

@KirillL. Yeah, that's fine

Would it be possible to add these or similar test cases: ppcg paints cool galaxies pouring acid into night time (acronym matches only part of the second word) and ppcg questions professional pool challengers greatly (acronym contains a valid string, but has additional characters)

@KamilDrakari Added

Okay, one of those test cases didn't turn out as I expected. Just to make sure neither of us is making a mistake ppcg paints cool galaxies pouring acid into night time would be "ppcgpaint" when made into an acronym, but the output should be ppcg even though it's only a partial match?

@KamilDrakari "ppcgpaint" is a partial match of "ppcgpaints", so we have to fall back to "ppcg" which is a full match

I don´t really get the difference between the two choices.

As all current solutions are taking the first option ("find acronym"), and the "find sentence" option is much more complicated (so no way of being competitive with the first one – you need some word list, to start with), I would suggest to remove it from this challenge and make it its own question.

@PaŭloEbermann Alright, I removed it

What about ppcg paints cool galaxies pouring acid into night pay?

@l4m2 impossible since it would match ppcg paintp not ppcg paints

Japt, 13 bytes
¸
mÎ¬
VøUÎ ©V

Try it online!

11 bytes

This fails on the ppcg paints cool galaxies pouring acid into night time stars test case

here's a version that works for that test case, but it's not golfed

My previous 13 bytes solution was correct Dx\

The current version just checks that the acronym contains the first word, which results in some new issues

Here's a version which works on the new test cases

05AB1E, 16 bytes
ð¡©ηʒJ®€нJηså}θJ

Try it online!

Why did it change to ð¡ instead of # in your last edit? Some special test cases I'm not taking into account?

@KevinCruijssen: Because # would fail for single word input outputting the input instead of an empty string.

Ah yeah, that was it. I remember asking something similar before. I still think # should act the same as ð¡.. Is there a use-case you can think of where you want to split a string on spaces, but if it doesn't contain a space, it should remain the string (instead of the string wrapped in a list)? Other people reading this; FYI: Using # (split on space) on a string without spaces results in the string as is (i.e. "test" -> "test"). Using ð¡ (split on space) on a string without spaces results in the string wrapped in a list (i.e. "test" -> ["test"]).

@KevinCruijssen: I think it's mainly due to # also being used as quit if true (which is its main function). If # returned false, you probably wouldn't want the value checked to be wrapped in a list, left on the stack.

Hmm, you could be right it's related. I always saw stop loop if true and split on space as two different functions, both using #. So the compiler encountering a # would do a check: Is an infinite loop running? Yes -> stop it; No -> Split the top of the stack on spaces. If it's implemented like this pseudo-code, it would be strange if # as stop loop if true would be wrapped in a list, since it would never go into the else-clause in the compiler. But perhaps the pseudo-code isn't so easy to implement in Elixir as I think, in which case you're perhaps right it's related.

@KevinCruijssen: Yeah. # can actually be used to exit program outside of loops as well.

Could you add an explanaton? (I dont know 05AB1E :c)

Ah ok, didn't knew about that. I always use q to exit programs.

@LuisfelipeDejesusMunoz: Of course. There you go :)

@KamilDrakari: All answers seem to fail for that atm yes.

@KamilDrakari: Works now though.

Perl 6, 50 42 58 49 bytes
-9 bytes thanks to nwellnhof
{~first {m:g/<<./.join~~/^$^a/},[R,] [\~] .words}

Try it online!
First option. I'm exploiting the fact the ord only returns the ordinal value of first letter of a string, while chrs takes a list of ords and returns a string. Or the regex from moonheart's answer is shorter :(. For reference, the previous answer was .words>>.ord.chrs instead of [~] m:g/<<./
Explanation:
{~first {m:g/<<./.join~~/^$^a/},[R,] [\~] .words}
{                                               } # Anonymous code block
  first  # Find the first
                                [R,] [\~] .words  # Of the reverse of the triangular joined words
         {                    }  # That matches:
          m:g/   /   # Match all from the original string
              <<.    # Single letters after a word boundary
                  .join    # Joined
                       ~~/^$^a/   # And starts with the given word
 ~  # And stringify Nil to an empty string

You aren't required to output "IMPOSSIBLE" now

@Jo King
I can do regexes, but for the life of me I can't seem to think with all the operators. I keep forgetting the x operator exists, for example :P

Haskell, 51 48 bytes
Edit: -3 bytes thanks to @xnor.
(\w->[r|p<-scanl1(++)w,map(!!0)w==p,r<-p]).words

Finds acronym.
Try it online!
\w->            .words -- let 'w' be the input list split into words
   p<-scanl1(++)w      -- loop 'p' through the list starting with the first word
                       --  and appending the next words one by one, e.g.
                       --  "Fish","is","shiny","hero" -> "Fish","Fishis","Fishisshiny","Fishisshinyhero"
     ,map(!!0)w==p     -- if the word made out of the first characters of the
                       --  words of 'w' equal 'p'
  [r|   r<-p]          -- return the letters of 'p' - if the check before
                       --  never evaluates to True then no letters, i.e. the
                       --  the empty string is returned

Since you're not using x, composing (\w-> ...).words would be shorter.

Retina 0.8.2, 60 bytes
^
$'¶
\G(\w)\w* ?
$1
+`^(.+)(\w.*¶\1 )
$1 $2
!`^(.+)(?=¶\1 )

Try it online! Finds the recursive acronym, if any. Explanation:
^
$'¶

Duplicate the input.
\G(\w)\w* ?
$1

Reduce the words on the first line to their initial letters.
+`^(.+)(\w.*¶\1 )
$1 $2

Insert spaces to match the original words, if possible.
!`^(.+)(?=¶\1 )

Output the first line if it is a prefix of the second line.

For ppcg paints, output is invalid, it should output nothing since pp only spells a portion of the first word, instead of all of it

@FireCubez Sorry, I was working off an older version of the question.

Rust, 155, try it online!
Selected: Problem 1: Finding acronym
type S=String;fn f(t:&str)->S{let l=t.to_lowercase();let w=l.split(' ').fold(S::new(),|a,b|a+&b[..1])+" ";if (l+" ").contains(w.as_str()){w}else{S::new()}}

Ungolfed, just a bit:
fn f(t: &str) -> String {
    let l = t.to_lowercase();
    let w = l.split(' ').fold(String::new(), |a, b| a + &b[0..1]) + " ";
    if (l + " ").contains(w.as_str()) {
        w
    } else {
        String::new()
    }
}

Or if we can assume that the input is all lowercase, just 130:
type S=String;fn f(l:S)->S{let w=l.split(' ').fold(S::new(),|a,b|a+&b[..1])+" ";if (l+" ").contains(&w.as_str()){w}else{S::new()}}

Which of the 2 choices does this program do?

@FireCubez Updated.

Perl 6, 56 bytes
$!=[~] m:g{<<.};say $! if m:g{<<\w+}.map({$_ eq $!}).any

Try it online!
Previously regexes were confusing and unusable to me. Suddenly I understand them perfectly. What happened to me :P
Fulfills choice 1.

Sadly, I'm still at the stage where regexes are simply madness. Unfortunately, this fails the ppcgpaints test, otherwise I would have suggested something like $!∈.words for the if condition

K (ngn/k), 40 bytes
First option:
{$[1=#:x;x;$[(*:t)~,/*:'t:" "\x;*:t;`]]}

Try it online!

Which of the 2 options does this work on?

The first, outputs acronym from string input. I'll edit my post to clarify

Jelly, 9 bytes
Ḳµ;\fZḢWƊ

A full-program printing the recursive abbreviation if it is possible.
Try it online!
How?
Ḳµ;\fZḢWƊ - Main Link: list of characters
Ḳ         - split at space (let's call this v)
 µ        - start a new monadic chain (i.e. f(v)):
   \      - cumulative reduce v with:
  ;       -   concatenation -> [v(1), v(1);v(2), v(1);v(2);v(3); ...]
        Ɗ - last three links as a monad (i.e. f(v)):
     Z    -   transpose -> [[v(1)[1], v(2)[1], ...],[v(1)[1],v(2)[2],...],...]
      Ḣ   -   head -> [v(1)[1], v(2)[1], ...] ... i.e. 'the potential abbreviation'
       W  -   wrap in a list -> ['the potential abbreviation']
    f     - filter discard those from the left list that are not in the right list
          - implicit print -- a list of length 0 prints nothing
          -                   while a list of a single item prints that item

What do you mean by "print the first word"? It needs to find the acronym if one exists, does it do that?

Fails for "ppcg paints cool galaxies pouring acid into not the sky", should print "ppcg paints" or "ppcgpaints"

Oh, I missed the adjoining words requirement :(

Fixed it up to meet this requirement.

JavaScript [ES6], 74 bytes
s=>s.split` `.map(w=>(b+='('+w,e+=')?',t+=w[0]),b=e=t='')&&t.match(b+e)[0]

Creates a regular expression to match on.  See examples in code.
All test cases:

let f=

s=>s.split` `.map(w=>(b+='('+w,e+=')?',t+=w[0]),b=e=t='')&&t.match(b+e)[0]

console.log(f('hi igloo'))
// 'hi'.match('(hi(igloo)?)?')[0] == 'hi'

console.log(f('ppcg paints'))
// 'pp'.match('(ppcg(paints)?)?')[0] == ''

console.log(f('ppcg paints cool giraffes'))
// 'ppcg'.match('(ppcg(paints(cool(giraffes)?)?)?)?')[0] == 'ppcg'

console.log(f('ppcg paints cool galaxies pouring acid into night time stars'))
// 'ppcgpaints'.match('(ppcg(paints(cool(galaxies(pouring(acid(into(night(time(stars)?)?)?)?)?)?)?)?)?)?')[0] == 'ppcgpaints'

console.log(f('ppcg paints cool galaxies pouring acid into night time'))
// 'ppcgpaint'.match('(ppcg(paints(cool(galaxies(pouring(acid(into(night(time)?)?)?)?)?)?)?)?)?')[0] == 'ppcg'

console.log(f('ppcg questions professional pool challengers greatly'))
// 'pqppcg'.match('(ppcg(questions(professional(pool(challengers(greatly)?)?)?)?)?)?')[0] == ''

console.log(f('I'))
// 'I'.match('(I)?')[0] == 'I'

console.log(f('increase i'))
// 'ii'.match('(increase(i)?)?')[0] == ''

console.log(f('i increase'))
// 'ii'.match('(i(increase)?)?')[0] == 'i'

Fail on increase i

@l4m2, now fixed.

Vyxal, 8 bytes
⌈:¦$∩h¦↔

Try it Online!

Python 2, 106 bytes
First option - finding recursive acronym.
Returns result in list.
I=input().split()
print[' '.join(I[:i])for i in range(1,-~len(I))if[j[0]for j in I]==list(''.join(I[:i]))]

Try it online!
Python 2, 120 bytes
First option - finding recursive acronym.
def F(I,a=[],r=''):
 for j in I.split():
  a+=j,
  if list(''.join(a))==[i[0]for i in I.split()]:r=' '.join(a)
 return r

Try it online!

You aren't required to output "IMPOSSIBLE" as per @JoKing 's request, that might decrease your byte count

Single letters like 'I' don't work, it should output that single letter

@FireCubez fixed

Ruby -apl, 57 bytes
$_=y="";$F.all?{|w|$F.map(&:chr).join[/^#{y+=w}/]?$_=y:p}

Try it online!

Javascript, 71 bytes
Approach 1
l=s=>{p=s.split(' ');k=p.reduce((r,x)=>r+x[0],'');return k==p[0]?k:''}

Ungolfed:
l=s=>{
    p = s.split(' ');
    k = p.reduce((r,x)=>r+x[0],'');
    return k==p[0] ? k : '';
}

Split the  string by space.
Create new string by taking first character from each word.
Compare it with the first word.

Python 2, 109 bytes
def f(s,J=''.join):s=s.split();return[J(s[:i])for i in range(len(s)+1)if J(zip(*s)[0]).find(J(s[:i]))==0][-1]

Try it online!

Scala, 76 bytes
Solution for simple case (acronyms without whitespaces)
def^(s:String)={val l=s.split(" ");if(l(0)==l.map(_(0)).mkString)l(0)else""}

Scala, 144 bytes 100 bytes (see solution by ASCII-only in the comments)
def^(s:String)={val l=s.split(" ");l.scanLeft(List[String]())(_:::List(_)).find(_.mkString==l.map(_(0)).mkString).map(_.mkString).getOrElse("")}

Test in REPL
scala> def^(s:String)={val l=s.split(" ");if(l(0)==l.map(_(0)).mkString)l(0)else""}
$up: (s: String)String

scala> ^("hi igloo")
res12: String = hi

scala> ^("ppcg paints cool giraffes")
res13: String = ppcg

scala> ^("ppcg paints Xcool giraffes")
res14: String = ""

scala> ^("ppcg paints cool galaxies pouring acid into night time stars")
res15: String = ""

scala>

scala> def^(s:String)={val l=s.split(" ");l.scanLeft(List[String]())(_:::List(_)).find(_.mkString==l.map(_(0)).mkString).map(_.mkString).getOrElse("")}
$up: (s: String)String

scala> ^("hi igloo")
res16: String = hi

scala> ^("ppcg paints cool giraffes")
res17: String = ppcg

scala> ^("ppcg paints Xcool giraffes")
res18: String = ""

scala> ^("ppcg paints cool galaxies pouring acid into night time stars")
res19: String = ppcgpaints

you are allowed to turn it into a lambda

Can ::: be replaced with ++? Also, List[String] -> Seq[Any]?

100?

@ASCII-only, cool! This solution beats Python. :)

Mind adding the code sometime? IMO it's a bit weird seeing the bytecount without seeing the solution

wait. it's invalid

it should just not add the current word if the next word doesn't match

110

The output for 4th test case in your second solution should be "" and not ppcg. On the other hand, your first solution looks correct to me.

Nope, see the testcases in the question

Right, I double checked test cases. However that's a bit misleading given the definition in a starting post "a sentence is a recursive acronym if the first letters of each of the words spell out the first word or words".

Let us continue this discussion in chat.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Optimize my wings order
This tweet lists the possible orders for Wings of a Chinese restaurant1:

When ordering Pizza I usually calculate what size gives me the best Pizza-price ratio which is a simple calculation. However minimizing the price of an order at this restaurant isn't such a simple task, so I'd like to be prepared for my next order there.
Challenge
Given an integer greater or equal to \$4\$, your task is to return one possible order which minimizes the price (overall cheapest) and the number of deals.
Example
If I were to order \$100\$ Wings, it turns out the best bargain will cost \$$111.20\$. However there are multiple orders which will cost that amount, namely:
[50,50],[25,25,50],[25,25,25,25]

Since the first order will use the least amount of deals (\$2\$) the result will be [50,50].
Rules

Input will be some integer \$n \geq 4\$
Output will be a list/array/... of order sizes that sum up to \$n\$ and minimize the order's price

you may choose to return all possible orders

Testcases
4 -> [4]  (4.55)
23 -> [23]  (26.10)
24 -> [6,18],[9,15],[12,12]  (27.20)
31 -> [6,25]  (34.60)
32 -> [4,28],[6,26],[7,25]  (35.75)
33 -> [4,29],[5,28],[6,27],[7,26],[8,25]  (36.90)
34 -> [6,28],[9,25]  (38.00)
35 -> [35]  (39.15)
125 -> [125]  (139.00)
200 -> [25,50,125]  (222.40)
201 -> [26,50,125]  (223.55)
250 -> [125,125]  (278.00)
251 -> [26,50,50,125]  (279.15)
418 -> [15,28,125,125,125],[18,25,125,125,125]  (465.20)
1001 -> [26,50,50,125,125,125,125,125,125,125]  (1113.15)
12345 -> [15,80,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[25,70,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[45,50,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125]  (13728.10)

Note: These testcases list all possible outputs including the price, you're only required to output one and you're not required to output the price!

1: You can find the data as a CSV here.

The real question is, who orders 200 or even 100 wings? ...

Why the Kolmogorov-complexity tag? Also, very hungry people @EriktheOutgolfer

Kolmogorov is all about fixed output though. If the challenge was to output the menu, then it'd be a good tag for this.

@Veskah: It's not, it's about generating a fixed object (which often happens to be the output). For example the third challenge in the tag-wiki is not about constant output.

Shoot, even after I code a solution, I'm completely unsure if it is right or not

@Quintec: Why, do you need more testcases?

Two answers have misinterpreted the requirements, as only needing to minimise the price. Since minimising the price and number of deals is ambiguous (lowest price available from the ways with the lowest number of deals, or lowest number of deals available from the ways with the lowest price) it would be worth editing the requirement to be more explicit

@EriktheOutgolfer Party hosts and work-from-home developers (don't judge me)

Related: What to do with 10 liters Heinz BBQ sauce? ;)

I notice that for $ n \leq 23 $ the price is given by $ \frac 1 {20} \lceil \left ( \frac {68 n} 3 \right ) \rceil $, while the prices for $ 25 < n <= 50 $ can be split into $ 25 $ and $ n - 25 $ (for $ n < 29 $ you can't buy them separately but the formula still gives the appropriate value). $ 70 $, $ 80 $ and $ 125 $ can also be derived from earlier values, so if you can use them they will reduce the number of deals. The other values are uneconomic.

JavaScript (ES6), 123 bytes
Returns the order as a space-separated string.
f=n=>n?(x=n>128|n==125?125:n>50?n<54?25:n-70?302256705>>n-80&n>79&n<109?80:50:n:n-24&&n-49?n<31|n%5<1?n:25:9)+' '+f(n-x):''

Try it online!
How?
Given a number \$n\$ of wings, we recursively apply the following strategy.
High values: \$n>128\$ or \$n=125\$
For high values, our best option is to buy \$125\$ wings. So that's what we're doing as long as \$n\$ is greater than or equal to \$129\$ or when \$n\$ is exactly equal to \$125\$.
We can't do that for \$125 < n < 129\$ because we'd be left with less than \$4\$ wings to buy, which is not possible.
Low values: \$n<31\$
For \$n<31\$, the best deal is to buy all remaining wings at once, except for \$n=24\$ which must be purchased as either \$2\times 12\$, \$18+6\$ or \$15+9\$. We arbitrarily buy \$9\$ wings in that case.
Range \$31 \le n \le 50\$
In this range, buying \$25\$ wings usually leads to an optimal order. But the following exceptions apply:

If \$n\$ is a multiple of \$5\$, we must buy all remaining wings at once.
If \$n=49\$, the best deals are \$40+9\$ and \$28+21\$. We arbitrarily buy \$9\$ wings in that case.

Range \$51 \le n \le 53\$
We can't buy \$50\$ wings in that range or we'll be left with less than \$4\$ wings. Our best option is to buy \$25\$ of them instead. (We could buy \$2\times26\$ wings for \$n=52\$, but buying \$25+27\$ is just as good.)
Range \$54 \le n \le 128\$ with \$n \neq 125\$
In this range, buying \$50\$ wings usually leads to an optimal order. But the following exceptions apply:

If \$n=70\$, we must buy all of them at once.

If \$n\$ is in \$\{80,86,89,92,98,105,108\}\$, we must buy \$80\$ wings. These values are encoded with the following bitmask, where the least significant bit is mapped to \$80\$ and the most significant one to \$108\$:
$$10010000001000001001001000001_{(2)} = 302256705_{(10)}$$

JavaScript (Node.js), 112 108 106 105 bytes
f=n=>n?(x=n>128|n==125?125:n>53&n!=70?1629>>n/3+6&n<99==n%3/2?80:50:~n%25?n>30&&n%5?25:n:9)+' '+f(n-x):''

Try it online!
Optimized from Arnauld's answer
Differences

51≤n≤53 is merged into 31≤n≤50 (8 bytes save)
Rewrite the bitmap (3 bytes save)
Rearrange some logic (4 6 7 bytes saved)

Retina 0.8.2, 160 155 bytes
.+
$*
{`\b(1{80}(?=((111){2,6}|1{25}|1{28})?$)|1{70}$|1{9}(?=.{15}$|.{40}$)|(1{5}){6,9}$|1{26,29}$|1{4,23}$|1{125}|1{50}|1{25})+$
$1,$&
(1+),\1(1*)$
$.1,$2

Try it online! Link includes header that tests all values from \$ n \$ down to 1, remove it if you only want to test \$ n \$ itself. Uses @Arnauld's algorithm. Edit: Saved 5 bytes by purchasing 95 wings as 80 + 15 instead of 50 + 45. Explanation:
.+
$*

Convert to unary.
{`

Repeat until no more deals can be purchased.
{`\b(1{80}(?=((111){2,6}|1{25}|1{28})?$)|1{70}$|1{9}(?=.{15}$|.{40}$)|(1{5}){6,9}$|1{26,29}$|1{4,23}$|1{125}|1{50}|1{25})+$
$1,$&

Find a way of purchasing deals and capture and duplicate one of the deals.
(1+),\1(1*)$
$.1,$2

Convert the captured deal to decimal and subtract it from \$ n \$.
Deals are purchased under the following conditions:
1{80}(?=((111){2,6}|1{25}|1{28})?$)

Purchase 80 wings if that leaves 0, 6, 9, 12, 15, 18, 25 or 28 wings.
1{70}$

Purchase 70 wings if that's all we need.
1{9}(?=.{15}$|.{40}$)

Purchase 9 wings if that leaves 15 or 40 wings.
(1{5}){6,9}$

Purchase 30, 35, 40 or 45 wings if that's all we need.
1{26,29}$

Purchase 26, 27, 28 or 29 wings if that's all we need.
1{4,23}$

Purchase 4 to 23 wings if that's all we need.
1{125}|1{50}|1{25}

Purchase 125, 50 or 25 wings if we can and if we can still purchase more wings exactly. Note that we have these options at the end of the alternation so that the exact purchases are tested first.


text:
Minimum 1's to get 1-expression for n
Background
Challenge is inspired by this question.
The 1-expression is a formula that in which you add and multiply the number 1 any number of times. Parenthesis is allowed, but concatenating 1's (e.g. 11) is not allowed.
Here is an example to get the 1-expression for \$19\$:
(1+1)*(1+1)*(1+1+1+1)+1+1+1 = 19

Total number of \$1\$'s is \$11\$ but there is shorter than this:
(1+1)*(1+1+1)*(1+1+1)+1 = 19

Total number of \$1\$'s is \$9\$.
Program
Given a positive integer n output the minimum 1's to get the 1-expression for n.
Notes:

For reference, the sequence is A005245.
This is code-golf so shortest answer in each language wins!

Test cases
Input -> Output | 1-Expression
1 -> 1 | 1
6 -> 5 | (1+1+1)*(1+1)
22 -> 10 | (1+1)*((1+1+1+1+1)*(1+1)+1)
77 -> 14 | (1+1)*(1+1)*((1+1+1)*(1+1+1)*(1+1)+1)+1
214 -> 18 | ((((1+1+1)*(1+1)*(1+1)+1)*(1+1)*(1+1)+1)*(1+1)+1)*(1+1)
2018 -> 23 | (((1+1+1)*(1+1)+1)*(1+1+1)*(1+1+1)*(1+1)*(1+1)*(1+1)*(1+1)+1)*(1+1)

First time posting a challenge. Sandbox

Very well-written first challenge. Unfortunately, I believe it's an exact duplicate of this one from earlier this year (which happens to be that user's first challenge too). So sorry this wasn't caught in the Sandbox...

Wolfram Language (Mathematica), 76 71 bytes
If[#<2,1,Min[#+Reverse@#&/@{#0/@Range[#-1],#0/@Most@Rest@Divisors@#}]]&

Try it online!
The recursive approach: define f[n] to be the minimum of f[k]+f[n-k]over all k less than n, and f[d] + f[n/d]over all divisors of n (other than 1 and n itself).


text:
Sequence and Series
Use any programming language to display numbers divisible by 1000000 that are greater than 1 and less than 10000000. Each number should be displayed in new line. Your program should display exactly:
1000000
2000000
3000000
4000000
5000000
6000000
7000000
8000000
9000000

Hi, I closed your question as a duplicate of an older question, because the challenge specified there is pretty much the intent of this question. The other question is about testing divisibility between two numbers.

@EriktheOutgolfer Not all answers here can be ported there, this one is more trivial. (being trivial should not be a reason for closing)

Japt -R, 5 bytes
9õ*L³

Test it

Explanation
9õ        :Range [1,9]
  *       :Multiply each by
   L      :100
    ³     :Cubed
          :Implicitly join with newlines and output

Python 2, 29 bytes
i=0;exec'i+=10**6;print i;'*9

Try it online!

Bash, 13 bytes
seq {1,1,9}e6

Try it online!
This answer is found out by @manatwork

seq {1,1,9}e6

@manatwork great! never heard such a notation before.

Is just a usual brace expansion. echo seq {1,1,9}e6 will show you that it expands to your original code.

Whitespace, 85 bytes
[S S S N
_Push_0][N
S S N
_Create_Label_LOOP][S S S T N
_Push_1][T  S S S _Add][S N
S _Duplicate][S S S T   S T S N
_Push_10][T S S T   _Subtract][N
T   S S N
_If_0_Jump_to_Label_EXIT][S N
S _Duplicate][S S S T   T   T   T   T   S T S S S N
_Push_1000][S N
S _Duplicate][T S S N
_Multiply][T    S S N
_Multiply][T    N
S T _Print_number][S S S T  S T S N
_Push_10][T N
S S _Print_character][N
S N
N
_Jump_to_Label_LOOP]

Letters S (space), T (tab), and N (new-line) added as highlighting only.
[..._some_action] added as explanation only.
Try it online (with raw spaces, tabs and new-lines only).
Pseudo-code:
Integer i = 0
Start LOOP:
  i = i + 1
  If(i == 10):
    Exit with an error
  Integer j = 1000 * 1000 * i
  Print j as number to STDOUT
  Print "\n"
  Go to next iteration of LOOP

PowerShell, 14 bytes
1..9|%{$_*1e6}

Try it online!
Simply loops from 1 to 9 and multiplies each by 1e6, i.e., 1000000, to give the appropriate numbers. Ho-hum boring. Saved 7 bytes thanks to mazzy.
Previous versions:

PowerShell, 21 bytes
1..9|%{"$_"+"000000"}

Try it online!
Boring simple loop from 1 to 9 that just string-concatenates the output together.

PowerShell, 21 bytes
1e6..9e6|?{!($_%1e6)}

Try it online!
Loops from 1e6 to 9e6, pulls out those entries where they're divisible by 1e6. Times out on TIO but works offline. Run it with 3 instead of 6 to see the logic better.

? 1..9|%{$_*1e6}

@mazzy Of course! The most boring solution yet! Haha.

Neim, 8 bytes
9Δμ7)_

Try it online!

Java 11, 62 61 56 54 bytes
v->{for(int i=0;i++<9;)System.out.println(i*1000000);}

-2 bytes thanks to @ggorlen.
Try it online.
Explanation:
v->{                        // Method with empty unused parameter and no return-type
  v->{for(int i=0;i++<9;)   //  Loop `i` in the range (0,9]
    System.out.println(     //   Print without trailing newline:
     i*1000000);}           //    `i` multiplied by 1,000,000

You could save a couple bytes with v->{for(int i=0;i++<9;)System.out.println(i*1000000);}

@ggorlen Can't believe I didn't check if that was shorter.. I did try printf("%.0f%n",i*1e6) and println((int)(i*1e6)) but forgot about just println(i*1000000).. Thanks!

05AB1E, 6 bytes
9L6°*»

Try it online.
Explanation:
9L        # List in the range [1,9]
  6°*     # Multiply each by 10**6
     »    # Join the list by newlines (and output implicitly)

Python 3, 35 bytes
for i in range(1,10):print(i*10**6)

Try it online!

Keg, 17 bytes
Ϩ²:(
;|:.
,':"+

Try it online!
Explanation
Ϩ    # Push 1k
 ²   # Square the value
  :( # Copy the value for the accumulator
;|   # Repeat 10-1 times:
  :. # Print TOS
,    # Print newline
 ':" # Copy 1m to TOS
    + #Add the values

Keg, 8 bytes (SBCS) (Doesn't seem to work online yet)
9Ï_⑷ė6Ë*

Try it online!
Explanation
9Ï_     #Generate range 1-9 by generating range 0-9 and discarding 0
   ⑷        #Map the following to each element:
    ė6Ë*    #   Multiply each by 10 to the power of 6
#-pn puts newlines between each item, which is printed using -no

8 bytes using -pn and -no combined with Ï. N.B. TIO needs updating of Keg

8 byter explained

Yeah. It's been around for a few weeks now so it's relatively new.

W n d, 5 bytes
-í╞6\

Explanation
Decompressed:
9    M % Map in the range 1..9
 a  *  % Multiply the current item by ...
  6^   % ... 10 to the power of 6

JavaScript (Node.js), 35 bytes
for(i=0;i++<9;)console.log(i*10**6)

Try it online!

Attache, 16 bytes
Output[1:9*10^6]

Try it online!
Explanation
Output[1:9*10^6]
       1:9          the range from 1 to 9
          *10^6     multiplied by 10^6 (1e6)
Output[        ]    output each entry on its own line

///, 29 bytes
/!/000000
/1!2!3!4!5!6!7!8!9!

Try it online!
33 bytes for no trailing newline:
/"/000//!/""
/1!2!3!4!5!6!7!8!9""

Try it online!

C++ 44 bytes
for(int i=1;i<=9;i++){cout<<i*100**6<<endl;}

C# (.NET Core), 48 44 bytes
for(int i=0;i++<9;)Console.WriteLine(i*1e6);

Try it online!
-4 bytes: changed i*1000000 to i*1e6 in Console.WriteLine()
Ungolfed:
for (int i = 0; i++ < 9;)               // from 1 to 9
    Console.WriteLine(i * 1e6);     // write i times 1,000,000 (1e6 = 1*(10^6) = 1,000,000) to the console

Retina, 16 bytes

9*
L$`.
$.>`6*0

Try it online! Explanation:

9*

Insert 9 _s.
L$`.

List a value for each _.
$.>`6*0

Number of characters up to and including the current _ followed by six zeros.

APL (Dyalog Unicode), 7 bytesSBCS
Full program.
⍪1E6×⍳9

Try it online!
⍳9 ɩndices one through nine
1E9× multiply million by those
⍪ columnify

Ruby, 30 24 bytes
(1..9).map{|d|p d*10**6}

Try it online!
-6 bytes: use map instead of step. Use 10**6 instead of 1e6.to_i

Welcome to PPCG!

x86-16 machine code, IBM PC DOS, 31 26 bytes
00000000: ba10 018b fab1 09b4 09cd 21fe 05e2 fac3  ..........!.....
00000010: 3130 3030 3030 300d 0a24                 1000000..$

Listing:
BA 0110     MOV  DX, OFFSET O           ; DOS pointer to output string
8B FA       MOV  DI, DX                 ; pointer to defrerence for increment
B1 09       MOV  CL, 9                  ; counter to 9
8A E1       MOV  AH, CL                 ; DOS write string function also to 9
        LOOPY:
CD 21       INT  21H                    ; write string to stdout
FE 05       INC  BYTE PTR[DI]           ; increment first digit
E2 FA       LOOP LOOPY                  ; loop 9 times
C3          RET                         ; return to DOS
        O:  DB  '1000000',0DH,0AH,'$'   ; output string

Standalone DOS executable, output to STDOUT.

TODO: re-do screenshot with old program length!

Jelly, 6 bytes
9Rȷ6×Y

Try it online!
Explanation
9R     [1, 2, ..., 8, 9]
  ȷ6   100000
    ×  Multiply each
     Y Join by newline


text:
Trim that distracting background off!
Isn't it annoying when you're taking a picture, but the background detracts from the actual substance of the image? I'd say it is. I need to know how much I should crop so that I get rid of this problem! But - as usual - I am quite lazy, so I need someone to do this for me...
Task & Rules
Given a binary matrix representing the image, output the dimensions (width and height) of the smallest sub-matrix that contains all the \$1\$s in the original matrix. A sub-matrix is a block of adjacent entries from the original matrix. Equivalently, it is a new matrix formed by overlapping a subset of adjacent rows and a subset of adjacent columns of the original.

It is allowed to take the width and the height of the matrix as input as well.
The input is guaranteed to contain at least one \$1\$.
You can take input and provide output through any standard method, while taking note that these loopholes are forbidden by default. This is code-golf, so try  to complete the task in the least bytes you can manage in your language of choice.

Example
$$\left[\begin{matrix}
\color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0\\
\color{red}0&\color{blue}1&\color{blue}0&\color{blue}1&\color{blue}0&\color{blue}0\\
\color{red}0&\color{blue}1&\color{blue}1&\color{blue}0&\color{blue}1&\color{blue}1\\
\color{red}0&\color{blue}0&\color{blue}1&\color{blue}0&\color{blue}1&\color{blue}0\\
\color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0\end{matrix}\right] \longrightarrow \left[\begin{matrix}1&0&1&0&0\\1&1&0&1&1\\0&1&0&1&0\end{matrix}\right]\longrightarrow(5,3)$$
Test cases

Input | Output

[[0,1,0,0,0,1,0]]
--> (5,1) or (1,5)

[[0,0,0,0,0],[0,1,0,1,0],[0,0,1,0,0]]
--> (3,2) or (2,3)

[[1,1,1,1],[0,0,0,0],[0,0,0,0],[1,0,0,0]]
--> (4,4)

[[0,0,0,0,0,0],[0,1,0,1,0,1],[0,0,0,0,0,0]]
--> (5,1) or (1,5)

[[0,0,0,0,0],[0,1,0,1,0],[0,0,1,0,0],[0,1,0,1,0],[0,0,0,0,0]]
--> (3,3)

[[0,0,0,0,0,0],[0,1,0,1,0,0],[0,1,1,0,1,1],[0,0,1,0,1,0],[0,0,0,0,0,0]]
--> (5,3) or (3,5)

This feels very familiar; was it in the Sandbox for a while?

This is indeed very close to the linked question but I think it can be considered a distant enough subset thereof because generating the matrix is not absolutely necessary for computing the actual width and height. For instance, one possible algorithm would be to count the minimal number of marginal zeros for each row and column and subtract those from the original dimensions.

related - Highlight the Bounding Box, Part I: Cartesian Grid

MATL, 5 bytes
JYaZy

Try it online! Or verify all test cases.
Explanation
JYa   % Implicit input. Unpad matrix. This removes outer zeros
Zy    % Size. Implicit display

All I see is Yahtzee.

Octave, 57 56 45 bytes
Here find does the heavy lifting: It finds the row and colum indices of the nonzero entries. Then we just have to find the difference between the maximum and the minimum (plus one) for each of those seperately.
Thanks @beaker and @AndrasDeak for -1 byte, and @LuisMendo for -11 bytes!
@(a){[I{1:2}]=find(a),cellfun(@range,I)}{2}+1

Try it online!

APL (Dyalog Unicode), 10 bytesSBCS
Anonymous tacit prefix function.
(1+⌈/-⌊/)⍸

Try it online!
⍸ indices of 1s.
(…) apply the following tacit function to that:
 ⌊/ the minimum (lowest y coordinate and lowest x coordinate)
 ⌈/- the maximum minus that (this gives us the range)
 1+ one plus that (to be inclusive)

Python 2, 92 86 bytes
def f(a,L=len):exec"a=zip(*a[1-any(a[0]):])[::-1];"*4*L(a[0])*L(a);return L(a[0]),L(a)

Try it online!

Jelly, 7 bytes
S,§t€0Ẉ

Try it online!
How it works
S,§t€0Ẉ  Main link. Argument: M (matrix)

S        Take the columnwise sum. Let's call the resulting array A.
  §      Take the sum of each row. Let's call the resulting array B.
 ,       Pair; yield [A, B].
   t€0   Trim surrounding zeroes of A and B.
      Ẉ  Widths; yields the lengths of the trimmed arrays.

Python 2,  63  55 bytes
-8 with help from Vincent (take the input matrix as a Numpy array)
lambda a:[len(`a.max(x)`[7::3].strip('0'))for x in 0,1]

An unnamed function accepting a 2-d Numpy array of integers (in {0,1}) which returns a list of integers, [width,height].
Try it online!

Non-Numpy version in 63 bytes (accepting a list of lists of integers in {0,1}):
lambda a:[len(`map(max,v)`[1::3].strip('0'))for v in zip(*a),a]

Try it online!
How?
Given a matrix, a, for each (v) of the transpose, zip(*a), and a itself we find the height required (given the transpose this is the width).
Mapping max across v yields a list of zeros and ones, representing if each row of v contains any ones. The string representation of this list is found using backticks (`...`), this gives a string with a leading [, then the zeros and ones delimited by ,  (comma+space). We slice this string starting at index one in steps of three using [1::3] getting us a string of only the zeros and ones, which allows us to use the string function strip to remove the outer zeros (strip('0')).
For example:
      a = [[0,0,0,0,0]           map(max,a)                    = [0,1,1]
          ,[0,1,0,0,0]          `map(max,a)`[1::3]             = '011'
          ,[0,0,0,1,0]]         `map(max,a)`[1::3].strip('0')  = '11'
                            len(`map(max,a)`[1::3].strip('0')) = 2

zip(*a) = [(0,0,0)         map(max,zip(*a))                    = [0,1,0,1,0]
          ,(0,1,0)        `map(max,zip(*a))`[1::3]             = '01010'
          ,(0,0,0)        `map(max,zip(*a))`[1::3].strip('0')  = '101'
          ,(0,0,1)    len(`map(max,zip(*a))`[1::3].strip('0')) = 3
          ,(0,0,0)]

    --> [len(`map(max,v)`[1::3].strip('0'))for v in zip(*a),a] = [3,2]

57 bytes using a numpy array.

If we take input as a non-built-in type shouldn't we be counting some kind of import statement to allow us to do so? (It might be just that we have to title the post as "Python 2 with numpy" - I'm not entirely sure) ...if you have some time could you ask in the nineteenth byte chat room?

...also 55 bytes right?

I couldn't really find a clear answer on PPCG Meta, so I'm not sure about this. And yes, 55 bytes indeed :)

I just asked. According to this post, the import doesn't have to be included.

Retina 0.8.2, 83 bytes
+`^0+¶|¶0+$

+1`((.)*).(¶(?<-2>.)*).(?<=(1)¶.*|(.))
$1$3$4$5
(¶?)*0*(.*1)0*
$#1 $.2

Try it online! Explanation:
+`^0+¶|¶0+$

Delete leading and trailing zero rows.
+1`((.)*).(¶(?<-2>.)*).(?<=(1)¶.*|(.))
$1$3$4$5

Remove all 0s on the lines above the last. Remove all the 1s two, but change the digit underneath on the next line to a 1 in that case. This bitwise or's the rows together.
(¶?)*0*(.*1)0*
$#1 $.2

Count the number of rows as the number of newlines plus 1 and the number of columns as the number of digits between the first and last 1.

J, 31 bytes
[:$([:|.@|:}.^:(0=1#.{.))^:4^:_

Try it online!
Explanation:
                            ^:_ - repeat until the result stops changing
   (                    )^:4    - repeat 4 times
             ^:(        )       - is
                  1#.           - the sum of
                      {.        - the first row
                 =              - equal
                0               - to 0
           }.                   - if yes, drop the first row
    [:|.@|:                     - transpose and reverse (rotate 90 degrees)
[:$                             - what's the shape of the result?

q/kdb+, 16 bytes
sum@'(|/;|/')@\:

Mathematica, 34 bytes
Max@#-Min@#+1&/@(#~Position~1)&

Pure function. Takes a nested list of integers as input, and returns a list of two integers (the height followed by the width) as output. The Unicode character is U+F3C7 for \[Transpose].

R, 48 46 bytes
function(m)1+diff(apply(which(m>0,T),2,range))

Try it online!
-2 bytes saved by Giuseppe.

05AB1E, 11 9 bytes
ζ‚Oε0Û0Üg

-2 bytes thanks to @Mr.Xcoder.
Try it online or verify all test cases.
Explanation:
ζ            # Swap the rows and columns of the (implicit) input-list
 ‚           # Pair it with the (implicit) input-list
  O          # Take the sum of each column and row
   ε         # Map Both the list of column-sums and list of row-sums to:
    0Û       #  Remove all leading zeros
      0Ü     #  Remove all trailing zeros
        g    #  Take the length of the remaining lists

ζ‚Oε0Û0Üg saves 2 bytes.

@Mr.Xcoder Ah, of course. I was already not too happy about that swap. Can't believe I hadn't thought about doing the pair first and than the sum.. >.>

Ruby, 60 bytes
->m{[m,m.transpose].map{|x|x.map(&:max).join[/1.*/]=~/0*$/}}

Try it online!

Japt, 16 15 bytes
[UUy]®=ðd)ÎaZÌÄ

Try it or run all test cases

Explanation
[   ]               :Create an array containing
 U                  : The input and
  Uy                : The input transposed
     ®              :Map each Z
       ð            : Indices of elements where
        d           :  Any element is truthy (not 0)
      =  )          : Reassign to Z
          Î         : First element
           a        : Absolute difference with
            ZÌ      :  Last element
              Ä     :   Plus 1

Jelly, 9 bytes
ŒṪZṀ_ṂƊ€‘

Try it online!

Haskell, 76 bytes
f x=length.s.reverse.s<$>[foldr(zipWith(:))e x,x]
e=[]:e
s=snd.span(all(<1))

Try it online!