আমার কীবোর্ড অনুকরণ করুন


15

আমার কীবোর্ডের সাথে আমার সমস্যা আছে (সম্ভবত আমার ব্রাউজারে কোনও সমস্যা)। কিছু সময় যখন আমি একটি নতুন পাঠ্য ক্ষেত্রে ক্লিক করি এবং টাইপ শুরু করি আমার সমস্ত পাঠ্য পিছনের দিকে চলে আসে। খুব অল্প সময়ের পরে (চ্যালেঞ্জের উদ্দেশ্যে আমরা বলব এটি 10 ​​মিলিসেকেন্ড) এটি আবার ফরোয়ার্ড টাইপ করা আবার শুরু করে। দেখে মনে হচ্ছে প্রথমে আমার কার্সারটি সরে যায় না যখন আমি টাইপ করতে শুরু করি তাই পাঠ্যক্ষেত্রের শুরুতে সমস্ত অক্ষর sertedোকানো হয়।

উদাহরণস্বরূপ যদি আমি টাইপ pythonকরছিলাম এবং আমি pytপ্রথম 10 মিলি সেকেন্ডে টাইপ করতাম ফলাফল হবে

hontyp

কার্য

আপনার কাজটি হ'ল যথাসম্ভব কয়েকটি বাইটে এই আচরণটি অনুকরণ করা।

ইনপুট

আপনি যে কোনও যুক্তিসঙ্গত পদ্ধতিতে ইনপুট নিতে পারেন। তবে আপনি ইনপুটটিকে দুটি পৃথক ক্ষেত্র হিসাবে নিতে পারবেন না। প্রোগ্রামটি ইনপুটটিকে অনুমতি দিতে শুরু করলে 10 মিলিসেকেন্ডের বিলম্ব শুরু হয়। এটি হ'ল ইনপুট অনুমোদনের আগে আপনাকে প্রিপ্রোসেসিং করতে পারে, যা 10 মিলিসেকেন্ডের জন্য গণনা করা উচিত নয়।

টাইমিংয়ে কিছু দৈর্ঘ্যের অনুমতি দেওয়া হয় যতক্ষণ না এটি 10 ​​মিলিসেকেন্ডের গড় হয়ে থাকে এবং 1 মিলিসেকেন্ডের বেশি বন্ধ থাকে কারণ যুক্তিযুক্ত গতিযুক্ত কম্পিউটারে সময়টি 1% এর বেশি হয় না।

আউটপুট

আপনি যা উপযুক্ত পদ্ধতিতে স্ট্রিং আউটপুট করতে পারেন। আপনি ইনপুট নেওয়া শেষ করার পরে ব্যবহারকারী টাইপ করছে বা ফলাফল আউটপুট করায় আপনি লাইভ আপডেট করতে পারেন (হয় কোনও নিউলাইন বা ফাইলের শেষে ^D)।

পরীক্ষার মামলা

এর কিছু কিছু এই সিএমসি দ্বারা উত্পন্ন হয়েছিল উনিশতম বাইটে

First 10  | after   | result
bra         in-flak   in-flakarb
ap          ple       plepa
code-       golf      golf-edoc
no          ne        neon
we          st        stew
ai          med       media
draw        back      backward

3
@ লুক 1) হ্যাঁ। 2) যদি তারা কেবল ইনপুট নিতে পারে তবে তারা প্রতিযোগিতা করতে পারে না।
পোস্ট রক গারফ হান্টার

3
^ এটি সম্ভবত প্রচুর ভাষাগুলির
লুইস মেন্ডো

2
এটা দুর্ভাগ্যজনক. আমি চাই না যে এই চ্যালেঞ্জটি আমাদের ভাষাগুলি শাসন করবে, তবে আমি সত্যিই এটি একটি তুচ্ছ স্ট্রিং ম্যানিপুলেশন চ্যালেঞ্জ হয়ে উঠতে চাই না।
পোস্ট রক গার্ফ হান্টার

2
10 মিলিসেকেন্ড একটি হল খুব স্বল্প সময়ের। আপনি কি আসলেই তা বুঝিয়েছেন?
নীল

1
@ নীল আপনি সম্ভবত সঠিক, তবে এটি যা তা, আমি এই মুহূর্তে এটি পরিবর্তন করার মতো অবস্থানে নেই।
পোস্ট রক গারফ হান্টার

উত্তর:


7

VimScript, 48 47 বাইট

ভিম এর জন্য কিছু সুন্দর বিল্টিন রয়েছে। ভিম 8 প্রয়োজন।

se ri|cal timer_start(10,{->execute("se ri&")})

সন্নিবেশ মোডে পাঠ্য প্রবেশ করানো আশা করে, ভিমস্ক্রিপ্টের জন্য খুব যুক্তিসঙ্গত ইনপুট। ব্যাখ্যা:

se ri " short for 'set revins', or 'reverse insert'
cal timer_start(10, " Start a timer that fires after 10ms
                 {->execute("se ri&")}) " Give it a lambda that unsets ri

আমার প্রাথমিক পদ্ধতি,, se ri|sl10m|se ri&কাজ করে না কারণ স্লাইড কমান্ডের পরে লেখাটি বাফার হয়ে গেছে এবং আমি এর আশেপাশে কোনও উপায় খুঁজে পাইনি।


5

এইচটিএমএল (জেএস), 96 বাইট

<input id=i oninput=i.d=i.d||Date.now()+1e3;Date.now()<i.d&&(i.selectionEnd=i.selectionStart=0)>

আপনাকে ক্রিয়াতে দেখার সুযোগ দেওয়ার জন্য প্রথম কিপ্রেস থেকে 1 সেকেন্ডের সময় শুরু করে।


4

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

p=s='',t=+new Date,document.onkeyup=k=>console.log(+new Date-t>9?(s+=k.key)+p:p=k.key+p)

ডেমো

স্নিপেটটি যেভাবে কাজ করছে, আপনাকে তার ফ্রেমের ভিতরে ক্লিক করতে হবে যাতে রান বোতামটি ক্লিক করার পরে এবং আপনি টাইপিং শুরু করার আগে এটি ফোকাস হয়ে যায়

10 মিমি কমের মধ্যে এটি করার কোনও উপায় নেই। সুতরাং, আমি এই ডেমোতে বিলম্বটি 1 সেকেন্ডে রেখেছি - এবং তবুও, আপনি আরও তাড়াতাড়ি চাই।


3

প্রক্রিয়াজাতকরণ, 167 165 146 বাইট

String a="",b="";long m=0;void setup(){size(9,9);}void draw(){m=m<1?millis():m;println(b+a);}void keyTyped(){if(millis()-m>9)b+=key;else a=key+a;}

কনসোলের কীস্ট্রোক এবং আউটপুট হিসাবে ইনপুট নেয়। এটি প্রতিটি ফ্রেম আপডেট করে।

ব্যাখ্যা

String a="",b="";                // a contains the reversed (in the 10 milliseconds) string, b contains the text that is typed after the 10 milliseconds.
long m=0;                        // Store the start milliseconds in variable m
void setup() {
  size(9,9);                     // set the dimensions of the window
}

void draw() {                    // loop forever
  m=m<1?millis():m;              // update m
  println(b+a);                  // print the string b+a
}

void keyTyped() {                // this function gets called whenever a key is typed
  if(millis() - m) >9)           // if over 9 milliseconds have elapsed then
    b+=key;                      //   add the key to the end of b
  else                           // else (if less than 10 milliseconds have elapsed)
    a=key+a;                     //   prepend the key to a
}

1
@ ওয়েট উইজার্ড বলুন ইনপুটটি ছিল asdf+ ghjk। যদি সবকিছু এক পরিবর্তনশীল হয়, তবে 10 মিলিসেকেন্ডের পরে, আমাদের fdsaসেই স্ট্রিংটি থাকবে। এর পরে, gটাইপ করা হলে , স্ট্রিংটি পূর্বে gএবং হয়ে যাবে gfdsa। তারপরে যখন hটাইপ করা হয়, আমি hভেরিয়েবলের প্রিপেন্ড করতে পারি না (কারণ তখন ইনপুটটি এখনও বিপরীত হয়), আমার substringএস ব্যবহার করতে হবে এবং lengthসেই স্ট্রিং ভেরিয়েবলের গণনা করতে হবে । এটির জন্য প্রচুর বাইট লাগবে।
ক্রিটিকি লিথোস

বাইটগুলি হ্রাস করতে টের্নারি ব্যবহার করুন
মিঃ এলিয়েন

@ মিঃআলিয়েন কোনও ত্রৈমাসিকটি ব্যবহার করার জন্য, আমাকে একই ভেরিয়েবলটি মোকাবেলা করতে হবে, তবে এখানে আমি দুটি ভিন্ন ভেরিয়েবল ব্যবহার করছি (যথা নাম aএবং b)। এমনকি যদি আমি ফলাফলটিকে কোনও অস্থায়ী ভেরিয়েবলের কাছে নির্ধারিত করি তবে ফলাফলের বাইকাউন্টটি আরও বড়।
ক্রিটসি লিথোস

আমার খারাপ, আমি ভেবেছিলাম এটি একটি জাভাস্ক্রিপ্ট উত্তর x) .. যখন আমি আপনার উত্তরে টাইপ কাস্টিং দেখেছি বুঝতে পেরেছি ...
মিঃ এলিয়েন

1

সি - 169 বাইট

ওয়েল সি এর পক্ষে সেরা নয় কারণ এটি করার কোনও প্ল্যাটফর্ম-স্বাধীন উপায় নেই। এমএসভিসির অধীনে কাজ করে।

#include<time.h>
#include<conio.h>
l,k,b[9];main(a){for(a=clock();clock()-a<100;(k=_getch())?b[l++]=k:0);for(;(k=_getch())-13;k?putchar(k):0);for(;l;putchar(b[--l]));}

একটি হ্যাকি পদ্ধতির বিট, আপনি যদি 10 এমএসে 9 টিরও বেশি অক্ষর টাইপ করতে পারেন তবে এটি ক্রাশ হবে। একটি নতুন লাইনের চরিত্রের পরে আপডেট।


1
আমি নিশ্চিত না যে আমি 9 টি এলোমেলো চরিত্রগুলি 10
মিমিগুলিতে

1

পাইথন 2 , 112 106

import msvcrt as m,time
a=b=''
T=time.time
t=T()
while 1:c=m.getch();exec'ba=+c=+cb'[T()-t>1::2];print a+b

আপনি যদি আউটপুটটি ফ্ল্যাশ করতে চান তবে লাইনগুলি দিয়ে বন্যা print'\r'+a+b,না করে পরিবর্তে ব্যবহার করুন

প্রক্রিয়াটি থামানোর জন্য আপনাকে মারতে হবে

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