Question: Say I have text like this (each word on one line, with no spaces)

```
Programming
Puzzles
&
Code
Golf

```

That makes no sense! It totally defies the laws of physics.

Your challenge is to remedy this impossible situation and collapse the text like so:

```
P
Prog
&uzz
Coderam
Golflesming

```

So that there is no empty space underneath any character but the characters retain their vertical order.

The goal is to satisfy the requirements but use the fewest bytes of source code possible.

Answer: 
SmileBASIC, 90 bytes
====================

```
X=RND(50)Y=RND(20)G=CHKCHR(X,Y+1)<33LOCATE X,Y+G?CHR$(CHKCHR(X,Y));
LOCATE X,Y?" "*G
EXEC.

```

Applies gravity to all text in the console. I'm not sure if this is valid, or if I have to use a string array.
[Julia 0.6](http://julialang.org/), 141 bytes
=============================================

```julia
l=length
g(z,i)=(n=z[i];m=z[i+1];(N,M)=l.([n,m]);z[i:i+1]=[n[1:min(N,M)],m*n[M+1:N]])
f(s,w=split(s),d=1:l(w)-1)=(g.([w],[d d]);join(w,"\n"))

```

[Try it online!](https://tio.run/##HY0/C8IwEMX3@xSSQe40ClkcWjI5OCnuMYPQNkYuV2kjlX75Gp0evD@/93xzvB@WhS23EvIDAs46kkWxs4u@Tj/ZGl/jRZ/J8h6d6OSpLnb1C6wTZ6oU5V/wOm3EnbemunhP0OGoJzu@OGYcSTfWVIwT7Uw5CAU1ee2aVVNwz74QJq1uooiW/MlWKXUd@jDcU4EHuL7nmdsR1nDsmxZOPXelAfAaomQW7LCMiGD5Ag "Julia 0.6 – Try It Online")

Broadcasting with `g.([w], [d d])` allows me to get rid of any map statement and saves me around 7 bytes.