Forever…Windowsスタイルを読み込んでいます


36

次の手順に従って、Windowsスタイルの読み込みバーを作成します。

(これはLoading ... Foreverとは異なることに注意してください)

出力はから始まり[.... ]ます。

ティックごとに、100ミリ秒待ってから、各ドットを1文字右に移動する必要があります。ドットが10番目の文字にある場合は、最初の文字に移動します。再度出力する前に画面をクリアする必要があることに注意してください。出力は次のように順序付けられます。

[....      ]
[ ....     ]
[  ....    ]
[   ....   ]
[    ....  ]
[     .... ]
[      ....]
[.      ...]
[..      ..]
[...      .]

..それからそれは永久にループします。

ルール

  • これはですので、最短の答えが勝ちます
  • 可能であれば、動作中の読み込みバーのgifファイルを提供してください。

1
たとえば、画面を「クリア」するために、各出力の前に20個の改行を出力できますか?
Okx

2
@Okxはい、あなたの言語に画面をクリアする他の方法がない場合。
マシュー盧

遅延はどれくらいの誤差がありますか?(例:+-0.5秒)250ミリ秒の誤差をお勧めします
。...-stevefestl

1
将来の課題に固定時間遅延を含めないことを提案できますか?最近の多くの課題に登場しており、システムをnミリ秒待機させるために、同じ変更不可能なボイラープレートを作成するたびにそれが現れます。
-xnor

2
\r文字通り画面をクリアする代わりに、の使用は許可されていますか?
phyrfox

回答:


19

V、17 16 15バイト

i[´.¶ ]<esc>ògó$X|p

<esc>です0x1b

そして、hexdump:

00000000: 695b b42e b620 5d1b f267 f324 587c 70    i[... ]..g.$X|p

説明

i                       " Insert
[                       " a [
´.                      " 4 .s
¶<space>                " 6 spaces
]<esc>                  " and a ]. Then return to normal mode
ò                       " Recursively do:
 gó                     "  Sleep for 100 milliseconds
 $                      "  Go to the ]
 X                      "  Delete the character to the left of the ]
 |                      "  Go to the [
 p                      "  And paste the deleted character right after the [
                        " Implicit ending ò

gif


Vimでテストする方法は?
パベル

@Phoenix i.... <esc>qq:sl 100m<CR>$X|P@qq@qは動作するはずです(<esc>明らかにエスケープキーで<CR>あり、改行です)(4つのドットの後に6つのスペースがあります)
Kritixi Lithos

3
この機能が便利であることを嬉しく思います。いい答えBTW :)
DJMcMayhem

19

CSS / HTML、202 190 186 + 45 = 247 235 231バイト

pre{position:relative}x{position:absolute;display:inline-block;width:10ch;height:1em;overflow:hidden}x>x{width:14ch;left:-10ch;animation:1s steps(10,end)infinite l}@keyframes l{to{left:0
<pre>[<x><x>....      ....</x></x>          ]

編集:@ルークのおかげで12 14バイトを保存しました。


アニメーションの名前を次のように変更して、6バイト節約できませんbか?
ルーク

私は信じることができない@Luke私は...それを行うのを忘れて
ニール・

ch最後にをドロップすると、さらに2バイト節約できます。0ユニットは必要ありません。
ルーク

2
に変更<x>してください<span>(CSSでも:にxなりspan、にx>xなりますspan>*)?これによりが節約されdisplay:inline-block;ますが、コストはわずか15バイトです。したがって、合計6Bが保存されます。
ルーク

1
@Luke表示は気にしませんが、の繰り返しは避けたいですposition:absolute;
ニール

12

PowerShell、67 66バイト

for($s='.'*4+' '*6;$s=-join($s[,9+0..8])){cls;"[$s]";sleep -m 100}

-1 Beatcrackerのおかげで短縮コンストラクターを使用して

文字列を残りの文字の前に最後の文字が置かれた文字列のコピーに置き換え、画面をクリアし、印刷してから、100ミリ秒間スリープします。

文字列内にロジックをラップするのではなく、forループコンストラクターを使用して多くのバイトを節約しました。

enter image description here


1
forループトリックを+1して、about_Joinを読み直します。
ビートクラッカー

1
PSを使用してもう1バイトゴルフできます$s='.'*4+' '*6
ビートクラッカー

@beatcrackerありがとうございます-更新:)
colsw

スクリプトはで始まりません[.... ]。ペナルティなしで修正できますfor($s='.'*4+' '*6){cls;"[$s]";$s=-join($s[,9+0..8]);sleep -m 100}
。– mazzy

10

Pythonの399 93 85 83 + 2(-uフラグ)バイト

ovsのおかげで-12バイト
-totallyhumanのおかげで-2バイト

import time
s=4*'.'+6*' '
while 1:print(end='\r[%s]'%s);time.sleep(.1);s=s[9]+s[:9]

オンラインでお試しください!


どうしてflush=True?私なしで動作します
-L3viathan

3
@ L3viathanは、私の(ubuntu)端末がフラッシュしていないためです。このフラッシュの動作はOSに依存しています= /
Rod

1
いくつかのバイトを保存print(end='\r[%s]'%s,flush=1)
OVS

2
-uコマンドラインフラグを使用して、フラッシュを完全に削除できます。関連するSO質問
-ovs

1
でいくつかのバイトを保存することもできますs[9]+s[:9]
完全に人間

10

Windowsバッチ、201 181バイト

古い学校の方法を使用すると、実際にバイトを節約できます!

@for %%p in ("....      " " ....     " "  ....    " "   ....   " "    ....  " "     .... " "      ...." ".      ..." "..      .." "...      .")do @echo [%%~p]&timeout 0 >nul&cls
@%0

注意:

get-screenrecorder.level
- low grade

get-gpu.level
- horrible

if get-screenrecorder.level == low grade || get-gpu.level == horrible {
     say("GIF may not be accurate");
}

GIF!

GIFレコーダーがいくつかのフレームをスキップし、読み込みバーがジャンプすることに注意してください :(


1
ドットの数を計算するのではなく、ドットとスペースで変数を保持し、それに対して文字列操作を実行した場合、おそらくこれを100バイトまで減らすことができます。
ニール

私はこれに取り組みます、あなたのヒントに感謝します:)!
-stevefestl

timeout / t 0> ping 1.1の代わりにnul -n 1 -w 100> nulは100ms +/- 250msのタイミング要件(通常は25-100ms程度)内にあるため、そこに数バイトを節約できます(ss64.com/ nt / timeout.html
リアムデーリー

1
また、取り外し@echo offや交換を行う do @(echo %%~p&timeout/t 0 >nul&cls)意志も仕事と11文字(自分のコンピュータ上の200バイト)を保存すべきである
リアム・ダリー

8

Mathematica、67 77バイト

角かっこを忘れたときの+10バイト。

Animate["["<>"....      "~StringRotateRight~n<>"]",{n,1,10,1},RefreshRate->10]

1
実際、Mathematicaには組み込みのAnimate?:|
ミスターXcoder

ええ、それは与えられた変数のほぼすべてをアニメーション化します。:)
イアンミラー

これには、他のほとんどの回答にある角括弧が含まれていないようです。
マーク

ああ、ラットは、十分によく見えませんでした。OK修正済み。
イアンミラー

8

C(GCC) 126 125 124 123 122 121の 119 118 117 114 115バイト

これはビットマスクを使用して、ドットの位置を追跡します。

以前は5つのスペースしか出力していなかったため、もう1バイト追加する必要がありました。

m=30;f(i){usleep(3<<15);system("clear");for(i=1;i<1920;i*=2)putchar(i^1?i&m?46:32:91);m+=m&512?m+1:m;f(puts("]"));}

オンラインでお試しください!

enter image description here


48
コマンドプロンプトフォントがComic Sans MSなのはなぜですか?!?!?!
MD XF


6

JavaScript(ES6)+ HTML、104 85 83バイト

f=(s="....      ")=>setTimeout(f,100,s[9]+s.slice(0,9),o.value=`[${s}]`)
<input id=o
  • の代わりにを使用するというJohanの提案のおかげで2バイト節約されましinputpre

それを試してみてください

スニペットで機能する>には、inputタグを閉じる必要があります。

(f=(s="....      ")=>setTimeout(f,100,s[9]+s.slice(0,9),o.value=`[${s}]`))()
<input id=o>


1
[]sの間に10文字はありませんか?
ニール

そうです、@ Neil。6つのスペースがあります-目で物を数えるつもりなら、私ができることはメガネをかけることです!
シャギー

1
<input>代わりに<pre>and thenのvalue代わりに使用できませんinnerTextか?
ヨハンカールソン

よろしくお願いします、@ JohanKarlsson; 2バイト節約できます。
シャギー

おい!これは同じバイトカウントですs='.... ';setInterval(f=>{o.value='[${s=s[9]+s.slice(0,9)}]'},100);<input id=o。多分誰かがそれを改善することができます(引用符を `で置き換えます)
トーマスW

5

Noodel16 15 14 13 バイト

[CỤ'Ṁ〜ððÐ]ʠḷẸḍt

]ʠ[Ð。×4¤×6⁺ḷẸḍt

]ʠ⁶¤⁴.ȧ[ėÐḷẸḍt

それを試してみてください:)


使い方

]ʠ⁶¤⁴.ȧ[ėÐḷẸḍt

]ʠ⁶¤⁴.ȧ[ėÐ     # Set up for the animation.
]              # Pushes the literal string "]" onto the stack.
 ʠ             # Move the top of the stack down by one such that the "]" will remain on top.
  ⁶¤           # Pushes the string "¤" six times onto the stack where "¤" represents a space.
    ⁴.         # Pushes the string "." four times onto the stack.
      ȧ        # Take everything on the stack and create an array.
       [       # Pushes on the string literal "[".
        ė      # Take what is on the top of the stack and place it at the bottom (moves the "[" to the bottom).
         Ð     # Pushes the stack to the screen which in Noodel means by reference.

          ḷẸḍt # The main animation loop.
          ḷ    # Loop endlessly the following code.
           Ẹ   # Take the last character of the array and move it to the front.
            ḍt # Delay for a tenth of a second.
               # Implicit end of loop.

更新

[Ð]ıʠ⁶¤⁴.ḷėḍt

それを試してみてください:)

なぜこれを考えるのに時間がかかったのか分かりません。とにかく、これは13バイトに配置します

[Ð]ıʠ⁶¤⁴.ḷėḍt

[Ð]ıʠ⁶¤⁴.     # Sets up the animation.
[             # Push on the character "["
 Ð            # Push the stack as an array (which is by reference) to the screen.
  ]           # Push on the character "]"
   ı          # Jump into a new stack placing the "[" on top.
    ʠ         # Move the top of the stack down one.
     ⁶¤       # Push on six spaces.
       ⁴.     # Push on four dots.

         ḷėḍt # The main loop that does the animation.
         ḷ    # Loop the following code endlessly.
          ė   # Take the top of the stack and put it at the bottom.
           ḍt # Delay for a tenth of a second.

<div id="noodel" code="[Ð]ıʠ⁶¤⁴.ḷėḍt" input="" cols="12" rows="2"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>


2
Noodelについては聞いたことがないが、それは適切な仕事に適したツールのようだ!+1
ケビンクルーッセン

1
@ KevinCruijssen、ETHProductionsにコードゴルフの言語のリストがあります :)
tkellehe

6
私は、私はあなたをoutgolfedと思ったちょうどその時、私はあなたがすでに二回あなたのソリューションをgolfedている気づく
KritixiのLithosを

@KritixiLithos、私はあなたが私を打ち負かそうとしていたので怖かったので、私は14バイトに到達しようとして永遠に過ごしました。しかし、今、あなたは再び近づいています!! ダン!!
tkellehe

1
@ nitro2k01 Noodelは、256文字の独自のコードページを使用します。これらはすべて、独自のエンコーディングで1バイトとして保存されます。Jelly05AB1Eなど、他のいくつかのゴルフ言語と同様です。これらの文字をデフォルトのUTF-8エンコーディングとして保存する場合、実際には代わりに2または3バイトになりますが、独自のエンコーディングではそれぞれ1バイトになります。
ケビンCruijssen

4

PHP、67バイト

for($s="...      .";$s=substr($s.$s,9,10);usleep(1e5))echo"\r[$s]";

コメント無し


4

C#、162 157バイト

()=>{for(string o="[....      ]";;){o=o.Insert(1,o[10]+"").Remove(11,1);System.Console.Write(o);System.Threading.Thread.Sleep(100);System.Console.Clear();}};

または177バイトのプログラム全体として

namespace System{class P{static void Main(){for(string o="[....      ]";;){o=o.Insert(1,o[10]+"").Remove(11,1);Console.Write(o);Threading.Thread.Sleep(100);Console.Clear();}}}}

+1ゴルフするもの:for(string o="[.... ]";;)にゴルフすることができますvar o="[.... ]";for(;;)。またはすることができます私たちポート私のJava 7の答えいくつかのより多くのゴルフの合計:()=>{var o=".... "for(;;){o=(o+o).Substring(9,10);System.Console.Write("["+o+"]\n");System.Threading.Thread.Sleep(100);System.Console.Clear();}};
ケビンCruijssen

文字列補間はもうオフになりますか?何か$"[{o}]\n"
マリー

1
交換System.Console.Write(o)するSystem.Console.Write(o+"\r")場合は、削除できますSystem.Console.Clear();
グラブフィッシュ


4

MATL、24バイト

`1&Xx'['897B@YS46*93hhDT

MATL Online試しくださいまたは、オフラインコンパイラからのgifを参照してください。

enter image description here

説明

`        % Do...while
  1&Xx   %   Pause for 0.1 s and clear screen
  '['    %   Push this character
  897B   %   Push [1 1 1 0 0 0 0 0 0 1]
  @      %   Push current iteration index, 1-based
  YS     %   Circularly shift the array by that amount
  46*    %   Multiply by 46 (code point of '.')
  93     %   Push 93 (code point of ']')
  hh     %   Concatenate horizontally twice. Numbers are interpreted as chars
         %   with the corresponding code points
  D      %   Display
  T      %   Push true. Used as loop condition. Results in an infinite loop
         % End (implicit)

リンクがクラッシュします。つまり、私はそれを殺すことができません。
リーキー修道女

1
@LeakyNunクラッシュするということはどういう意味ですか?それは私のために働いており、私はそれを殺すことができます。タイムアウトの問題がある場合があります。開始しない場合は、ページを
更新して

4

ゼリー28 27 バイト

ṙ©-j@⁾[]ṭ”ÆȮœS.1®ß
897ṃ⁾. Ç

Example run

どうやって?

ṙ©-j@⁾[]ṭ”ÆȮœS.1®ß - Link 1, the infinite loop: list of characters s
ṙ                  - rotate s left by:
  -                -   -1 (e.g. "...      ." -> "....      ")
 ©                 -   copy to the register and yield
     ⁾[]           - literal ['[',']']
   j@              - join with reversed @rguments
         Ӯ        - literal '\r'
        ṭ          - tack (append the display text to the '\r')
           Ȯ       - print with no newline ending
              .1   - literal 0.1
            œS     - sleep for 0.1 seconds then yield the printed text (unused)
                ®  - recall the value from the register
                 ß - call this link (1) again with the same arity

897ṃ⁾. Ç - Main link: no arguments
897      - literal 897
    ⁾.   - literal ['.',' ']
   ṃ     - base decompression: convert 897 to base ['.',' '] = "...      ."

4

C(GCC)、202 198 196 189 96 99 88 86 79 77の 75 74 73バイト

Digital Traumaのおかげで7 8バイト節約されました。

f(i){usleep(dprintf(2,"\r[%-10.10s]","....      ...."+i%10)<<13);f(i+9);}

または、stdout改行なしで書き込みのたびにシステムをフラッシュする必要がない場合:

C(gcc)、70バイト

f(i){usleep(printf("\r[%-10.10s]","....      ...."+i%10)<<13);f(i+9);}

使い方

  • usleep( マイクロ秒単位で次の戻り値までスリープします。
  • dprintf(2,ファイル記述子2、またはに出力しますstderr。これが必要なのstdoutは、行バッファリングされている(改行を出力するまで出力が表示されない)一方で、stderr文字バッファリングされている(すべての出力がすぐに表示される)ためです。
  • "\r キャリッジリターンを印刷します(現在の行をクリアします)。
  • [%-10.10s]"は、printf正確な長さ10の文字列の形式指定子です(指定された文字列に関係なく、出力は常に長さ10の文字列になります)。必要に応じて右側にスペースが埋め込まれます。これは角括弧で囲まれます。
  • ".... ...." ローディングバーです。
  • +i%1010を法とする現在のインデックスで読み込みバーをオフセットします。たとえばi == 3i % 10が3に等しい場合、読み込みバーを3オフセットすると、に等しくなり". ...."ます。
  • オフセットされた文字列がprintf書式指定子に渡されると、必要に応じて長さが10に制限され、必要に応じて末尾にスペースが追加されます。したがって、読み込みバーは常にとの間に[.... ]なり[. ...]ます。

i;f(){for(;;i=++i%10)usleep(7500*dprintf(2,"\r[%-10.10s]",".... ...."-i+10));}動作するはずです。
クリストフ

1
素晴らしいゴルフ!さらに1バイト節約f(i){usleep(dprintf(2,"\r[%-10.10s]",".... ...."+i%10)<<13);f(i+9);}
デジタルトラウマ

@DigitalTrauma コード内のスペースが適切にレンダリングされませんでした。しかし、私はあなたの意味を理解し、助けてくれてありがとう!
MD XF

3

Java 7、139 124バイト

String s="....      ";void c()throws Exception{System.out.print("["+s+"]\r");s=(s+s).substring(9,19);Thread.sleep(100);c();}
  • @Phoenixへの\r感謝の言及

キャリッジリターン\rは、「カーソル」を行の先頭にリセットし、上書きできます。残念ながら、オンラインコンパイラもEclipse IDEもこれをサポートしていないため、この回答の最後にgifを追加して、Windowsコマンドプロンプトから表示できるようにしました。

ここで試してみてください。(結果を表示する前にタイムアウトを待つ必要がないように少し変更されています。また、TIOは復帰をサポートしていないため、すべての行が前の行を上書きせずに印刷されます。)

説明:

String s="....      ";            // Starting String "....      " on class level
void c()                          // Method without parameter nor return-type
 throws Exception{                // throws-clause/try-catch is mandatory for Thread.sleep
  System.out.print("["+s+"]\r");  //  Print the String between square-brackets,
                                  //  and reset the 'cursor' to the start of the line
  s=(s+s).substring(9,19);        //  Set `s` to the next String in line
  Thread.sleep(100);              //  Wait 100 ms
  c();                            //  Recursive call to same method
}                                 // End of method

出力gif:

enter image description here


改行に置き換えprintlnprint出力することにより、行をクリアできます。IDEのターミナルでは機能しない場合がありますが、他の正常なターミナルでは機能します。
パベル

@Phoenixキャリッジリターンとは\r\n?どのようにはありませんSystem.out.print(someString+"\r\n);それは使用するのと同じです。..コンソールをクリアするSystem.out.println(someString);ことは、単純に次の行に行く..しかし..印刷された任意の前の行は削除されません:S
ケビンCruijssen

4
いいえ、つまり\r、なし\n。これにより、「カーソル」が行の先頭にリセットされ、何でも印刷するとその行が上書きされます。
パベル

@Phoenix Ahもちろん。ありがとう。私の答えを修正し、結果を表示するためにgifを追加しました。あまりにも悪いオンラインコンパイラもEclipse IDEもこれをサポートしていません。..>。>
ケビンCruijssen

3

パイソン281の 78バイト

-1バイト(気づき私が使用逃した%sロッドが提出されたときにほぼ同じのPython 3バージョンを同時に!)を
-2バイト(使用totallyhumanのアイデアを -置き換えs[-1]+s[:-1]s[9]+s[:9]

import time
s='.'*4+' '*6
while s:print'\r[%s]'%s,;s=s[9]+s[:9];time.sleep(.1)

Example run


どのように出力をフラッシュしていますか?これが私の答えにpython3を使用している理由です(python2でフラッシュするにはより多くのバイトが必要になります)
ロッド

@Rodは行を\r上書きし,、文字列ではなくタプルを出力します-しばらく前に見たことがあり、以前も使用しました。
ジョナサンアラン

1
はい、これは私がやっていたものですが、出力は(使用していた、リアルタイムに印刷されていませんでしたsys.stdout.flush()
ロッド

1
犯人を見つけました:私のubuntu端末:c-
ロッド

3

Go, 150 145 132 129 124 bytes

-5 bytes thanks to sudee.

I feel like I don't see enough Go here... But my answer is topping C so... pls halp golf?

package main
import(."fmt"
."time")
func main(){s:="....      ";for{Print("\r["+s+"]");Sleep(Duration(1e8));s=(s+s)[9:19];}}

Try it online!


1
Not familiar with Go, but I would assume you can convert 100000000 to 10^8 to save 5 bytes.
Grant Miller

@goatmeal I tried that but it's apparently bitwise negation. I also tried 10**8 which also gives an error.
totallyhuman

3
You can use scientific notation: 1e8.
sudee

1
@sudee Aha, that would be the way to use large numbers. Thanks!
totallyhuman

2
@MDXF I should've phrased that differently, I meant my answer is being out-golfed by C.
totallyhuman

3

VBA 32-bit, 159 157 143 141 134 Bytes

VBA does not have a built in function that allows for waiting for time periods less than one second so we must declare a function from kernel32.dll

32 Bit Declare Statement (41 Bytes)

Declare Sub Sleep Lib"kernel32"(ByVal M&)

64 Bit Declare Statement (49 Bytes)

Declare PtrSafe Sub Sleep Lib"kernel32"(ByVal M&)

Additionally, we must include a DoEvents flag to avoid the infinite loop from making Excel appear as non-responsive. The final function is then a subroutine which takes no input and outputs to the VBE immediate window.

Immediate Window function, 93 Bytes

Anonymous VBE immediate window function that takes no input and outputs to the range A1 on the ActiveSheet

s="...      ....      .":Do:DoEvents:Sleep 100:[A1]="["&Mid(s,10-i,10)&"]":i=(i+1)Mod 10:Loop

Old Version, 109 Bytes

Immediate window function that takes no input and outputs to the VBE immediate window.

s="...      ....      .":i=0:Do:DoEvents:Sleep 100:Debug.?"["&Mid(s,10-i,10)&"]":i=(i+1) Mod 10:Loop

Ungolfted and formatted

Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal M&)
Sub a()
    Dim i As Integer, s As String
    s = "...      ....      ."
    i = 0
    Do
        Debug.Print [REPT(CHAR(10),99]; "["; Mid(s, 10 - i, 10); "]"
        DoEvents
        Sleep 100
        i = (i + 1) Mod 10
    Loop
End Sub

-2 Bytes for removing whitespace

-30 Bytes for counting correctly

-14 Bytes for converting to immediate window function

Output

The gif below uses the full subroutine version because I was too lazy to rerecord this with the immediate window function.

VBA loading Gif


What's that a at the top of the output?
MD XF

@MDXF that is the call to run subroutine a as is listed above; this is functionally equivalant to the more verbose call a().
Taylor Scott

Ah, my bad. Just looking for bad submissions. Your's isn't, then, so +1
MD XF

2

05AB1E, 23 bytes

'.4×ð6×J[D…[ÿ],Á¶т×,т.W

Try it online!

Explanation

'.4×ð6×J                  # push the string "....      "
        [                 # forever do:
         D                # duplicate
          …[ÿ],           # interpolate the copy between brackets and print
               Á          # rotate the remaining copy right
                ¶т×,      # print 100 newlines
                    т.W   # wait 100ms

2

Batch, 99 98 bytes

Saved 1 byte thanks to SteveFest!

(I could remove \r from the code, but in the spirit of batch golfing, I won't.)

@SET s=....      
:g
@CLS
@ECHO [%s%]
@SET s=%s:~-1%%s:~,-1%
@ping 0 -n 1 -w 100>nul
@GOTO g

Recorded with LICEcap

There are four spaces after the first line.

The main logic is modifying the string. %s:~-1% is the last character of %s% and %s:~0,-1% is all but the last character of %s%. Thus, we are moving the last character to the front of the string, which rotates the string.


Aw... I've been looking for this...
stevefestl

1
Golf 1 byte: the 0 in the variable substring can be removed
stevefestl

You use cmder. Nice job.
MD XF

1
@SteveFest Huh, TIL. Thanks!
Conor O'Brien

1
@MDXF It's the only reason I'm still sane :P
Conor O'Brien

2

Ruby, 57 56 bytes

s=?.*4+' '*6;loop{$><<"[%s]\r"%s=s[-1]+s.chop;sleep 0.1}

Heavily influenced by other answers here.

Saved a byte thanks to @manatwork. Also apparently I have trouble counting characters -- I use ST3 and apparently it will include newlines in the count of characters in the line if you're not attentive.


How does it work? Does this assume that the input is stored in s?
Rɪᴋᴇʀ

@Riker He defines s at the beginning of the program as 4 .s and a few spaces
Conor O'Brien

s[0..8]s.chop
manatwork

2

Perl, 69 bytes

-3 bytes thanks to @Dom Hastings.

$_="....".$"x6;{print"\ec[$_]
";select$a,$a,!s/(.*)(.)/$2$1/,.1;redo}

That select undef,undef,undef,.1 is the shortest way to sleep less than 1 second in Perl, and it takes a lot of bytes...


Slightly longer (79 bytes), there is:

@F=((".")x4,($")x6);{print"\ec[",@F,"]\n";@F=@F[9,0..8];select$a,$a,$a,.1;redo}

Evening, managed to get this down a little more 69 (or 68 with a literal ESC): gist.github.com/dom111/e3ff41c8bc835b81cbf55a9827d69992 I feel like the tried to use !print but you need parens so it ends up the same length :/
Dom Hastings

@DomHastings Nice, thanks! You still know how to golf :D
Dada

2

Bash, 93 90 96 bytes

s="...      ....      ."
for((;;)){ for i in {0..9};do printf "\r[${s:10-i:10}]";sleep .1;done;}

view here

couldn't get nested { } in for syntax


I intended to post a quite similar solution, but is pointless now. But may give some inspiration to improve your: pastebin.com/Ld6rryNX
manatwork

much better! i'm not stealing from you, i knew i had to work out this one...
marcosm

edited, printf padding can't help in shortening s. wraping the string as @DigitalTrauma looks better.
marcosm

1

Groovy, 72 bytes

s="*"*4+" "*6
for(;;){print("["+s+"]"+"\n"*20);s=s[9]+s[0..8];sleep 100}

Explaination

s="*"*4+" "*6 //creates the string "****      "
for(;;){ //classic infinite loop
    print("["+s+"]"+"\n"*20) //prints the string with [ at the beginning and ] at the end. After that some newlines
    s=s[9]+s[0..8] //appends the final char of the string to beginning, creating a cycling illusion
    sleep 100 //100 ms delay
}

Didn't know a proper way to clear the console in Groovy/Java. If someone has a way of doing it, please tell me
staticmethod

1
You can use \r to return the cursor to the start of the line. It appears that at least several answers are doing this. From there, you could delete the *20, saving 3 bytes.
phyrfox

1

Haskell (Windows), 159 bytes

import System.Process
import Control.Concurrent
main=mapM id[do system"cls";putStrLn('[':["....      "!!mod(i-n)10|i<-[0..9]]++"]");threadDelay(10^5)|n<-[0..]]

Explanation

mapM id             sequentially perform each IO action in the following list
[                   start a list comprehension where each element is...
  do                  an IO operation where
    system "cls";       we clear the screen by calling the windows builtin "cls"
    putStrLn(           then display the string...
      '[':                with '[' appended to
      [                   a list comprehension where each character is...
        "....      "!!       the character in literal string "....      " at the index
        mod(i-n)10          (i - n) % 10
      |i<-[0..9]]         where i goes from 0 to 9
      ++"]"             and that ends with ']'
    );
    threadDelay(10^5)   then sleep for 100,000 microseconds (100 ms)
|n<-[0..]]          where n starts at 0 and increments without bound

Haskell's purity made generating the cycling dot pattern somewhat complex. I ended up creating a nested list comprehension that generated an infinite list of strings in the order they should be output, then went back added the appropriate IO operations.


1

Ruby, 61 bytes

If the spec were for the dots to scroll left instead of right, it would save 1 byte because rotate! with no arguments shifts the array once to the left.

s=[?.]*4+[' ']*6
loop{print ?[,*s,"]\r";s.rotate!9;sleep 0.1}

1

GNU sed (with exec extension), 64

Score includes +1 for -r flag.

s/^/[....      ]/
:
esleep .1
s/[^. ]*(.+)(.)].*/\c[c[\2\1]/p
b

1

c, 100

char *s="....      ....     ";main(i){for(i=0;;i=(i+9)%10)dprintf(2,"[%.10s]\r",s+i),usleep(3<<15);}

Why print to stderr using dprintf and not just use printf?
MD XF

@MDXF Because by default stderr is character buffered, whereas stdout is line buffered. Since I don't want to print any \n, then with printf() I'd have to explicitly fflush(stdout) as well as #include <stdio.h>
Digital Trauma

Good point, but actually, you wouldn't have to #include <stdio.h> to flush STDOUT. fflush(0) flushes all buffers.
MD XF

1
Save three bytes by renaming main to f, that counts.
MD XF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.