Đang tải kiểu Windows mãi mãi


36

Tạo một thanh Tải kiểu Windows theo các hướng dẫn sau.

(lưu ý rằng điều này khác với Đang tải ... Mãi mãi )

Đầu ra của bạn nên bắt đầu bằng [.... ].

Mỗi đánh dấu, bạn nên đợi 100 ms, sau đó di chuyển từng dấu chấm theo một ký tự bên phải. nếu dấu chấm nằm trên ký tự thứ mười, di chuyển nó đến ký tự đầu tiên. Lưu ý rằng bạn nên xóa màn hình trước khi xuất ra một lần nữa. Đầu ra được sắp xếp như sau:

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

..Sau đó vòng lặp mãi mãi.

Quy tắc

  • Đây là , vì vậy câu trả lời ngắn nhất thắng tôi nghi ngờ tôi thậm chí sẽ chấp nhận câu trả lời thắng
  • Vui lòng cung cấp tệp gif của thanh tải đang hoạt động nếu có thể.

1
Chúng ta có thể xuất ra hai mươi dòng mới trước mỗi đầu ra để 'xóa' màn hình không?
Okx

2
@Okx Có, nếu ngôn ngữ của bạn không có cách nào khác để xóa màn hình.
Matthew Roh

Độ trễ có thể là bao nhiêu? (Ví dụ + - 0,5 giây) Tôi đề nghị lỗi 250 mili giây ....
stevefestl

1
Tôi có thể đề nghị không bao gồm thời gian trễ cố định cho các thách thức trong tương lai không? Tôi thấy nó xuất hiện trong rất nhiều thử thách gần đây và mỗi lần tôi viết cùng một bản tóm tắt không thể hiểu được để làm cho hệ thống chờ đợi trong một phần nghìn giây.
xnor

2
Là việc sử dụng \rđược phép, thay vì xóa màn hình theo nghĩa đen?
phyrfox

Câu trả lời:


19

V, 17 16 15 byte

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

<esc>0x1b.

Và hexdump:

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

Giải trình

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


Làm thế nào để kiểm tra trong Vim?
Pavel

@Phoenix i.... <esc>qq:sl 100m<CR>$X|P@qq@qnên hoạt động ( <esc>rõ ràng là phím thoát và <CR>là nguồn cấp dữ liệu) (có 6 dấu cách sau 4 dấu chấm)
Kritixi Lithos

3
Vui mừng khi thấy các chức năng là hữu ích. Câu trả lời hay BTW :)
DJMcMayhem

19

CSS / HTML, 202 190 186 + 45 = 247 235 231 byte

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>          ]

Chỉnh sửa: Đã lưu 12 14 byte nhờ @Luke.


Bạn không thể lưu 6 byte bằng cách đổi tên hoạt hình thành một cái gì đó như thế bnào?
Lu-ca

@Luke Tôi không thể tin rằng tôi đã quên làm điều đó ...
Neil

Bạn có thể lưu thêm 2 byte bằng cách bỏ chđoạn cuối; 0không cần một đơn vị.
Luke

2
Làm thế nào về việc thay đổi <x>thành <span>(và trong CSS là: xtrở thành spanx>xtrở thành span>*)? Điều đó tiết kiệm display:inline-block;, nhưng chi phí chỉ 15 byte. Vì vậy, tổng cộng 6B được lưu.
Lu-ca

1
@Luke Tôi không quan tâm đến màn hình nhưng tôi muốn tránh lặp lại position:absolute;.
Neil

12

PowerShell, 67 66 byte

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

-1 bằng cách sử dụng hàm tạo rút gọn nhờ Beatcracker

thay thế chuỗi bằng một bản sao của chuỗi nơi char cuối cùng được đặt trước các ký tự còn lại, xóa màn hình, in nó và sau đó ngủ trong 100 ms.

đã lưu rất nhiều byte bằng cách sử dụng hàm tạo vòng lặp for thay vì bọc logic bên trong chuỗi.

nhập mô tả hình ảnh ở đây


1
+1 cho forthủ thuật lặp và khiến tôi đọc lại about_Join .
beatcracker

1
PS Bạn có thể chơi thêm một byte bằng cách sử dụng $s='.'*4+' '*6.
beatcracker

@beatcracker cảm ơn vì điều đó - đã cập nhật :)
colsw

Kịch bản không bắt đầu bằng [.... ]. Bạn có thể sửa nó mà không bị phạt:for($s='.'*4+' '*6){cls;"[$s]";$s=-join($s[,9+0..8]);sleep -m 100}
mazzy 6/11/18

10

Python 3 , 99 93 85 83 + 2 ( cờ -u ) byte

-12 byte nhờ vào các
byte -2 byte hoàn toàn nhờ vào con người

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

Hãy thử trực tuyến!


Tại sao bạn có flush=True? Nó hoạt động mà không cần cho tôi
L3viathan

3
@ L3viathan vì thiết bị đầu cuối (ubfox) của tôi không hoạt động. Hành vi xả nước này phụ thuộc vào hệ điều hành = /
Rod

1
Lưu một số byte vớiprint(end='\r[%s]'%s,flush=1)
ovs

2
Bạn có thể loại bỏ hoàn toàn tuôn ra bằng cách sử dụng -ucờ dòng lệnh. Câu hỏi SO liên quan
ovs

1
Bạn cũng có thể lưu một số byte với s[9]+s[:9].
hoàn toàn là

10

Lô Windows, 201 181 byte

Hóa ra sử dụng phương thức trường học cũ thực sự tiết kiệm byte!

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

Chú thích:

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");
}

QUÀ TẶNG!

Xin lưu ý rằng trình ghi GIF của tôi đã bỏ qua một vài khung hình, làm cho thanh tải nhảy lên :(


1
Thay vì tính toán số lượng dấu chấm, nếu bạn chỉ giữ một biến có dấu chấm và dấu cách và thực hiện thao tác chuỗi trên đó, bạn có thể giảm xuống còn 100 byte.
Neil

Tôi sẽ thử làm việc này, cảm ơn lời khuyên của bạn :)!
stevefestl

thời gian chờ / t 0> nul thay vì ping 1.1 -n 1 -w 100> nul sẽ nằm trong yêu cầu thời gian 100ms +/- 250ms (nên ở khoảng 25 - 100ms bình thường) để có thể lưu một vài byte ở đó ( ss64.com/ nt / timeout.html )
Liam Daly

1
Đồng thời xóa @echo offvà thay thế việc làm bằng do @(echo %%~p&timeout/t 0 >nul&cls)cũng sẽ hoạt động và sẽ lưu 11 ký tự (200 byte trên máy tính của tôi)
Liam Daly

8

Toán học, 67 77 byte

+10 Byte khi tôi quên dấu ngoặc vuông.

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

1
Thực sự, Mathematica có tích hợp Animate? : |
Ông Xcoder

Yup, nó sẽ hoạt hình bất cứ thứ gì qua một biến nhất định. :)
Ian Miller

Điều này dường như không bao gồm dấu ngoặc hình chữ nhật mà hầu hết các câu trả lời khác làm.
Đánh dấu S.

Oh chuột, không nhìn kỹ đủ. Ok cố định.
Ian Miller

8

C (gcc) , 126 125 124 123 122 121 119 118 117 114 115 byte

Cái này sử dụng bitmask để theo dõi vị trí của các chấm.

Tôi đã phải thêm một byte khác vì tôi chỉ xuất ra 5 khoảng trắng trước đó.

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("]"));}

Hãy thử trực tuyến!

nhập mô tả hình ảnh ở đây


48
TẠI SAO phông chữ nhắc lệnh của bạn Comic Sans MS?!?!?!
MD XF


6

JavaScript (ES6) + HTML, 104 85 83 byte

f=(s="....      ")=>setTimeout(f,100,s[9]+s.slice(0,9),o.value=`[${s}]`)
<input id=o
  • Đã lưu 2 byte nhờ đề xuất của Johan rằng tôi sử dụng inputthay vì a pre.

Thử nó

Đòi hỏi một kết thúc >trên inputthẻ để chức năng trong một số câu liên quan.

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


1
Không nên có 10 ký tự giữa các []s?
Neil

Bạn nói đúng, @Neil; có 6 khoảng trống - nếu tôi sẽ đếm mọi thứ bằng mắt, điều tối thiểu tôi có thể làm là đeo kính!
Xù xì

1
Bạn không thể sử dụng <input>thay thế <pre>và sau đó valuethay vì innerText?
Johan Karlsson

Cuộc gọi tốt, @JohanKarlsson; tiết kiệm 2 byte.
Xù xì

Chào! Đây là cùng một số byte : s='.... ';setInterval(f=>{o.value='[${s=s[9]+s.slice(0,9)}]'},100);<input id=o, có lẽ ai đó có thể cải thiện nó (thay thế dấu ngoặc kép bằng `)
Thomas W

5

Noodel , 16 15 14 13 byte

[CỤ'Ṁ ~ ððĐ] t

] ʠ [Đ. × 4¤ × 6⁺ḷẸḍt

] .ȧ [ėĐḷẸḍt

Thử nó:)


Làm thế nào nó hoạt động

]ʠ⁶¤⁴.ȧ[ėÐḷẸḍ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.

Cập nhật

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

Thử nó:)

Không biết tại sao điều này làm tôi mất một thời gian để nghĩ về. Dù sao, điều này đặt nó ở 13 byte .

[Ð]ıʠ⁶¤⁴.ḷėḍ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
Chưa bao giờ nghe nói về Noodel trước đây, nhưng nó dường như là công cụ phù hợp cho công việc phù hợp! +1
Kevin Cruijssen

1
@KevinCruijssen, ETHSản phẩm có một danh sách tốt với các ngôn ngữ để chơi gôn mã :)
tkellehe

6
Ngay khi tôi nghĩ rằng tôi đã vượt qua bạn, tôi nhận thấy bạn đã đánh golf giải pháp của bạn hai lần
Kritixi Lithos

@KritixiLithos, tôi sợ bạn sẽ đánh tôi nên tôi đã dành mãi mãi để cố gắng đạt được 14 byte . Nhưng, bây giờ bạn lại gần !! Đăng !!
tkellehe

1
@ nitro2k01 Noodel sử dụng trang mã riêng với 256 ký tự , tất cả được lưu dưới dạng một byte trong mã hóa của riêng họ. Tương tự như một số ngôn ngữ chơi gôn khác, như Jelly hoặc 05AB1E . Nếu bạn lưu các ký tự này dưới dạng mã hóa UTF-8 mặc định, chúng thực sự sẽ là 2 hoặc 3 byte thay vào đó, nhưng trong mã hóa riêng của chúng, mỗi ký tự là 1 byte.
Kevin Cruijssen

4

PHP, 67 byte

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

miễn bình luận


4

C #, 162 157 byte

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

hoặc như toàn bộ chương trình cho 177 byte

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 Một cái gì đó để chơi gôn: for(string o="[.... ]";;)có thể được chơi gôn var o="[.... ]";for(;;). Hoặc bạn có thể cho chúng tôi một cổng câu trả lời Java 7 của tôi để chơi golf tổng cộng thêm:()=>{var o=".... "for(;;){o=(o+o).Substring(9,10);System.Console.Write("["+o+"]\n");System.Threading.Thread.Sleep(100);System.Console.Clear();}};
Kevin Cruijssen

Nội suy chuỗi sẽ cắt bớt nữa? Một cái gì đó như$"[{o}]\n"
Marie

1
Nếu bạn thay thế System.Console.Write(o)bằng System.Console.Write(o+"\r")bạn có thể xóaSystem.Console.Clear();
lấy


4

MATL , 24 byte

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

Hãy thử nó tại MATL Online! Hoặc xem ảnh gif từ trình biên dịch ngoại tuyến:

nhập mô tả hình ảnh ở đây

Giải trình

`        % 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)

Liên kết của bạn gặp sự cố, có nghĩa là tôi không thể giết nó.
Nữ tu bị rò rỉ

1
@LeakyNun Ý bạn là gì chính xác là nó bị treo? Nó làm việc cho tôi, và tôi có thể giết nó. Đôi khi có vấn đề thời gian chờ. Nếu nó không bắt đầu, hãy thử làm mới trang
Luis Mendo

4

Thạch , 28 27 byte

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

Chạy ví dụ

Làm sao?

ṙ©-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 byte

Đã lưu 7 8 byte nhờ Digital Trauma .

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

Hoặc, nếu hệ thống của bạn stdout bạn không cần phải xóa sau mỗi lần ghi mà không có dòng mới:

C (gcc), 70 byte

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

Làm thế nào nó hoạt động

  • usleep( ngủ cho giá trị trả lại tiếp theo trong micro giây.
  • dprintf(2,in ra mô tả tập tin 2, hoặc stderr. Điều này là cần thiết bởi vì trong khi stdoutđược đệm dòng (có nghĩa là đầu ra sẽ không hiển thị cho đến khi nó in một dòng mới), stderrlà bộ đệm ký tự (tất cả đầu ra được hiển thị ngay lập tức).
  • "\r in một trở lại vận chuyển (xóa dòng hiện tại).
  • [%-10.10s]"là công printfcụ xác định định dạng cho một chuỗi có độ dài chính xác 10 (bất kể chuỗi nào được cung cấp, đầu ra sẽ luôn là một chuỗi có độ dài 10), được đệm bằng khoảng trắng ở bên phải nếu cần. Điều này sẽ được kèm theo dấu ngoặc.
  • ".... ...." là thanh tải.
  • +i%10bù đắp thanh tải theo chỉ số hiện tại modulo 10. Ví dụ: if i == 3, i % 10bằng 3. Bù trừ thanh tải bằng 3 làm cho nó bằng ". ....".
  • Khi chuỗi offset-ed được chuyển đến bộ printfxác định định dạng, nó sẽ giới hạn ở độ dài 10 nếu cần thiết và thêm khoảng trắng vào cuối nếu cần. Do đó, thanh tải sẽ luôn ở giữa [.... ][. ...].

i;f(){for(;;i=++i%10)usleep(7500*dprintf(2,"\r[%-10.10s]",".... ...."-i+10));}nên làm việc.
Christoph

1
Chơi golf tuyệt vời! Tiết kiệm thêm 1 byte vớif(i){usleep(dprintf(2,"\r[%-10.10s]",".... ...."+i%10)<<13);f(i+9);}
Chấn thương kỹ thuật số

@DigitalTrauma Các khoảng trắng trong mã của bạn không được hiển thị đúng. Tuy nhiên, tôi hiểu ý của bạn và cảm ơn vì sự giúp đỡ!
MD XF

3

Java 7, 139 124 byte

String s="....      ";void c()throws Exception{System.out.print("["+s+"]\r");s=(s+s).substring(9,19);Thread.sleep(100);c();}
  • Đề cập đến \rlời cảm ơn đến @Phoenix .

Quay trở lại vận chuyển \rđặt lại 'con trỏ' trở lại đầu dòng, sau đó có thể được ghi đè. Thật không may, các trình biên dịch trực tuyến cũng như IDE Eclipse không hỗ trợ điều này, vì vậy tôi đã thêm một gif ở cuối câu trả lời này để hiển thị nó từ Windows Command Prompt.

Hãy thử nó ở đây.(Được sửa đổi một chút để bạn không phải chờ hết thời gian chờ trước khi xem kết quả. Ngoài ra, TIO không hỗ trợ trả lại vận chuyển, vì vậy mọi dòng được in mà không ghi đè lên dòng trước đó.)

Giải trình:

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 đầu ra:

nhập mô tả hình ảnh ở đây


Bạn có thể xóa dòng bằng cách thay thế printlnbằng printvà xuất ra một vận chuyển trở lại. Có thể không hoạt động trong thiết bị đầu cuối IDE của bạn, nhưng nó sẽ hoạt động trong bất kỳ thiết bị lành mạnh nào khác.
Pavel

@Phoenix Bằng xe ngựa trả lại ý bạn \r\n? Làm thế nào để System.out.print(someString+"\r\n);xóa bảng điều khiển .. Nó giống như sử dụng System.out.println(someString);.. Nó chỉ đơn giản là đi đến dòng tiếp theo, nhưng không xóa bất kỳ dòng nào trước đó được in ..: S
Kevin Cruijssen

4
Không, ý tôi là \rkhông có \n. Điều đó đặt lại "con trỏ" về đầu dòng để in bất cứ thứ gì sẽ ghi đè lên dòng đó.
Pavel

@Phoenix Ah tất nhiên rồi. Cảm ơn. Sửa đổi câu trả lời của tôi và thêm một gif để hiển thị kết quả. Các trình biên dịch trực tuyến quá tệ cũng như IDE Eclipse không hỗ trợ điều này ..>.>
Kevin Cruijssen

3

Python 2 , 81 78 byte

-1 byte (nhận thấy tôi đã bỏ lỡ việc sử dụng %skhi Rod gửi phiên bản Python 3 gần như giống hệt nhau cùng lúc!)
-2 byte (sử dụng ý tưởng hoàn toàn của con người - thay thế s[-1]+s[:-1]bằng s[9]+s[:9])

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

Chạy ví dụ


Làm thế nào nó tuôn ra đầu ra? đây là lý do tại sao tôi sử dụng python3 cho câu trả lời của mình (sẽ mất nhiều byte hơn để xóa trên python2)
Rod

@Rod \rghi đè lên dòng và ,làm cho nó in một tuple chứ không phải là một chuỗi - Tôi đã thấy nó một lúc trước ở đâu đó và cũng đã sử dụng nó trước đây.
Jonathan Allan

1
Vâng, đây là những gì tôi đã làm, nhưng đầu ra không được in trong thời gian thực (phải sử dụng sys.stdout.flush())
Rod

1
Tìm ra thủ phạm: thiết bị đầu cuối Ubuntu của tôi: c
Rod

3

Đi , 150 145 132 129 124 byte

-5 byte nhờ sudee.

Tôi cảm thấy như mình không thấy đủ Đi đến đây ... Nhưng câu trả lời của tôi là đứng đầu C vì vậy ... xin vui lòng chơi golf?

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

Hãy thử trực tuyến!


1
Không quen thuộc với Go, nhưng tôi sẽ cho rằng bạn có thể chuyển đổi 100000000để 10^8tiết kiệm 5 byte.
Grant Miller

@goatmeal Tôi đã thử nhưng nó dường như phủ định bitwise. Tôi cũng đã thử 10**8mà cũng có lỗi.
hoàn toàn là

3
Bạn có thể sử dụng ký hiệu khoa học : 1e8.
sudee

1
@sudee Aha, đó sẽ là cách sử dụng số lượng lớn. Cảm ơn!
hoàn toàn là

2
@MDXF tôi nên đã phrased rằng cách khác nhau, tôi có nghĩa là câu trả lời của tôi đang được out-golfed bởi C.
totallyhuman

3

VBA 32-bit, 159 157 143 141 134 byte

VBA không có chức năng tích hợp cho phép chờ trong khoảng thời gian dưới một giây, vì vậy chúng tôi phải khai báo một chức năng từ kernel32.dll

Tuyên bố khai báo 32 bit (41 byte)

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

Tuyên bố khai báo 64 bit (49 byte)

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

Ngoài ra, chúng tôi phải bao gồm một DoEventscờ để tránh vòng lặp vô hạn làm cho Excel xuất hiện dưới dạng không phản hồi. Hàm cuối cùng là một chương trình con không có đầu vào và đầu ra cho cửa sổ ngay lập tức VBE.

Chức năng cửa sổ ngay lập tức, 93 byte

Chức năng cửa sổ ngay lập tức VBE ẩn danh không có đầu vào và đầu ra cho phạm vi A1trên ActiveSheet

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

Phiên bản cũ, 109 byte

Chức năng cửa sổ ngay lập tức không có đầu vào và đầu ra cho cửa sổ ngay lập tức VBE.

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

Ung dung và định dạng

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 byte để xóa khoảng trắng

-30 byte để đếm chính xác

-14 Byte để chuyển đổi sang chức năng cửa sổ ngay lập tức

Đầu ra

Gif dưới đây sử dụng phiên bản chương trình con đầy đủ vì tôi quá lười để điều chỉnh lại cái này với chức năng cửa sổ ngay lập tức.

Tải VBA Gif


Cái gì aở đầu sản phẩm?
MD XF

@MDXF đó là lệnh gọi để chạy chương trình con anhư được liệt kê ở trên; đây là chức năng tương đương với dài dòng hơn call a().
Taylor Scott

Ah, xấu của tôi. Chỉ cần tìm kiếm đệ trình xấu. Sau đó, bạn không phải vậy, nên +1
MD XF

2

05AB1E , 23 byte

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

Hãy thử trực tuyến!

Giải trình

'.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

Hàng loạt, 99 98 byte

Đã lưu 1 byte nhờ SteveFest!

(Tôi có thể xóa \rmã, nhưng theo tinh thần chơi golf hàng loạt, tôi sẽ không.)

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

Ghi lại với LICEcap

Có bốn khoảng trống sau dòng đầu tiên.

Logic chính là sửa đổi chuỗi. %s:~-1%là nhân vật cuối cùng của %s%%s:~0,-1%là tất cả, nhưng là nhân vật cuối cùng của %s%. Vì vậy, chúng tôi đang di chuyển ký tự cuối cùng ra phía trước chuỗi, làm xoay chuỗi.


Aw ... Tôi đã tìm kiếm điều này ...
stevefestl

1
Golf 1 byte: 0chuỗi con trong biến có thể được loại bỏ
stevefestl

Bạn sử dụng cmder. Công việc tốt.
MD XF

1
@SteveFest Huh, TIL. Cảm ơn!
Conor O'Brien

1
@MDXF Đó là lý do duy nhất tôi vẫn lành mạnh: P
Conor O'Brien

2

Ruby, 57 56 byte

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

Bị ảnh hưởng nặng nề bởi các câu trả lời khác ở đây.

Đã lưu một byte nhờ @manatwork. Ngoài ra rõ ràng tôi gặp khó khăn khi đếm các ký tự - Tôi sử dụng ST3 và rõ ràng nó sẽ bao gồm các dòng mới trong số lượng ký tự trong dòng nếu bạn không chú ý.


Làm thế nào nó hoạt động? Điều này có cho rằng đầu vào được lưu trữ trong s?
Rɪᴋᴇʀ

@Riker Anh ấy định nghĩa skhi bắt đầu chương trình là 4 .giây và một vài khoảng trống
Conor O'Brien

s[0..8]s.chop
thao tác

2

Perl, 69 byte

-3 byte nhờ @Dom Hastings .

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

Đó select undef,undef,undef,.1là cách ngắn nhất để ngủ ít hơn 1 giây trong Perl và phải mất rất nhiều byte ...


Hơi dài hơn (79 byte), có:

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

Buổi tối, quản lý để có được điều này xuống một chút hơn 69 (hoặc 68 với một ESC đen): gist.github.com/dom111/e3ff41c8bc835b81cbf55a9827d69992 Tôi cảm thấy như đã cố gắng để sử dụng !printnhưng bạn cần dấu ngoặc để nó kết thúc cùng độ dài: /
Dom Hastings

@DomHastings Đẹp, cảm ơn! Bạn vẫn biết chơi gôn: D
Dada

2

Bash, 93 90 96 byte

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

xem tại đây

không thể lồng {} vào cú pháp


Tôi dự định đăng một giải pháp khá giống nhau, nhưng bây giờ là vô nghĩa. Nhưng có thể cung cấp một số nguồn cảm hứng để cải thiện của bạn: pastebin.com/Ld6rryNX
manatwork

tốt hơn nhiều! Tôi không ăn cắp từ bạn, tôi biết tôi phải làm việc này ...
marcosm

chỉnh sửa, phần đệm printf không thể giúp rút ngắn s. gói chuỗi như @DigitalTrauma trông tốt hơn.
marcosm

1

Groovy, 72 byte

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

Giải thích

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
}

Không biết một cách thích hợp để xóa bảng điều khiển trong Groovy / Java. Nếu ai đó có cách làm, xin vui lòng cho tôi biết
staticmethod

1
Bạn có thể sử dụng \rđể trả con trỏ về đầu dòng. Có vẻ như ít nhất một số câu trả lời đang làm điều này. Từ đó, bạn có thể xóa * 20, tiết kiệm 3 byte.
phyrfox

1

Haskell (Windows), 159 byte

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..]]

Giải trình

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

Độ tinh khiết của Haskell khiến việc tạo ra mô hình chấm đạp xe hơi phức tạp. Cuối cùng tôi đã tạo ra một sự hiểu biết danh sách lồng nhau tạo ra một danh sách các chuỗi vô hạn theo thứ tự chúng sẽ được xuất ra, sau đó quay lại thêm các hoạt động IO thích hợp.


1

Ruby, 61 byte

Nếu thông số kỹ thuật là để các chấm cuộn sang trái thay vì phải, nó sẽ tiết kiệm được 1 byte vì rotate!không có đối số nào dịch chuyển mảng một lần sang trái.

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


1

c, 100

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

Tại sao in để stderrsử dụng dprintfvà không chỉ sử dụng printf?
MD XF

@MDXF Bởi vì theo mặc định stderrlà bộ đệm ký tự, trong khi đó stdoutlà bộ đệm dòng. Vì tôi không muốn in bất kỳ \n, sau đó với printf()tôi phải rõ ràng fflush(stdout)cũng như#include <stdio.h>
Chấn thương kỹ thuật số

Điểm tốt, nhưng thực sự, bạn sẽ không phải #include <stdio.h>tuôn ra STDOUT. fflush(0)xả tất cả bộ đệm.
MD XF

1
Lưu ba byte bằng cách đổi tên mainthành f, đó là tính.
MD XF
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.