The sea in your terminal
JavaScript (ES6) + HTML, 151 143 + 10 = 161 153 bytes
a=[48,15,57347,6147,1542,504];setInterval("a=a.map(n=>{for(x=-1;++x<80;)s+=' *'[n>>x%16&1];s+=`\n`;return n>>>15|n<<1},s='');O.innerHTML=s",99)
<pre id=O>
MATL, 41 40 bytes
`'3SJp/B@Tc`@+ara'F'* 'Za6el&Xx80:@-Z)DT
Example run:
Or try it at MATL Online! (the actual speed may depend on server load).
How it works
` % Do...while
'3SJp/B@Tc`@+ara' % Compressed string (actually it's just a change of base)
F % Push false. Indicates base-95 input alphabet for decompression
'* ' % Push this string, which defines output alphabet
Za % Base conversion. This decompresses the string
6e % Reshape as a 6-row char array. This gives the basic pattern
l&Xx % Pause 0.1 seconds and clear screen
80: % Push array [1 2 ... 80]
@- % Subtract iteration index to each element of that array. This
% will produce the rotation via modular indexing
Z) % Use as column index. Indexing is modular, so this repeats
% (and rotates) the pattern
D % Display
T % True. Loop condition for infinite loop
% Implicit end
HTML + CSS, 70 + 181 175 = 245 bytes
Makes use of text-shadow
, rtl
text and CSS keyframe animations.
a{display:flex;overflow:hidden;width:80ch}pre{text-shadow:16ch 0,32ch 0,48ch 0,64ch 0,80ch 0;direction:rtl;animation:w steps(16)1.6s infinite}@keyframes w{0%{margin-left:-16ch
<a><pre>**
****
*****
** **
** **
*** ***