영원히로드 중… Windows 스타일


36

다음 지침에 따라 Windows 스타일 로딩 바를 만드십시오.

(이것은 Loading ... Forever 와 다릅니다 . )

출력은로 시작해야합니다 [.... ].

모든 틱마다 100ms를 기다린 다음 각 점을 한 문자 씩 오른쪽으로 이동해야합니다. 점이 10 번째 문자에 있으면 첫 번째 문자로 이동하십시오. 다시 출력하기 전에 화면을 비워야합니다. 출력은 다음과 같이 정렬됩니다.

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

.. 그러면 영원히 반복됩니다.

규칙

  • 이것은 이므로 가장 짧은 답변이 이깁니다 . 승리 된 답변도 받아 들일 것입니다.
  • 가능한 경우 로딩 바의 gif 파일을 제공하십시오.

1
예를 들어, 각 출력 전에 20 개의 줄 바꿈을 출력하여 화면을 '지울 수 있습니까?
Okx

2
@Okx 예. 언어에 화면을 지우는 다른 방법이없는 경우 가능합니다.
Matthew Roh

지연이 얼마나 많은 오류 일 수 있습니까? (예 : +-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에서 테스트하는 방법?
Pavel

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

편집 : @Luke 덕분에 12 14 바이트가 절약되었습니다.


애니메이션의 이름을 바꾸면 6 바이트를 절약 할 수 없습니까 b?
Luke

@Luke 나는 그것을 잊었다 믿을 수 없어 ...
Neil

ch마지막 에를 삭제하여 2 바이트를 더 절약 할 수 있습니다 . 0단위가 필요하지 않습니다.
Luke

2
방법 변경에 대한 <x><span>(그리고뿐만 아니라 CSS에서 : x이됩니다 spanx>x됩니다 span>*)? 을 저장 display:inline-block;하지만 비용은 15 바이트입니다. 따라서 총 6B가 저장됩니다.
Luke

1
@Luke 나는 디스플레이에 관심이 없지만를 반복하지 않기를 원합니다 position:absolute;.
Neil

12

PowerShell, 67 66 바이트

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

Beatcracker 덕분에 단축 생성자를 사용하여 -1

문자열을 마지막 문자가 나머지 문자 앞에 놓인 문자열의 복사본으로 바꾸고 화면을 지우고 인쇄 한 다음 100ms 동안 절전 모드로 전환합니다.

논리를 문자열 안에 넣지 않고 for 루프 생성자를 사용하여 많은 바이트를 절약했습니다.

여기에 이미지 설명을 입력하십시오


1
for루프 트릭에 대해 +1하고 about_Join을 다시 읽습니다 .
beatcracker

1
추신 :을 사용하여 1 바이트 더 골프를 칠 수 있습니다 $s='.'*4+' '*6.
beatcracker

@beatcracker 감사합니다-업데이트 :)
colsw

스크립트는로 시작하지 않습니다 [.... ]. 페널티없이 고칠 수 있습니다 :for($s='.'*4+' '*6){cls;"[$s]";$s=-join($s[,9+0..8]);sleep -m 100}
mazzy

10

파이썬 3 , 99 93 85 83 + 2 ( -u 플래그 ) 바이트

ovs 덕분에 -12 바이트, 완전히 휴먼 덕분에
-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. 이 세척 동작은 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 바이트로 줄일 수 있습니다.
Neil

나는 당신의 팁에 감사드립니다 :)!
stevefestl

ping 대신 timeout / t 0> nul 1.1 -n 1 -w 100> nul은 100ms +/- 250ms 타이밍 요구 사항 (일반적으로 약 25-100ms 여야 함 ) 내에 있으므로 몇 바이트를 절약 할 수 있습니다 ( ss64.com/ nt / timeout.html )
Liam Daly

1
또한 제거하고 @echo offdo로 바꾸면 do @(echo %%~p&timeout/t 0 >nul&cls)11 문자 (컴퓨터에서 200 바이트)를 절약해야합니다.
Liam Daly

8

매스 매 티카, 67 77 바이트

대괄호를 잊어 버렸을 때 +10 바이트.

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

1
실제로 Mathematica에는 Animate? : |
Mr. Xcoder

예, 주어진 변수에 대해 거의 모든 것을 애니메이션으로 만듭니다. :)
Ian Miller

이것은 대부분의 다른 답변이하는 사각형 괄호를 포함하지 않는 것 같습니다.
Mark S.

오 쥐, 충분히 보지 않았다. 확인 고정.
이안 밀러

8

C (GCC) , 126 (125) 124 123 122 121 119 118 117 114 115 바이트

이것은 비트 마스크를 사용하여 점의 위치를 ​​추적합니다.

이전에 5 칸만 출력했기 때문에 다른 바이트를 추가해야했습니다.

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

온라인으로 사용해보십시오!

여기에 이미지 설명을 입력하십시오


48
왜 명령 프롬프트 글꼴 Comic Sans MS?!?!?!
MD XF


6

자바 스크립트 (ES6) + HTML, 104 85 83 바이트

f=(s="....      ")=>setTimeout(f,100,s[9]+s.slice(0,9),o.value=`[${s}]`)
<input id=o
  • Johaninput 대신 에을 사용하라는 제안 덕분에 2 바이트가 절약되었습니다 pre.

시도 해봐

스 니펫에서 작동 >하려면 input태그를 닫아야합니다 .

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


1
사이에 10자가 없어야합니까 []?
Neil

네 말이 맞아, @Neil; 6 개의 공간이 있습니다. 만약 내가 눈으로 물건을 세려고한다면, 안경을 착용하는 것만으로도 가능합니다!
얽히고 설킨 Shaggy

1
당신은을 사용할 수 없습니다 <input>대신 <pre>하고 value대신 innerText?
Johan Karlsson

좋은 전화 @JohanKarlsson; 2 바이트를 절약합니다.
Shaggy

야! 이것은 같은 바이트 수입니다 : s='.... ';setInterval(f=>{o.value='[${s=s[9]+s.slice(0,9)}]'},100);<input id=o, 어쩌면 누군가가 그것을 개선 할 수 있습니다 (인용 부호를`로 대체)
Thomas W

5

누델 , 16 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
Kevin Cruijssen의

1
@KevinCruijssen, ETHProductions코드 골프를위한 언어 가 포함 된 훌륭한 목록을 보유하고 있습니다 :)
tkellehe

6
내가 당신을 outgolfed 생각했을 때, 나는 이미 두 번 솔루션을 golfed 한 알
Kritixi LITHOS을

@KritixiLithos, 나는 당신이 나를 이길 것이라고 무서워서 영원히 14 바이트 를 얻으려고 노력했습니다 . 그러나 지금 당신은 다시 가까이 있습니다! 댕 !!
tkellehe

1
@ nitro2k01 Noodel은 256 자로 된 자체 코드 페이지를 사용 하며 모두 자체 인코딩에서 단일 바이트로 저장됩니다. Jelly 또는 05AB1E 와 같은 다른 골프 언어와 유사 합니다. 이러한 문자를 기본 UTF-8 인코딩으로 저장하면 실제로 2 또는 3 바이트가되지만 자체 인코딩에서는 각각 1 바이트입니다.
케빈 크루이 센

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();}};
Kevin Cruijssen

문자열 보간이 더 이상 잘리지 않습니까? 뭔가 같은$"[{o}]\n"
마리

1
당신이 교체하는 경우 System.Console.Write(o)System.Console.Write(o+"\r")당신에게 제거 할 수 있습니다System.Console.Clear();
grabthefish


4

MATL , 24 바이트

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

MATL Online 에서 사용해보십시오 ! 또는 오프라인 컴파일러에서 gif를 참조하십시오.

여기에 이미지 설명을 입력하십시오

설명

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

귀하의 링크가 충돌하여 해당 링크를 죽일 수 없습니다.
Leaky Nun

1
@LeakyNun 정확히 충돌한다는 것은 무슨 뜻입니까? 그것은 나를 위해 일하고, 나는 그것을 죽일 수 있습니다. 때때로 시간 초과 문제가 있습니다. 시작되지 않으면 페이지 새로 고침
Luis Mendo

4

젤리 , 28 27 바이트

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

예제 실행

어떻게?

ṙ©-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%10예를 들어, 현재 인덱스 모듈 (10)에 의해로드 바 오프셋의 경우 i == 3, i % 103.이 동일한 3 개 차종에 의해로드 바 상쇄 같다 ". ....".
  • 오프셋 문자열이 printf형식 지정자로 전달 되면 필요한 경우 길이가 10으로 제한되고 필요한 경우 끝에 공백이 추가됩니다. 따라서 로딩 바는 항상 ~ 사이 [.... ][. ...]있습니다.

i;f(){for(;;i=++i%10)usleep(7500*dprintf(2,"\r[%-10.10s]",".... ...."-i+10));}작동해야합니다.
Christoph

1
훌륭한 골프! f(i){usleep(dprintf(2,"\r[%-10.10s]",".... ...."+i%10)<<13);f(i+9);}
Digital Trauma

@DigitalTrauma 코드의 공백이 올바르게 렌더링되지 않았습니다. 그러나 나는 당신이 무엇을 의미하는지 알고 도움을 주셔서 감사합니다!
MD XF

3

자바 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 :

여기에 이미지 설명을 입력하십시오


당신은 대체하여 선을 지울 수 printlnprint및 캐리지 리턴을 출력한다. IDE의 터미널에서는 작동하지 않을 수 있지만 다른 정상적인 터미널에서는 작동합니다.
Pavel

@Phoenix 캐리지 리턴이란 뜻 \r\n입니까? 어떻게합니까 System.out.print(someString+"\r\n);그것은 사용하는 것과 동일합니다 .. 콘솔을 취소 System.out.println(someString);그것은 단순히 다음 라인으로 이동 ..하지만 .. 인쇄 이전의 라인을 제거하지 않습니다 : S
케빈 Cruijssen

4
아니, 내 말은 \r하지 않고 \n. 그러면 "커서"가 줄의 시작 부분으로 재설정되므로 인쇄하면 해당 줄을 덮어 씁니다.
Pavel

물론 @Phoenix Ah. 감사. 내 답변을 수정하고 결과를 표시하기 위해 gif를 추가했습니다. 온라인 컴파일러 나 Eclipse IDE가이를 지원하지 않습니다 ..>.>
Kevin Cruijssen

3

파이썬 2 , 81 78 바이트

-1 바이트 (내가 사용 놓친 몰래 %s로드가 제출 될 때 거의 동일 파이썬 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)

예제 실행


출력을 어떻게 플러시합니까? 이것이 내가 대답에 python3을 사용하는 이유입니다 (python2에서 플러시하는 데 더 많은 바이트가 필요합니다)
Rod

@Rod는 \r줄을 덮어 쓰고 ,문자열 대신 튜플을 인쇄합니다. 어딘가에서 다시 보았고 전에도 사용했습니다.
Jonathan Allan

1
예, 이것이 제가하고있는 일이지만 출력물은 실시간으로 인쇄되지 않았습니다 (사용해야합니다 sys.stdout.flush())
Rod

1
범인을 찾았습니다 : 내 우분투 터미널 : c
Rod

3

이동 , 150 145 132 129 124 바이트

sudee 덕분에 -5 바이트

나는 충분히 보지 못하는 것 같은데 여기로 가라 ... 그러나 나의 대답은 C를 토핑하고있다. pls halp golf?

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

온라인으로 사용해보십시오!


1
하지 이동에 대해 잘 알고,하지만 난 당신이 변환 할 수 있습니다 생각할 겁니다 100000000하는 10^85 바이트를 저장합니다.
그랜트 밀러

@ goatmeal 나는 그것을 시도했지만 분명히 비트 부정입니다. 나는 또한 10**8오류를주는 것을 시도했다 .
완전히 인간적인

3
과학적 표기법을 사용할 수 있습니다 1e8..
sudee

1
@ sudee Aha, 그것이 큰 숫자를 사용하는 방법 일 것입니다. 감사!
완전히 인간적인

2
@MDXF 나는 다르게, 나는 내 대답이되고있는 것을 의미한다는 말로 표현 했어야 아웃 golfed C.에 의해
totallyhuman

3

VBA 32 비트, 159 157 143 141 134 바이트

VBA에는 1 초 미만의 시간 동안 대기 할 수있는 내장 함수가 없으므로 함수를 다음에서 선언해야합니다. kernel32.dll

32 비트 선언문 (41 바이트)

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

64 비트 선언문 (49 바이트)

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

또한 DoEvents무한 루프로 인해 Excel이 응답하지 않는 것처럼 표시되지 않도록 플래그를 포함해야합니다 . 최종 기능은 서브 루틴으로 VBE 즉시 창으로 입력 및 출력을받지 않습니다.

즉시 창 기능, 93 바이트

A1ActiveSheet 범위의 입력 및 출력을받지 않는 익명의 VBE 즉시 창 기능

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

이전 버전, 109 바이트

VBE 즉시 창으로 입력 및 출력을받지 않는 즉시 창 기능.

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

언 골프 팅 및 포맷

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 바이트

올바르게 계산하기위한 -30 바이트

즉시 창 기능으로 변환하기위한 -14 바이트

산출

아래의 gif는 즉각적인 창 기능으로 이것을 다시 기록하기에는 너무 게으 르기 때문에 전체 서브 루틴 버전을 사용합니다.

VBA 로딩 GIF


a출력 상단에 무엇입니까 ?
MD XF

a위에 나열된 서브 루틴을 실행하기위한 호출 인 @MDXF ; 이것은 기능면에서 더 장황하다 call a().
Taylor Scott

아, 내 나쁜. 잘못된 제출을 찾고 있습니다. 그렇다면 당신의 것이 아니므로 +1
MD XF

2

05AB1E , 23 바이트

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

온라인으로 사용해보십시오!

설명

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

배치, 99 98 바이트

SteveFest 덕분에 1 바이트를 절약했습니다!

( \r코드에서 제거 할 수는 있지만 배치 골프 정신에서는 그렇지 않습니다.)

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

LICEcap으로 녹음

첫 번째 줄 다음에 4 개의 공백이 있습니다.

주요 논리는 문자열을 수정하는 것입니다. %s:~-1%의 마지막 문자 %s%%s:~0,-1%제외한 모든의 마지막 문자입니다 %s%. 따라서 마지막 문자를 문자열 앞쪽으로 옮기면 문자열이 회전합니다.


Aw ... 나는 이것을 찾고 있었다 ...
stevefestl

1
골프 1 바이트 : 0변수 부분 문자열에서를 제거 할 수 있습니다
stevefestl

사용 cmder합니다. 좋은 작업.
MD XF

1
@SteveFest 허, 틸. 감사!
코너 오브라이언

1
@MDXF 그것은 여전히 ​​제정신 인 유일한 이유입니다 : P
Conor O'Brien

2

루비, 57 56 바이트

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

다른 답변에 크게 영향을 받았습니다.

@manatwork 덕분에 바이트를 절약했습니다. 또한 문자 수를 계산하는 데 어려움이 있습니다 .ST3을 사용하며주의를 기울이지 않으면 줄의 문자 수에 개행 문자가 포함됩니다.


어떻게 작동합니까? 이것은 입력이에 저장되어 있다고 가정합니까 s?
Rɪᴋᴇʀ

@Riker 그는 s프로그램의 시작 부분에서 4 .초와 몇 개의 공백으로 정의합니다
Conor O'Brien

s[0..8]s.chop
manatwork

2

펄, 69 바이트

@Dom Hastings 덕분에 -3 바이트 .

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

이것이 select undef,undef,undef,.1Perl에서 1 초 미만으로 잠자는 가장 짧은 방법이며 많은 바이트가 필요합니다 ...


약간 더 길다 (79 바이트).

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

: 저녁은 조금 (리터럴 ESC 또는 68)보다 69 다운이를 얻을 수 있었다 gist.github.com/dom111/e3ff41c8bc835b81cbf55a9827d69992 내가 사용하려고 같은 느낌을 !print하지만이 같은 길이를 끝 그래서 당신은 괄호가 필요합니다 /를
돔 헤이스팅스

@DomHastings 감사합니다! 당신은 여전히 ​​골프하는 방법을 알고 있습니다 : D
Dada

2

세게 때리다, 93 90 96 바이트

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

여기를보십시오

구문에 중첩 된 {}을 (를) 가져올 수 없습니다.


나는 비슷한 솔루션을 게시하려고했지만 지금은 의미가 없습니다. 그러나 pastebin.com/Ld6rryNX
manatwork

훨씬 낫다! 난 당신에게서 훔치고 있지 않다, 나는 내가 이것을 해결해야한다는 것을 알았다 ...
marcosm

편집 된 printf 패딩은 s 단축에 도움이되지 않습니다. @DigitalTrauma로 문자열을 감싸는 것이 더 좋습니다.
marcosm

1

그루비, 72 바이트

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

설명

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
}

Groovy / Java에서 콘솔을 지우는 적절한 방법을 몰랐습니다. 누군가 그것을하는 방법이 있다면, 알려주세요
staticmethod

1
\r커서를 줄의 시작 부분으로 되돌릴 수 있습니다 . 적어도 몇 가지 답변이 이것을하고있는 것 같습니다. 여기에서 * 20을 삭제하여 3 바이트를 절약 할 수 있습니다.
phyrfox

1

하스켈 (Windows), 159 바이트

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

설명

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의 순도는 사이클링 도트 패턴 생성을 다소 복잡하게 만들었습니다. 출력 순서대로 무한 문자열 목록을 생성하는 중첩 목록 이해를 작성하고 적절한 IO 연산을 다시 추가했습니다.


1

루비, 61 바이트

스펙이 점이 오른쪽이 아닌 왼쪽으로 스크롤 rotate!되도록 설정 한 경우 인수없이 배열을 한 번 왼쪽으로 이동 하므로 1 바이트를 절약 합니다.

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

1

GNU sed (확장자 포함), 64

점수는 -r깃발에 대해 +1을 포함 합니다.

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

stderr사용 dprintf하지 않고 사용하여 인쇄 printf합니까?
MD XF

@MDXF 기본적 stderr으로 문자 버퍼링되는 반면 stdout라인 버퍼링 되기 때문 입니다. 나는 어떤 것도 인쇄하고 싶지 않기 때문에 \n다음과 같이 printf()명시 적 fflush(stdout)으로 그리고 다음과 같이 명시해야합니다.#include <stdio.h>
Digital Trauma

좋은 지적이지만 실제로 #include <stdio.h>STDOUT을 플러시 할 필요는 없습니다 . fflush(0)모든 버퍼를 플러시합니다.
MD XF

1
로 이름 main을 바꾸어 3 바이트를 절약하십시오 f.
MD XF
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.