আউটপুট কীস্ট্রোক


14

যে কোনও প্রোগ্রামিং ল্যাঙ্গুয়েজে একটি প্রোগ্রাম তৈরি করুন যা ইনপুট নেয় এবং একটি কীবোর্ডে লেখা পাঠ্যটিকে অ্যানিমেট করে।

প্রতিটি অক্ষরের মধ্যে বিলম্ব কীবোর্ডে সত্য টাইপিং অনুকরণ করার জন্য পৃথক হওয়া উচিত। 0.1, 0.1, 0.5, 0.1, 0.1, 0.5 ...শেষ অক্ষরটি মুদ্রণ না হওয়া পর্যন্ত বিলম্বটি সেকেন্ডে হবে । চূড়ান্ত আউটপুটটি স্ক্রিনে রেখে যাবে।

আপনাকে অবশ্যই পাঠ্যের বর্তমান লাইনটি ওভাররাইট করতে হবে যাতে নতুন সারিগুলিতে পাঠ্য মুদ্রণ করা যায় না।

উদাহরণ, ইনপুট "হ্যালো, পিপিসি! বিদায় আর্থ!" নিম্নলিখিত অ্যানিমেশনটির ফলাফল হওয়া উচিত (নোট করুন যে জিআইএফ-প্রস্তুতকারকের স্যাম্পলিং হার কম ছিল, তাই আসল ফলাফলটি কিছুটা আলাদা):

এখানে চিত্র বর্ণনা লিখুন

যেহেতু এটি কোড গল্ফ, তাই সর্বনিম্ন পরিমাণে বাইট জিতে।


"আপনাকে অবশ্যই পাঠ্যের বর্তমান লাইনটি ওভাররাইট করতে হবে যাতে নতুন সারিগুলিতে পাঠ্য মুদ্রণ করা যায় না।" - এটি কি বোঝায় যে প্রোগ্রামটি অবশ্যই ইনপুট সাফ করে এবং তার জায়গায় আউটপুট উত্পাদন করবে? (পার্শ্ব দ্রষ্টব্য: আপনার অ্যানিমেশনটি নির্দিষ্টের চেয়ে দ্রুত দেখায়))
জোনাথন অ্যালান

আমরা কি সবসময় ইনপুট অনুমান করতে পারি?
মেটোনিয়াম

1
বিলম্বটি এলোমেলো বা 0.1, 0.1, 0.5 এর পুনরাবৃত্তি প্যাটার্ন হিসাবে গণ্য হবে?
12

2
প্রথম চরিত্রটি মুদ্রণের আগে কোনও বিলম্ব হওয়া উচিত?
ব্যবহারকারী 41805

1
এটি সেই ধরণটি হ্যাঁ @ 12Me21
মেটনিয়াম

উত্তর:


8

সি 108 93 89 78 73 80 বাইট

f(char *s){for(int i=0;s[i];fflush(0),usleep(100000*(i++%3?1:5)))putchar(s[i]);}

অবরুদ্ধ সংস্করণ:

 void f(char *s)
 {
  for( int i=0;s[i];)
  {
    putchar(s[i]);
    fflush(0);
    usleep(100000*(i++%3?1:5));
 }
}

@ ক্রিটিক্সি লিথোস @ মেটনিয়েম আপনার ইনপুটটির জন্য ধন্যবাদ! কিছু বাইট সংরক্ষণ

একরকম, কেবল int iচালানোর সময় আমাকে বিভাগের ত্রুটি দিয়েছে, তাই আমি 0 দিয়ে এটি আরম্ভ করেছি।


1
আপনি আমার উন্নতিগুলি ব্যবহার করেন বা না রাখুন: আপনার বিলম্বগুলি অন্যভাবে হওয়া উচিত। যদি i%3
বিলম্বটি

প্রতিস্থাপন 100000সঙ্গে 1e5শেভ 3 বাইট
আলবার্ট Renshaw

অ্যালবার্ট রেনশাহ আপডেট টিপ দেওয়ার জন্য ধন্যবাদ। আমি এটি আমার অন্যান্য সমাধানগুলিতে ব্যবহার করেছি তবে আমি কেন ভুলে গেছি তা জানি না।
আবেল টম

@ আবেলটম কোনও কারণে, 1e5আমার ডিভাইসে কাজ করে না
ব্যবহারকারী 41805

পুনঃটুইট আপনি লিনাক্স এ আছেন?
আবেল টম

6

জেলি , 13 বাইট

115D÷⁵ṁȮœS¥@"

এটি একটি monadic লিঙ্ক / ফাংশন। অন্তর্নিহিত আউটপুট কারণে, এটি একটি সম্পূর্ণ প্রোগ্রাম হিসাবে কাজ করে না।

প্রতিপাদন

কিভাবে এটা কাজ করে

115D÷⁵ṁȮœS¥@"  Monadic link. Argument: s (string)

115            Set the return value to 115.
   D           Decimal; yield [1, 1, 5].
    ÷⁵         Divide all three integers by 10.
      ṁ        Mold; repeat the items of [0.1, 0.1, 0.5] as many times as
               necessary to match the length of s.
          ¥@"  Combine the two links to the left into a dyadic chain and apply it
               to each element in s and the corr. element of the last return value.
       Ȯ         Print the left argument of the chain (a character of s) and sleep
                 as many seconds as the right argument indicates (0.1 or 0.5).

6

ম্যাটল্যাব, 74 বাইট

c=input('');p=[1,1,5]/10;for i=c;fprintf('%s',i);p=p([2,3,1]);pause(p);end

ব্যাখ্যা:

আমি করতে বেশ কিছুদিনের ব্যবহৃত fprintfসংস্করণের তুলনায় খাটো disp()সঙ্গে clc। ব্রেকথ্রুটি যখন আমি খুঁজে পেয়েছিলাম / মনে পড়েছিলাম যে pauseকোনও ভেক্টরকে তর্ক হিসাবে গ্রহণ করতে পারে, এক্ষেত্রে এটি কেবল প্রথম মানটি বেছে নেবে। এটি কাউন্টার ছেড়ে যাওয়া সম্ভব করে তোলে।

c=input('');    % Take input as 'Hello'
p=[.1,.1,.5];   % The various pause times

for i=c;            % For each of the characters in the input c
  fprintf('%s',i);  % Print the character i, without any trailing newline or whitespace
                    % No need to clear the screen, it will just append the new character 
                    % after the existing ones
  pause(p);         % pause for p(1) seconds. If the input to pause is a vector, 
                    % then it will choose the first value
  p=p([2,3,1]);     % Shift the pause times
end

সবচেয়ে কম ব্যবহার করে আমি পেয়েছিলাম disp81 বাইট:

c=input('');p=[1,1,5]/10;for i=1:nnz(c),clc;disp(c(1:i));pause(p(mod(i,3)+1));end

আপনি কি এর printfপরিবর্তে করতে পারেন fprintf? এটি অষ্টাভ-অনলাইন.টনে কাজ করে (তবে এটি অক্টাভ এবং মতলব নয়)
ব্যবহারকারী 41805

4

জাভাস্ক্রিপ্ট (ES6), 67 বাইট

f=(i,o,n=0)=>i[n]&&(o.data+=i[n],setTimeout(f,++n%3?100:500,i,o,n))
<form><input id=i><button onclick=f(i.value,o.firstChild)>Go!</button><pre id=o>


স্নিপেটটি কাজ করছে বলে মনে হচ্ছে না
ব্যবহারকারীর 41805

@ ক্রিটিক্সিলিথোস ইউপ, ক্রোমে কাজ করছে বলে মনে হচ্ছে না :-(
মেটোনিয়েম

ফায়ারফক্সে কাজ করে
কনর ওব্রায়েন

2
এটি ক্রোমে আমার জন্য কাজ করে তবে কনসোলটি বলেBlocked form submission to '' because the form's frame is sandboxed and the 'allow-forms' permission is not set.
মানের

@ নাম্বারমানিয়াক আমি স্নিপেট পরিবর্তন করে একটি আলাদা ইভেন্ট ব্যবহার করেছি। (আমি এতই বৃদ্ধ, আমি যখন মনে রাখতে পারি যে ফর্ম ফিল্ডে এন্টার চাপলে নীচের বোতামটি ট্রিগার করা হয়নি তবে সরাসরি জমা দেওয়ার জন্য গিয়েছিলাম))
নিল

4

ভি , 20 19 18 বাইট

1 ডি বাইট সংরক্ষিত হয়েছে @ ডিজেএমসিমেহেমকে ধন্যবাদ

òশেষে সরিয়ে 1 বাইট সংরক্ষণ করুন

òD1gÓulD1gÓulDgÓul

মারাত্মকভাবে নির্দোষ, আমি জানি, এটি কেবলমাত্র কঠোর এনডিও uআমাকে নেস্টেড লুপগুলি ব্যবহার করতে বাধা দেয়।

ব্যাখ্যা

কার্সারটি বাফারের শুরুতে শুরু হয় যা ইনপুটটির প্রথম চরিত্র।

ò                      " Start recursion
 D                     " Deletes everything from the cursor's position to the end of line
  1gÓ                  " Sleep for 100ms
     u                 " Undo (now the deletion is reverted)
      l                " Move cursor one to the right
       D1gÓul          " Do it again
             D         " Same as before but...
              gÓ       " Sleep for 500ms this time
                ul     " Then undo and move right
                       " Implicit ò

জিআইএফ শীঘ্রই আসছে ...


৫০০ এমএসে গণনা ছাড়াই ডিফল্ট, সুতরাং আপনি সেখানে একটি বাইট সংরক্ষণ করতে পারেন। এছাড়াও, মনে রাখবেন যে আপনার দ্বিতীয়টির দরকার নেই ò!
জেমস

uএনডিও এর পরিবর্তে আপনি কি কেবল pদৃ ? ়তার সাথে বলতে পারেন ? নিশ্চিত না যে এটি আদৌ সহায়তা করে
nmjcman101

@ ডিজেএমসিএমহেম আমি জানি না কেন আমি ডিফল্ট ৫০০ মিস করেছি, ধন্যবাদ! তবে আমার দ্বিতীয়টি দরকার òকারণ অন্যথায় প্রোগ্রামটি ভ্রান্ত ত্রুটির ফলে শেষে অন্তর্ভুক্ত নিউলাইনের কারণে তাড়াতাড়ি বন্ধ হয়ে যায়।
ব্যবহারকারী 41805

@ nmjcman101 আমি দৃte় ব্যবহারের বিষয়েও ভাবছিলাম p, তবে হায় হায় এটি কার্সারটিকে লাইনের শেষ প্রান্তে নিয়ে যায় এবং ফিরে যেতে আমার এমন কিছু দরকার ``যা কেবল আমার বাইকোয়ান্টকে আরও বাড়িয়ে তুলতে পারে
ব্যবহারকারী 41805

4

এমএটিএল , 16 বাইট

"@&htDTT5hX@)&Xx

এমএটিএল অনলাইনে এটি ব্যবহার করে দেখুন!

ব্যাখ্যা

"        % Implicitly input string. For each char of it
  @      %   Push current char
  &h     %   Concatenate everything so far into a string
  tD     %   Duplicate and display
  TT5h   %   Push array [1 1 5]
  X@)    %   Get the k-th element modularly, where k is current iteration.
         %   So this gives 1, 1, 5 cyclically
  &Xx    %   Pause for that many tenths of a second and clear screen
         % Implicit end. Implicitly display the final string, again (screen
         % was deleted at the end of the last iteration)

4

নুডেল , 18 বাইট

ʋ115ṡḶƙÞṡạḌ100.ṡ€ß

চেষ্টা করে দেখুন :)


কিভাবে এটা কাজ করে

                   # Input is automatically pushed to the stack.
ʋ                  # Vectorize the string into an array of characters.
 115               # Push on the string literal "115" to be used to create the delays.
    ṡ              # Swap the two items on the stack.

     ḶƙÞṡạḌ100.ṡ€  # The main loop for the animation.
     Ḷ             # Loops the following code based off of the length of the string.
      ƙ            # Push on the current iteration's element of the character array (essentially a foreach).
       Þ           # Pop off of the stack and push to the screen.
        ṡ          # Swap the string "115" and he array of characters (this is done because need array of characters on the top for the loop to know how many times to loop)
         ạ         # Grab the next character in the string "115" (essentially a natural animation cmd that every time called on the same object will access the next item looping)
                   # Also, turns the string into an array of characters.
          Ḍ100.    # Pop the character off and convert to a number then multiply by 100 to get the correct delay. Then delay for that many ms.
               ṡ   # Swap the items again to compensate for the one earlier.
                €  # The end of the loop.

                 ß # Clears the screen such that when implicit popping of the stack occurs it will display the correct output.

19 বাইট কোড স্নিপেট যা অন্তহীনভাবে লুপ করে।

<div id="noodel" cols="30" rows="2" code="ʋ115ṡḷḶƙÞṡạḌ100.ṡ€ß" input='"Hello, PPCG! Goodbye Earth!"'/>
<script src="https://tkellehe.github.io/noodel/release/noodel-2.5.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>


1
কোনও কারণে, দেরি বন্ধ বলে মনে হচ্ছে। বিলম্বটি 100 মিমি, 100 মিমি, 500 মিমি। আপনি সব সময় 100ms আছে বলে মনে হচ্ছে।
ইসমাইল মিগুয়েল

পছন্দ করুন উত্সটি দেখার পরে একটি গুণটির পরিবর্তে একটি অ্যাড রয়েছে। আমার এটির প্রয়োজন থাকলেও আমি এটি সেভাবে রাখতে পারি কারণ এটি কোথায় কার্যকর হতে পারে তা আমি দেখতে পেতাম। ওটার জন্য অসংখ্য ধন্যবাদ!
টেকলেহে

আপনাকে স্বাগতম. এবং আমি দুঃখিত যে আপনার বাইট গণনা বৃদ্ধি পেয়েছে।
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল, এটি ঠিক আছে কারণ নুডেলের পরবর্তী সংস্করণটি তৈরি করার সময় আমি একটি 11 বাইট সমাধান তৈরি করতে পারি ( বেসিকগুলির কারণে আমাকে যুক্ত করা দরকার)। এটি অবশ্যই আপত্তিহীন হবে, তবে এটি একটি নতুন ভাষা এবং শীর্ষ গল্ফিং ভাষাগুলির মতো ভাল হওয়ার আগে অনেক দীর্ঘ পথ যেতে হবে :)
tkellehe

3

এপিএল, 23 বাইট

⊢{⍞←⍺⊣⎕DL⍵÷10}¨1 1 5⍴⍨⍴

ব্যাখ্যা:

               1 1 5⍴⍨⍴  ⍝ repeat the values [1,1,5] to match the input length
⊢                        ⍝ the input itself
 {           }¨          ⍝ pairwise map
      ⎕DL⍵÷10            ⍝ wait ⍵÷10 seconds, where ⍵ is the number
     ⊣                   ⍝ ignore that value, and
  ⍞←⍺                    ⍝ output the character   

3

সি #, 131 বাইট

ব্যাখ্যা করার মতো বেশি কিছু নয়। এটি আর্গুমেন্ট হিসাবে কেবল একটি স্ট্রিং নেয় ("" মোড়ানো) এবং সঠিক বিলম্বের প্যাটার্ন ব্যবহার করে প্রতিটি অক্ষর মুদ্রণ করে। অ্যানিমেশন পরে এটি একটি সঙ্গে প্রস্থানOutOfRangeException কারণ লুপটি সমস্ত অক্ষরের উপরে লুপ করার পরে থামায় না। যেহেতু এটি একটি অসীম লুপ, এর অর্থ এটিও আমি ;-) এর int Mainপরিবর্তে ব্যবহার করতে পারিvoid Main

Golfed

class C{static int Main(string[]a){for(int i=0;){System.Console.Write(a[0][i]);System.Threading.Thread.Sleep(i++%3<1?500:100);}}}

Ungolfed

class C
{
    static int Main(string[] a)
    {
        for (int i = 0; ;)
        {
            System.Console.Write(a[0][i]);
            System.Threading.Thread.Sleep(i++ % 3 < 1 ? 500 : 100);
        }
    }
}

সম্পাদনাগুলি

  • লুপের পরিবর্তে পদ্ধতির iঅভ্যন্তরে বৃদ্ধি বাড়িয়ে 1 বাইট সংরক্ষণ করা হয়েছে । (ধন্যবাদ মালিয়াফো )Sleep()for

1
আমি কোনও সি # প্রোগ্রামার নই, তবে আপনি Sleep(i++ [...])লুপের জন্য অতিরিক্ত বাইট সংরক্ষণ করার মতো কিছু করতে পারবেন না ?
মালিয়াফো

@ মালিয়াফো আপনি ঠিকই থাকতে পারেন! এটি এখনও সঠিকভাবে চলে কিনা তা নিশ্চিত করার জন্য আমি এটি চালাব এবং তারপরে আমার পোস্টটি আপডেট করুন। ধন্যবাদ!
মেটোনিয়াম

2

স্মাইলব্যাসিক, 61 বাইট

LINPUT S$FOR I=0TO LEN(S$)-1?S$[I];
WAIT 6+24*(I MOD 3>1)NEXT

আমি মনে করি বিলম্বের হিসাব অনেক কম হতে পারে।


2

ক্লোজার, 81 বাইট

#(doseq[[c d](map vector %(cycle[100 100 500]))](Thread/sleep d)(print c)(flush))

ইনপুট স্ট্রিংয়ের উপরে লুপগুলি অসীম তালিকার সাথে জিপযুক্ত [100 100 500]

(defn typer [input]
  ; (map vector... is generally how you zip lists in Clojure 
  (doseq [[chr delay] (map vector input (cycle [100 100 500]))]
    (Thread/sleep delay)
    (print chr) (flush)))

2

বাশ (+ ইউটিলিটিস), 32 বাইট

দ্রষ্টব্য, এটি প্রক্রিয়াটিতে বীপ করবে, তবে কে বলেছে যে জমা দেওয়ার কল্পিত শব্দ প্রভাব থাকতে পারে না!

Golfed

sed 's/.../&\a\a\a\a/g'|pv -qL10

ডেমো

এখানে চিত্র বর্ণনা লিখুন



1

পাওয়ারশেল, 66 65 63 বাইট

[char[]]$args|%{sleep -m((1,1,5)[++$i%3]*100);Write-Host $_ -N}

এখানে চিত্র বর্ণনা লিখুন

-1 পরে অপ্রয়োজনীয় সাদা স্থান সরানো হয়েছে -m

-2 অ্যাডমবর্কবার্ককে ধন্যবাদ - ব্যবহারের পরিবর্তে ব্যবহৃত 1,1,5এবং *শেষ ফলাফল100100,100,500

$argsএকটি গৃহস্থালি অ্যারে হিসাবে নেয় , উল্লিখিত হিসাবে স্লিপিং মাধ্যমে লুপ Write-Hostকরে-N oNewline যুক্তি একই লাইনে আউট অক্ষর লিখতে ব্যবহার করা হয়।

উন্নতি?

  • ব্যবহার [0..99][char[]]1 বাইট সংরক্ষণ করার পরিবর্তে করুন তবে 100 টি অক্ষরের বেশি স্ট্রিংয়ে কাজ করবেন না।
  • ব্যবহার 100,500 এবং [(++$i%3)-gt1]এটি একরকম খাটো করুন।
  • এটিকে একক স্ট্রিংয়ের সাথে একত্রিত করুন এবং আউটপুটগুলির মধ্যে পরিষ্কার করুন, দীর্ঘকে সরিয়ে ফেলুন Write-Host

শেষ দুটি কাজ করার কোনও উপায় খুঁজে পাচ্ছে না এবং প্রথমটি কোনও নির্দিষ্ট নিয়মে বৈধ নয়।


1
দুটি বাইট সংরক্ষণ করতে sleep -m((1,1,5)[++$i%3]*100)
শতটি ভেঙে ফেলুন

@ অ্যাডমবার্কবার্ক স্মার্ট এক - ধন্যবাদ!
কলসডু



0

রেবোল, 65 বাইট

s: input t:[.1 .1 .5]forall s[prin s/1 wait last append t take t]

Ungolfed:

s: input
t: [.1 .1 .5]

forall s [
    prin s/1
    wait last append t take t
]


0

জাভা 7, 151 149 বাইট

class M{public static void main(String[]a)throws Exception{int n=0;for(String c:a[0].split("")){System.out.print(c);Thread.sleep(n++%3>0?100:500);}}}

-২ বাইটস @ ক্রিটিক্সিলিথসকে ধন্যবাদ যা আমি সবসময় ভুলে জন্য ..

ব্যাখ্যা:

class M{
  public static void main(String[] a) throws Exception{ // throws Exception is required due to the Thread.sleep
    int n = 0;                                          // Initialize counter (and set to 0)
    for(String c : a[0].split("")){                     // Loop over the characters of the input
      System.out.print(c);                              // Print the character
      Thread.sleep(n++ % 3 > 0 ?                        // if (n modulo 3 != 0)
                                 100                    //   Use 100 ms
                               :                        // else (n modulo 3 == 0):
                                 500);                  //   Use 500 ms
    }
  }
}

ব্যবহার:

java -jar M.jar "Hello, PPCG! Goodbye Earth!"

1
আমি এটি পরীক্ষা করিনি, তবে আপনি কি এর a[0].split("")পরিবর্তে কিছু করতে পারেন ?
ব্যবহারকারী 41805

@ ক্রিটিক্সিলিথোস আরগ .. আমি সর্বদা এটি ভুলে যাই। ধন্যবাদ।
কেভিন ক্রুইজসেন

যা সম্পর্কে কথা বলার সাথে splitসাথে আমার প্রসেসিং
উত্তরটিও

0

প্রক্রিয়াজাতকরণ, 133 131 বাইট

int i;void setup(){for(String c:String.join("",args).split(""))p{try{Thread.sleep(i++%3<1?500:100);}catch(Exception e){}print(c);}}

আমি চেষ্টা args[0]করে যুক্তিটি মোড়ানোর চেষ্টা করেছি"" পরিবর্তে এটি কোনও কারণে কার্যকর হয় না work

যাইহোক ... আমি প্রথমবারের মতো একটি প্রসেসিং প্রোগ্রাম লিখেছিলাম যা আর্গুমেন্ট গ্রহণ করে। জাভা থেকে ভিন্ন, আপনার ব্যবহার করে আর্গুমেন্ট ঘোষণা করার দরকার নেই String[]args, তবে ভেরিয়েবলটি argsস্বয়ংক্রিয়ভাবে আর্গুমেন্টের সাথে আরম্ভ করা হবে।

(হ্যাঁ, ফোল্ডার এবং স্কেচের জন্য একই নাম) নামে sketch_name.pdeপরিচিত একটি ফোল্ডারের নীচে ডাকা একটি ফাইলে এটি রাখুন sketch_name। এটিকে কল করুন:

processing-java --sketch=/full/path/to/sketch/folder --run input text here

পনির

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.