যতটা সম্ভব একত্রে থাকা কীগুলি ব্যবহার করে কিউওয়ার্টি কীবোর্ডটি মুদ্রণ করুন


19

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

সাধারণত, চ্যালেঞ্জগুলি বাইট, বা কখনও কখনও লেভেনস্টাইন দূরত্বগুলিতে স্কোর করা হয়, তবে এটির জন্য আমরা কীবোর্ড দূরত্ব ব্যবহার করছি - প্রোগ্রামটি টাইপ করতে ব্যবহৃত কীগুলির মধ্যে কীগুলির সংখ্যা (উপরের কীবোর্ডকে চূড়ান্ত রেফারেন্স হিসাবে ব্যবহার করুন)। উদাহরণস্বরূপ, এর মধ্যে দূরত্ব 3 Aএবং Fকারণ পথ A=> S=> D=> F। এর মধ্যে Nএবং এর দূরত্ব 54, কারণ আপনি যে পথেই যান না কেন এটির জন্য কমপক্ষে 4 টি পদক্ষেপ প্রয়োজন। আপনার কাজটি হ'ল সম্ভব কীবোর্ডের দূরত্ব সহ নিম্নলিখিতগুলি (ট্রেলিং স্পেস সহ) আউটপুট করা:

Q W E R T Y U I O P
 A S D F G H J K L
  Z X C V B N M

মোড়ানো:

আপনার জীবনকে আরও সহজ করার জন্য, নির্দিষ্ট কীগুলি কীবোর্ডের চারপাশে মোড়ানো করতে পারে। Left Shiftথেকে গোপন Right Shift, Caps Lockকরতে গোপন Enter, Tabকরতে গোপন \এবং ~গোপন করার Backspace। উদাহরণস্বরূপ, এর মধ্যে দূরত্ব 5 Qএবং Pকারণ Q=> Tab=> \=> ]=> [=> P

নোট: মোড়ানো শুধুমাত্র অনুভূমিকভাবে কাজ করে - আপনি বলতে পারবেন না, থেকে পদক্ষেপ, \করতেCaps Lock

স্কোরিং:

স্কোর = কীবোর্ড দূরত্ব + বাইট গণনা

উদাহরণ গণনা:

print(5);

  • p=> r== 6
  • r=> i== 4
  • i=> n== 2
  • n=> t== 3
  • t=> (== 4
  • (=> 5== 4
  • 5=> )== 5
  • )=> ;== 2

মোট: 30 + 9 = 39

মন্তব্য:

  1. ছোট হাতের অক্ষর এবং বড় হাতের অক্ষর একই কী হিসাবে গণনা করে। যদি কোনও কীতে দুটি চিহ্ন থাকে (যেমন 7এবং &) তবে সেগুলিও একই কী হিসাবে গণনা করা হয়, পুশিং শিফ্ট অন্তর্ভুক্ত করার দরকার নেই।
  2. দুর্ভাগ্যক্রমে, আপনার কোডে যদি এমন চিহ্ন প্রয়োজন হয় যা কীবোর্ডে নেই তবে আপনি এটি ব্যবহার করতে পারবেন না।
  3. কীবোর্ড চিত্রে, শীর্ষ সারিটি উপেক্ষা করা যেতে পারে। নীচের সারিটিতে আপনি কেবলমাত্র কীটি ব্যবহার করতে পারেনSpace
  4. কীগুলি অবশ্যই ইনপুট করা উচিত, আপনি ক্যারেটটি সরিয়ে নিতে তীর কীগুলি ব্যবহার করতে পারবেন না এবং তারপরে একটি কী ইনপুট করতে পারেন।

স্কোর ক্যালকুলেটর:

  • 12/27 এ আপডেট হয়েছে `=> ]এবং সম্পর্কিত বিভ্রান্তিকরণের জন্য । আপনার স্কোরগুলি আবার পরীক্ষা করুন এবং সেগুলি সম্ভবত আরও ছোট হবে (আশা করি বড় নয়!)

স্কোর গণনা করতে এখানে আপনার কোডে আটকান। আপনি যদি কখনও ত্রুটি পান বা এটি ভুল নম্বর প্রিন্ট করে তবে আমাকে জানান।

var keys = ["~1234567890-=←","\tqwertyuiop[]\\","↑asdfghjkl;\'\n","Lzxcvbnm,./R",
"AB      CDEF"];
var con =["`!@#$%^&*()_+{}|:\"<>?","~1234567890-=[]\\;\',./"];
function hexagon(k) {
  if(k === " ") return ["x","c","v","b","n","m",","];
  var p = pos(k);
  if(p === -1) return false;
  var row = p[0],col = p[1];
  var hexagon = [char(row,col-1,1),char(row-1,col),char(row-1,col+1),char(row,col+1,1),char(row+1,col),char(row+1,col-1)];
  return hexagon;
}

function char(r,c,wrap) {
  if(r < 0 || r >= keys.length) return "";
  if(r === keys.length-1 && 1 < c && c < 8) return " ";
  if(wrap) {
    if(c === -1) c = keys[r].length-1;
    if(c === keys[r].length) c = 0;
  }
  return keys[r].charAt(c);
}

function pos(c) {
    var row = -1, col = -1;
  for(var i = 0;i<keys.length;i++) {
    col = keys[i].indexOf(c)
    if( col != -1) { row = i; break;}
  }
  if(row === -1) return -1;
  return [row,col];
}


function dist(a,b,s,w) {
  if(typeof a === "object") {
    var list = [];
    for(var i = 0;i<a.length;i++) {
      list[i] = dist(a[i],b,s,w);
    }
    return list;
  }
  
	if(a==="") return Infinity;
  if(a===b) return 0;
  
 

  var p = pos(a);
  var q = pos(b);
  
  if(!w && a!==" ") {
    var chars = keys[p[0]].length;
    var opp = char(p[0],p[1] < chars/2 ? chars-1 : 0);
    return Math.min(dist(a,b,s,true),dist(a,opp,s,true)+dist(opp,b,s,true));
  }
  
   if(!s) { return Math.min(dist(a,b,true,w),dist(a," ",true,w)+dist(" ",b,true,w));}
  

   var h = hexagon(a);
  if(a === " ") return 1 + Math.min(...dist(h,b,true,w));
 if(p[0]<q[0]) {
  return 1 + Math.min(dist(h[4],b,s,w),dist(h[5],b,s,w)); 
  }
  else if(p[0] > q[0]) {
  return 1 + Math.min(dist(h[1],b,s,w),dist(h[2],b,s,w));
    }
  	if(b===" ") return Math.min(Math.abs(p[1]-7),Math.abs(2 - p[1]));
    var d = Math.abs(p[1]-q[1]);
    return Math.min(d,keys[p[0]].length-d);

  
  
  
  
}

function getTotalDistance(str) {
	for(var i = 0;i<con[0].length;i++)
  	str = str.replace(new RegExp("\\"+con[0].charAt(i),"g"),con[1].charAt(i));
  str = str.toLowerCase();
  var total = 0;
  for(var i = 0;i<str.length-1;i++) {
  	total += dist(str[i],str[i+1]);
  }
  return total;
} 
enter.onclick = function() {
 var a = getTotalDistance(program.value);
 var b = program.value.length;
 len.textContent = a;
 count.textContent = b;
 total.textContent = a+b;
};
<textarea rows=15 cols=40 id="program"></textarea>
<input type="submit" id="enter"/>
<div>
<div>Key distance: <span id="len"></span></div>
<div>Byte count: <span id="count"></span></div>
<div>Total: <span id="total"></span></div>
</div>

সম্পর্কিত:


9
আমাদের আরও একটি চ্যালেঞ্জ করা উচিত: উত্তরগুলির মতো স্কোর করার জন্য সংক্ষিপ্ততম কোড। আমি মনে করি স্কোরিং পদ্ধতিটি প্রশ্নের চেয়ে আকর্ষণীয়।
সাইয়েস

2
এছাড়াও, দয়া করে useশ্বরের ব্যবহারের ভালবাসার জন্য ===যদি না চান যে কোনও কারণের জন্য আপনি জেএস চুপচাপভাবে আপনার ধরণের চাপ দিতে এবং পারফরম্যান্স স্তন্যপান করতে চান।
সাইয়েস

5
ইউনারি / লেংগুয়েজে যে কোনও জমা দেওয়ার স্কোর 0 থাকবে
ডেনিস

1
@ ডেনিস এই ভাষাগুলিতে এর উত্তর দেওয়া কি সম্ভব? আমি সর্বোচ্চ প্রোগ্রামের দৈর্ঘ্যে একটি ক্যাপ রাখতে পারি।
জিওকাভেল

3
idk আমি মনে করি যে এটি বাস্তবের ভিত্তিতে কোনও ক্রিয়েটিভ, বৈধ ভাষাকে ... যে কাজ করে তা নির্মূল করার জন্য জিনিসগুলির আত্মায় নয়? ভাষাটি কী ভাল? এটি সিজেএম বা পাইথকে বাদ দেওয়ার থেকে আলাদা বলে মনে হচ্ছে না কারণ তাদের উত্তরগুলি খুব সামান্য বা টেক্সট-ম্যাচিং প্রশ্নের জন্য রেটিনা অপসারণ করে, এবং হ্যাঁ এটি আমাকে অদ্ভুতরূপে আঘাত করেছিল যে শীর্ষ উত্তরটি পোস্ট করার পরেও কিছুক্ষণ অবৈধ হয়ে গেছে চ্যালেঞ্জ। ভাষাটি সত্যিই বন্ধ দেখানো হলে আমি সত্যিই এর মতো উত্তরগুলি ভাগ করে নেওয়া উপভোগ করি।
djechlin

উত্তর:



33

ইউনারি , স্কোর করুন .1 6.1 * 10 618

6103247739090735580402225797524292167653462388595033897325606983093527722629493568418069722646005695215642120674994001348606253869287599178270707482456199630901069511698694317195626565008736452130034232375778047932461822258369348260249011643486476832847755830117284465136723525376668555270734061914837886192012601522703308221225195058283657800958507281265116257152529161080096092081620384043514820427911786442536988705847468796481108000358361636640985892696216392434604543586511103835032034494033598102606339253132146827455065586119645920456668064941286708686113567081095434338440184737976711767750474398662381256908308 zeros

সর্বাধিক "সৃজনশীল" সমাধান নয় তবে এটির বেস 2 উপস্থাপনাকে বেস 10 এ রূপান্তর করতে আমার কম্পিউটারে 3 মিনিট সময় লেগেছে


এই করতে ব্যবহৃত একটি আছে 0 স্কোর কিন্তু স্কোরিং নিয়ম পরিবর্তন করেছেন।

কোড দৈর্ঘ্য: ~ 6.1 * 10 618

মূল দূরত্ব: 0


3
হ্যাঁ, এটি কীভাবে কাজ করে তা আমি পেতে পারি না তবে এটি শীঘ্রই অবৈধ হতে চলেছে।
জিওকাভেল

1
@ জোকাভেল ওউ :( তবে অবৈধ নয়, এটির খুব বেশি স্কোর হবে
ডাউনওয়েট ২

হ্যাঁ, অসুস্থ আপনাকে উত্সাহ দেয়।
জিওকাভেল

3 মিনিট? আপনার আরও ভাল রূপান্তরকারী দরকার । : পি
ডেনিস

2
আমি আপনার কোড ব্লকের শেষে স্ক্রোল করেছি। আমি ভেবেছিলাম কোডটি 61032477390907355804 ...., 61032477390907355804 ... শূন্য নয়। : পি
আর

6

জাপট , স্কোর 123 119 118 116 106

42 41 40 বাইট + 81 78 77 75 66 দূরত্ব

"QWERTYUIOP
ASDFGHJKL
'ZXCVBNM"q qS r''"

("আউটপুট" বাক্সে সঠিক আউটপুট)


1
আপনার স্কোর একই থাকে।
জিওকাভেল

@ জিও ইতিমধ্যে পুনরুদ্ধার হয়েছে :)
নিকেল

@ জিও বিটিডব্লিউ, আপনি এখনই স্কোরগুলি সম্পাদনা করতে পারেন।
নিকেল

আবারও ভাল লাগল! আপনি করতে পারেন "QWERTYUIOP<br>ASDFGHJKL<br>ZXCVBNM"¬¸r'Z" Z( <br>একটি লাইন বিরতি উপস্থাপন করে), তবে এর জন্য দুটি নন-কীবোর্ড অক্ষর প্রয়োজন, সুতরাং আমার ধারণা এটি আইনী নয়। তবে কমপক্ষে আপনি কমাটি সরিয়ে ফেলতে পারেন, এটি স্বয়ংক্রিয়ভাবে sertedোকানো হয়েছে বলে।
ETH প্রোডাকশনগুলি

@ দ্বিতীয় দুর্দান্ত, ধন্যবাদ! লাইন ব্রেকের কথা ভাববেন না, আমি এইচটিএমএল
নুব

6

জাভাস্ক্রিপ্ট (ES6), স্কোর 188

alert([...`QWERTYUIOP
ASDFGHJKL
`," Z",..."XCVBNM"].join` `)

কেবলমাত্র alertআউটপুট স্ট্রিং আইংয়ের চেয়ে সবেমাত্র একটি ভাল স্কোর পায় তবে এটি আমি খুঁজে পেতে পারি এটি সেরা পদ্ধতির ...: /

বাইট: 60

মূল দূরত্ব: 128


আমি এই অ্যাপোরচের একটি পরিবর্তিত সংস্করণ চেষ্টা করেছি: এটি alert(`QWERTYUIOP<br>ASDFGHJKL<br> ZXCVBNM`.match(/\n| ?./g).join` `)যখন কাজ করে তখন এটি 65 বাইট (স্কোর 231)।
ETH প্রোডাকশনগুলি

2
আপনার স্কোর এখন 1 পয়েন্ট ছোট ..
জিয়োকাভেল


5

পাইথন, 157 , 156 , 211 , 221 পয়েন্ট

মূল দূরত্ব: 157

বাইটস: 64

তবে, মোট স্কোর 221।

l=' '.join('QWERTYUIOP\nASDFGHJKL\nZXCVBNM')
print l[:42],l[42:]

স্ট্রিংটি মুদ্রণ করে তবে একটি অতিরিক্ত স্থান যুক্ত করতে হবে। :( এখন আর লম্বা।

@ পিটু কেন, আপনি আমার সাথে এমনটি করলেন কেন?


3
আপনার স্কোর এখন 1 কম।
জিওকাভেল

ওহ, দুর্দান্ত। ধন্যবাদ @ জোকাভেল নিয়মে কী পরিবর্তন হয়েছে?
Rɪᴋᴇʀ

নিয়ম নয়, ক্যালকুলেটরে একটি বাগ ছিল
জিওকাভেল

এটি তৃতীয় লাইনের শুরুতে একাধিক স্পেস মুদ্রণ করে।
পুরক্কাডুডারী

আপনি আপনার সত্য কথা দিয়ে আমার আশা চূর্ণ করেছেন। কিন্তু এটি নির্দেশ করার জন্য ধন্যবাদ।
Rɪᴋᴇʀ

5

জাভাস্ক্রিপ্ট, স্কোর 156 187

[...`QWERTYUIOP
ASDFGHJKL`].join` `+`
  Z X C V B N M`

জাভাস্ক্রিপ্ট জন্য খারাপ না

এটি অনলাইনে চেষ্টা করুন


সতর্কতা সহ, 186 স্কোর

alert([...`QWERTYUIOP
ASDFGHJKL`].join` `+`
  Z X C V B N M`)


কিন্তু এটি স্ট্রিং প্রিন্ট না, না?
নিকেল

@ নিকেল আমি দাবি করতে পারি যে আমি এই পরিবেশটি ব্যবহার করছি যার অন্তর্নিহিত মুদ্রণ / আউটপুট রয়েছে।
ডাউনওয়েট

1
স্কোর এখন 1 কম।
জিওকাভেল

@ জোকাভেল ধন্যবাদ স্থির করেছেন
ডাউনগোট

3
আউটপুট প্রায় পেতে আপনার নিজস্ব পরিবেশ আবিষ্কার, হুঁ? যাইহোক, এটা এই একটি বাইট দ্বারা কমান সম্ভব
ETH প্রোডাকশনগুলি

4

জल्फ , 118 + 51 = 169

এখানে চেষ্টা করুন! (ব্যবহৃত স্থান বোঝাতে ব্যবহৃত ব্যাখ্যায় আন্ডারস্কোর)

R m{"QWERTYUIOP'ASDFGHJKL'ZXCVBNM"#DN+*S' RH' }"\n"
 _m                                                 map
   {"QWERTYUIOP'ASDFGHJKL'ZXCVBNM"#                  that array
                                   DN         }      with this function
                                     +*S'_            that concats (index many) spaces
                                          RH'_         with the inner array joined by spaces
R                                                    and join that
                                                      "\n"  with newlines

জल्फ, পোস্ট-প্রশ্ন আপডেট করুন, 76 + 21 = 97

এখানে চেষ্টা করুন ! আবার, আমি প্রায়শই প্রাসঙ্গিক না হওয়া পর্যন্ত আমার কোড আপডেট করি না। এখনও মজা।

R mpHDN+*S' RH' }"\n"
 _m                   map
   pH                 the keyboard array [["Q","W",...,"P"],["A",...,"L"],["Z",...,"M"]]
     DN         }      with this function
       +*S'_            that concats (index many) spaces
            RH'_         with the inner array joined by spaces
R                     and join that
                 "\n"  with newlines


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