हमेशा के लिए लोड हो रहा है ... विंडोज शैली


36

निम्नलिखित निर्देशों के द्वारा विंडोज स्टाइल लोडिंग बार बनाएं।

(ध्यान दें कि यह लोडिंग ... फॉरएवर से अलग है )

आपका आउटपुट शुरू होना चाहिए [.... ]

प्रत्येक टिक, आपको 100 एमएस इंतजार करना चाहिए, फिर प्रत्येक डॉट्स को एक वर्ण दाईं ओर ले जाएं। यदि बिंदु दसवें वर्ण पर है, तो इसे पहले पर ले जाएँ। ध्यान दें कि आपको फिर से आउटपुट करने से पहले स्क्रीन को साफ करना चाहिए। आउटपुट निम्नलिखित के रूप में दिया गया है:

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

..जब यह हमेशा के लिए बंद हो जाता है।

नियम

  • यह , इसलिए सबसे छोटा उत्तर जीतता है मुझे संदेह है कि मैं भी जीतने वाला उत्तर स्वीकार कर लूंगा
  • यदि संभव हो तो कार्रवाई में लोडिंग बार की एक जिफ़ फ़ाइल प्रदान करें।

1
क्या हम आउटपुट, प्रत्येक आउटपुट से पहले बीस न्यूलाइन स्क्रीन को 'क्लियर' करने के लिए कह सकते हैं?
ओकेक्स

2
@ ओकेएक्स हां, अगर आपकी भाषा में स्क्रीन को साफ करने का कोई अन्य तरीका नहीं है।
मैथ्यू रो

विलंब में कितनी त्रुटि हो सकती है? (जैसे + - 0.5 सेकंड) मैं 250 मिलीसेकंड त्रुटि का सुझाव
दूंगा

1
क्या मैं सुझाव दे सकता हूं कि भविष्य की चुनौतियों पर निश्चित समय की देरी शामिल नहीं है? मुझे लगता है कि यह बहुत सी हालिया चुनौतियों पर दिखाई दिया है, और हर बार मैं सिस्टम को एन मिलीसेकंड प्रतीक्षा करने के लिए एक ही असंगत बॉयलरप्लेट लिखता हूं।
xnor

2
क्या \rसचमुच स्क्रीन को साफ करने के बजाय अनुमति का उपयोग किया गया है?
फेयरफॉक्स

जवाबों:


19

वी, 17 16 15 बाइट्स

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

<esc>है 0x1b

और हेक्सडम्प:

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


विम में परीक्षण कैसे करें?
पावेल

@Phoenix i.... <esc>qq:sl 100m<CR>$X|P@qq@qको काम करना चाहिए ( <esc>स्पष्ट रूप से पलायन कुंजी है और <CR>एक लाइनफीड है) (4 डॉट्स के बाद 6 रिक्त स्थान हैं)
क्रिति लिथोस

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 बाइट्स @Luke के लिए धन्यवाद सहेजा गया।


क्या आप एनीमेशन को किसी चीज़ के लिए एनीमेशन का नाम देकर 6 बाइट्स नहीं बचा सकते हैं b?
ल्यूक

@ मुझे विश्वास नहीं हो रहा है कि मैं ऐसा करना भूल गया ...
नील

आप chअंत में ड्रॉप करके 2 और बाइट्स बचा सकते हैं ; 0एक इकाई की जरूरत नहीं है।
ल्यूक

2
कैसे बदलने के बारे में <x>करने के लिए <span>(और सीएसएस के साथ-साथ: xहो जाता है spanऔर x>xहो जाता है span>*)? यह बचाता है display:inline-block;, लेकिन लागत केवल 15 बाइट्स। तो कुल 6B बच जाते हैं।
ल्यूक

1
@ ल्यूक मैं प्रदर्शन के बारे में परवाह नहीं करता हूं, लेकिन मैं दोहराव से बचना चाहता हूं position:absolute;
नील

12

पॉवरशेल, 67 66 बाइट्स

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

बीट्रैकर के लिए लघु कंस्ट्रक्टर धन्यवाद का उपयोग करके

स्ट्रिंग की एक प्रति के साथ स्ट्रिंग को बदलता है जहां शेष वर्णों के सामने अंतिम चार डाल दिया जाता है, स्क्रीन को साफ करता है, इसे प्रिंट करता है, और फिर 100 एमएस के लिए सो जाता है।

स्ट्रिंग के अंदर तर्क को लपेटने के बजाय लूप कंस्ट्रक्टर के लिए उपयोग करके बहुत सारे बाइट्स को बचाया।

यहाँ छवि विवरण दर्ज करें


1
forलूप ट्रिक के लिए +1 और मुझे फिर से पढ़ने के लिए_जॉइन करें
बीटक्रैकर

1
पुनश्च आप एक और बाइट का उपयोग करके गोल्फ कर सकते हैं $s='.'*4+' '*6
बीटक्रैकर

उस के लिए @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 ( -यू ध्वज ) बाइट्स

-12 बाइट्स धन्यवाद ovs
-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 निर्भर है = /
रॉड

1
कुछ बाइट्स बचाएंprint(end='\r[%s]'%s,flush=1)
'13:57

2
आप -uकमांड लाइन ध्वज का उपयोग करके पूरी तरह से फ्लश निकाल सकते हैं । संबंधित एसओ सवाल
अंडा

1
आप कुछ बाइट्स के साथ भी बचा सकते हैं s[9]+s[:9]
पूरी तरह से

10

विंडोज बैच, 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 बाइट्स तक प्राप्त कर सकते हैं।
नील

मैं इस पर काम करने की कोशिश करूँगा, आपके सुझावों के लिए धन्यवाद :)!
स्टेवेफेस्टल

टाइमआउट / टी ०> १.१-एन १-डब्ल्यू १००> की बजाय पिंग १०० मीटर +/- २५० मीटर समय की आवश्यकता के भीतर होगा (२५ - १०० किलोमीटर सामान्य रूप से होना चाहिए) इसलिए वहां कुछ बाइट्स बचा सकते हैं ( s6464.com/) nt / timeout.html )
लियाम डेली

1
इसके अलावा @echo offऔर हटाने को हटाने से do @(echo %%~p&timeout/t 0 >nul&cls)भी काम चलेगा और 11 पात्रों (मेरे कंप्यूटर पर 200 बाइट्स) को बचाना चाहिए
लियाम डेली

8

गणितज्ञ, 67 77 बाइट्स

+10 बाइट्स के रूप में मैं वर्ग कोष्ठक भूल गया।

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

1
वास्तव में, मैथेमेटिका में एक अंतर्निहित है Animate? : |
श्री एक्सकोडर

हाँ, यह एक दिए गए चर पर कुछ भी के बारे में चेतन होगा। :)
इयान मिलर

यह आयताकार कोष्ठक को शामिल नहीं करता है जो अधिकांश अन्य उत्तर करते हैं।
मार्क एस

ओह चूहों, काफी करीब से नहीं देखा। ठीक है।
इयान मिलर

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
आपका कमांड प्रॉम्प्ट फॉन्ट कॉमिक सैंस एमएस!?!?!
एमडी एक्सएफ

7

जावास्क्रिप्ट (ईएस 6), 86 बाइट्स

setInterval('with(console)clear(),log(`[${x=x[9]+x.slice(0,9)}]`)',100,x='...      .')


4
के लिए +1 withहमेशा के लिए +1 with!
झबरा

@ शगुन कोडगॉल्फ.स्टैकएक्सचेंज. com/ questions/ 118402/ #SelfPromotion: पी
अर्जुन

6

जावास्क्रिप्ट (ईएस 6) + एचटीएमएल, 104 85 83 बाइट्स

f=(s="....      ")=>setTimeout(f,100,s[9]+s.slice(0,9),o.value=`[${s}]`)
<input id=o
  • 2 बाइट्स जोहान के सुझाव के लिए धन्यवाद कि मैं एक के inputबजाय का उपयोग सहेजा pre

कोशिश करो

स्निपेट में कार्य करने के लिए टैग >पर एक समापन की आवश्यकता होती है input

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


1
क्या []एस के बीच 10 अक्षर नहीं होने चाहिए ?
नील

आप सही कह रहे हैं, @ नील; वहाँ 6 रिक्त स्थान हैं - अगर मैं आंखों से चीजों को गिनने जा रहा हूं, तो कम से कम मैं अपना चश्मा पहन सकता हूं!
शैगी

1
आप एक उपयोग नहीं कर सकते <input>के बजाय <pre>और उसके बाद valueके बजाय innerText?
जोहान कार्लसन

अच्छी कॉल, @ जोहानकरल्सन; जो 2 बाइट्स बचाता है।
झबरा

अरे! यह वही बाइट काउंट है: s='.... ';setInterval(f=>{o.value='[${s=s[9]+s.slice(0,9)}]'},100);<input id=oहो सकता है कि कोई इसे सुधार सकता है (उद्धरण चिह्न को `के साथ बदलें)
थॉमस डब्ल्यू

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
नूडल के बारे में पहले कभी नहीं सुना है, लेकिन यह सही काम के लिए सही उपकरण है! +1
केविन क्रूज़सेन

1
@KevinCruijssen, ETHProductions में कोड गोल्फिंग के लिए भाषाओं के साथ एक अच्छी सूची है :)
tkellehe

6
बस जब मुझे लगा कि मैंने आपको पछाड़ दिया है, तो मैंने नोटिस किया कि आप पहले ही दो बार अपना हल
निकाल

@KritiiLithos, मुझे डर था कि आप मुझे हरा देंगे इसलिए मैंने हमेशा के लिए 14 बाइट्स लेने की कोशिश की । लेकिन, अब आप फिर से करीब हैं !! डैंग !!
tkellehe

1
@ nitro2k01 नूडल 256 अक्षरों के साथ अपने स्वयं के कोड-पृष्ठ का उपयोग करता है , जो सभी अपने स्वयं के एन्कोडिंग में एक बाइट के रूप में सहेजे जाते हैं। इसी तरह कुछ अन्य गोल्फिंग भाषाएं करते हैं, जैसे जेली या 05AB1E । यदि आप इन वर्णों को डिफ़ॉल्ट UTF-8 एन्कोडिंग के रूप में सहेजते हैं, तो वे वास्तव में इसके बजाय 2 या 3 बाइट्स होंगे, लेकिन अपने स्वयं के एन्कोडिंग में वे प्रत्येक 1 बाइट हैं।
केविन क्रूज़सेन

4

PHP, 67 बाइट्स

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

कोई टिप्पणी नहीं


4

सी #, 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(;;)। या आप हमारे जावा 7 के एक पोर्ट को कुछ और कुल ()=>{var o=".... "for(;;){o=(o+o).Substring(9,10);System.Console.Write("["+o+"]\n");System.Threading.Thread.Sleep(100);System.Console.Clear();}};
बताने के

क्या स्ट्रिंग प्रक्षेप अब बंद हो जाएगा? कुछ इस तरह$"[{o}]\n"
मेरी

1
यदि आप अपने System.Console.Write(o)साथ प्रतिस्थापित करते हैं System.Console.Write(o+"\r")तोSystem.Console.Clear();
20


4

MATL , 24 बाइट्स

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

MATL ऑनलाइन पर यह कोशिश करो ! या ऑफ़लाइन कंपाइलर से एक जिफ़ देखें:

यहाँ छवि विवरण दर्ज करें

व्याख्या

`        % 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ṃ⁾. Ç

उदाहरण चलाते हैं

कैसे?

ṙ©-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 बाइट्स

सहेजा गया 7 8 बाइट्स डिजिटल ट्रॉमा के लिए धन्यवाद ।

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

या, यदि आपके सिस्टम stdoutको बिना किसी नई पंक्ति के हर लिखने के बाद फ्लश करने की आवश्यकता नहीं है:

सी (जीसीसी), 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वर्तमान सूचकांक मॉडुलो द्वारा लोडिंग बार को बंद कर देता है। उदाहरण के लिए, यदि i == 3, i % 103 के बराबर है ". ...."। लोडिंग बार को 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 आपके कोड में रिक्त स्थान ठीक से प्रस्तुत नहीं किया गया। हालांकि, मैं देख रहा हूं कि आपका क्या मतलब था, और मदद के लिए धन्यवाद!
एमडी एक्सएफ

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लाइन के शुरू में वापस 'कर्सर' को रीसेट करती है, जिसे बाद में अधिलेखित किया जा सकता है। दुर्भाग्य से, ऑनलाइन कंपाइलर और न ही ग्रहण आईडीई इसका समर्थन नहीं करता है, इसलिए मैंने इसे विंडोज कमांड प्रॉम्प्ट से दिखाने के लिए इस उत्तर के अंत में एक जिफ़ जोड़ा है।

इसे यहाँ आज़माएँ। (थोड़ा संशोधित तो आपको परिणाम देखने से पहले टाइम-आउट की प्रतीक्षा नहीं करनी होगी। इसके अलावा, 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:

यहाँ छवि विवरण दर्ज करें


आप कैरिज रिटर्न के printlnसाथ बदलकर printऔर आउटपुट करके लाइन को साफ कर सकते हैं। आपके आईडीई के टर्मिनल में काम नहीं हो सकता है, लेकिन यह किसी अन्य लेन में काम करेगा।
पावेल

@Phoenix गाड़ी से वापसी का मतलब है \r\n? System.out.print(someString+"\r\n);कंसोल को कैसे साफ़ करता है .. यह उपयोग करने के समान है System.out.println(someString);.. यह बस अगली पंक्ति में जाता है, लेकिन मुद्रित किसी भी पिछली लाइन को हटाता नहीं है ..: S
केविन क्रूज़सेन

4
नहीं, मेरा मतलब है \r, बिना \n। जो लाइन की शुरुआत में "कर्सर" को रीसेट करता है, इसलिए कुछ भी प्रिंट करने से वह लाइन ओवरराइट हो जाएगी।
पावेल

@Phoenix आह। धन्यवाद। मेरे जवाब को संशोधित किया और परिणाम दिखाने के लिए एक जिफ़ जोड़ा। बहुत बुरा ऑनलाइन संकलक और न ही ग्रहण आईडीई इस का समर्थन नहीं कर रहे हैं ..>।>
केविन क्रूज़सेन

3

पायथन 2 , 81 78 बाइट्स

-1 बाइट ( %sजब मैं रॉड का उपयोग करता था, तो मैंने उसी समय एक समान पायथन 3 संस्करण प्रस्तुत किया था!)
-2 बाइट्स (पूरी तरह से अमानवीय विचार का उपयोग करके - 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 पर फ्लश करने के लिए अधिक बाइट्स ले जाएगा)
रॉड

@ रोड को \rओवरराइट करता है और ,इसे स्ट्रिंग के बजाय टपल प्रिंट करता है - मैंने इसे कुछ समय पहले कहीं देखा था और पहले भी इस्तेमाल किया है।
जोनाथन एलन

1
हां, यह वही है जो मैं कर रहा था, लेकिन आउटपुट वास्तविक समय में प्रिंट नहीं किया जा रहा था (उपयोग करने के लिए sys.stdout.flush())
रॉड

1
दोषी पाया: मेरा ubuntu टर्मिनल: c
रॉड

3

गो , 150 145 132 129 124 बाइट्स

-5 बाइट्स सूंडी के लिए धन्यवाद।

मुझे ऐसा लग रहा है कि मैं यहाँ नहीं जाऊँगा ... लेकिन मेरा जवाब है कि मैं सी टॉप कर रहा हूँ ... pls हेल्प गोल्फ?

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:।
सूदी

1
@ सुदी अहा, यह बड़ी संख्या का उपयोग करने का तरीका होगा। धन्यवाद!
पूरी तरह से

2
@MDXF मुझे इस बात से अलग होना चाहिए कि मेरा मतलब था कि मेरा जवाब सी -गोल्फ द्वारा दिया जा रहा है
17'17

3

VBA 32-बिट, 159 157 143 141 134 बाइट्स

VBA में एक अंतर्निहित फ़ंक्शन नहीं होता है जो एक सेकंड से कम समय की प्रतीक्षा करने की अनुमति देता है इसलिए हमें एक फ़ंक्शन की घोषणा करनी चाहिए kernel32.dll

32 बिट डिक्लेयर स्टेटमेंट (41 बाइट्स)

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

64 बिट डिक्लेयर स्टेटमेंट (49 बाइट्स)

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

इसके अतिरिक्त, हमें DoEventsअनंत लूप को गैर-उत्तरदायी बनाने से अनंत लूप से बचने के लिए एक ध्वज शामिल करना चाहिए । अंतिम फ़ंक्शन तब एक सबरूटीन होता है जो VBE तत्काल विंडो पर कोई इनपुट और आउटपुट नहीं लेता है।

तत्काल विंडो फ़ंक्शन, 93 बाइट्स

बेनामी VBE तत्काल खिड़की समारोह है कि श्रृंखला के लिए कोई इनपुट और आउटपुट लेता A1ActiveSheet पर

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आउटपुट के शीर्ष पर क्या है ?
एमडी एक्सएफ

@MDXF, जो उपरूटीन चलाने के लिए कॉल है aजैसा कि ऊपर सूचीबद्ध है; यह क्रियात्मक रूप से अधिक क्रिया के समकक्ष है call a()
टेलर स्कॉट

आह, मेरी बुर। बस ख़राब सबमिशन की तलाश है। आपका, फिर, तो +1
एमडी एक्सएफ


2

बैच, 99 98 बाइट्स

स्टीवफ़ेस्ट के लिए 1 बाइट धन्यवाद!

(मैं \rकोड से निकाल सकता हूं , लेकिन बैच गोल्फिंग की भावना में, मैं नहीं करूंगा।)

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

लिसेक के साथ रिकॉर्ड किया गया

पहली पंक्ति के बाद चार स्थान हैं।

मुख्य तर्क स्ट्रिंग को संशोधित कर रहा है। %s:~-1%का अंतिम चरित्र है %s%और %s:~0,-1%सभी का अंतिम चरित्र है %s%। इस प्रकार, हम पिछले चरित्र को स्ट्रिंग के सामने ले जा रहे हैं, जो स्ट्रिंग को घुमाता है।


Aw ... मैं इस के लिए देख रहा हूँ ...
stevefestl

1
गोल्फ 1 बाइट: 0चर विकल्प में हटाया जा सकता है
स्टीववेस्टल

आप उपयोग करें cmder। अच्छी नौकरी।
एमडी एक्सएफ

1
@ एसटीएफफेस्ट हू, टीआईएल। धन्यवाद!
कॉनर ओ'ब्रायन

1
@MDXF यह एकमात्र कारण है जो मैं अभी भी समझदार हूं: P
कॉनर ओ'ब्रायन

2

रूबी, 57 56 बाइट्स

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

यहाँ अन्य उत्तरों से भारी प्रभावित हुए।

@Manatwork को एक बाइट धन्यवाद दिया। जाहिरा तौर पर मुझे वर्णों को गिनने में परेशानी होती है - मैं एसटी 3 का उपयोग करता हूं और जाहिर है कि यदि आप चौकस नहीं हैं तो यह पंक्ति में वर्णों की गिनती में नई सूचियों को शामिल करेगा।


यह कैसे काम करता है? क्या यह मान लिया गया है कि इनपुट में संग्रहीत है s?
R

@ रिकर वह sकार्यक्रम की शुरुआत में 4 .एस और कुछ रिक्त स्थान के रूप में परिभाषित करता है
कॉनर ओ'ब्रायन

s[0..8]s.chop
मैनटवर्क

2

पर्ल, 69 बाइट्स

-3 बाइट्स @ डॉम हेस्टिंग्स को धन्यवाद ।

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

यह select undef,undef,undef,.1पर्ल में 1 सेकंड से कम सोने का सबसे छोटा तरीका है, और यह बहुत सारे बाइट्स लेता है ...


थोड़ा लंबा (79 बाइट्स), वहाँ है:

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

शाम, इसे थोड़ा और अधिक 69 (या एक शाब्दिक ESC के साथ 68) नीचे लाने में कामयाब रहे: gist.github.com/dom111/e3ff41c8bc835b81cb55559898d69992 का उपयोग करने की कोशिश की तरह महसूस करते हैं, !printलेकिन आपको परेंस की आवश्यकता होती है इसलिए यह समान लंबाई को समाप्त करता है: /
डोम हेस्टिंग्स

@DomHastings अच्छा लगा, धन्यवाद! आप अभी भी जानते हैं कि कैसे गोल्फ: डी
दादा

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

काफी बेहतर! मैं तुमसे चोरी नहीं कर रहा हूँ, मुझे पता था कि मुझे यह एक काम करना था ...
मार्कोस

संपादित, प्रिंटफ पैडिंग एस को छोटा करने में मदद नहीं कर सकता है। @DigitalTrauma के रूप में स्ट्रिंग लपेटना बेहतर दिखता है।
मार्कोस

1

ग्रूवी, 72 बाइट्स

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
}

ग्रूवी / जावा में कंसोल को साफ़ करने का एक उचित तरीका नहीं जानता था। अगर किसी के पास करने का कोई तरीका है, तो कृपया मुझे बताएं
staticmethod

1
आप \rकर्सर को लाइन की शुरुआत में वापस करने के लिए उपयोग कर सकते हैं । ऐसा प्रतीत होता है कि कम से कम कई उत्तर ऐसा कर रहे हैं। वहां से, आप 3 बाइट्स बचाते हुए * 20 हटा सकते हैं।
फेयरफॉक्स

1

हास्केल (विंडोज़), 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

हास्केल की शुद्धता ने साइकिलिंग डॉट पैटर्न को कुछ जटिल बना दिया। मैंने एक नेस्टेड लिस्ट कॉम्प्रिहेंशन का निर्माण किया, जिसमें स्ट्रिंग्स की अनंत सूची तैयार की गई ताकि वे आउटपुट हो सकें, फिर वापस उचित IO ऑपरेशंस को जोड़ा।


1

रूबी, 61 बाइट्स

यदि डॉट्स दाईं ओर के बजाय बाईं ओर स्क्रॉल करने के लिए थे, तो यह 1 बाइट को बचाएगा क्योंकि rotate!कोई भी तर्क बाईं ओर एक बार सरणी को स्थानांतरित नहीं करता है।

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

सी, 100

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

क्यों stderrउपयोग करने के लिए प्रिंट करें dprintfऔर केवल उपयोग न करें printf?
एमडी एक्सएफ

@MDXF क्योंकि डिफ़ॉल्ट रूप stderrसे वर्ण बफर है, जबकि stdoutलाइन बफर है। चूँकि मुझे कोई प्रिंट नहीं करना है \n, तो printf()मुझे स्पष्ट fflush(stdout)रूप से और साथ ही#include <stdio.h>
डिजिटल ट्रामा

अच्छी बात है, लेकिन वास्तव में, आपको #include <stdio.h>STDOUT को फ्लश नहीं करना होगा । fflush(0)सभी बफ़र्स फ्लश करता है।
एमडी एक्सएफ

1
नाम बदलने mainसे तीन बाइट्स बचाएं f, जो मायने रखता है।
एमडी एक्सएफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.