आम तौर पर, बाइट्स, या कभी-कभी लेवेंसहाइट दूरी में चुनौतियों का सामना किया जाता है, लेकिन इस एक के लिए हम कीबोर्ड दूरी का उपयोग कर रहे हैं - प्रोग्राम टाइप करने के लिए उपयोग की जाने वाली कुंजियों के बीच कुंजी की संख्या (निश्चित संदर्भ के रूप में उपरोक्त कीबोर्ड का उपयोग करें)। उदाहरण के लिए, के बीच की दूरी Aऔर F3 है, क्योंकि पथ 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। उदाहरण के लिए, के बीच की दूरी Qऔर P5 है, क्योंकि Q=> Tab=> \=> ]=> [=> => P।
नोट: रैपिंग केवल क्षैतिज काम करता है - आप यह नहीं कह सकते, से कदम है, \करने के लिएCaps Lock
स्कोरिंग:
स्कोर = कीबोर्ड दूरी + बाइट गिनती
उदाहरण गणना:
print(5);
- p=> r== 6
- r=> i== 4
- i=> n== २
- n=> t== 3
- t=> (== 4
- (=> 5== 4
- 5=> )== 5
- )=> ;== २
कुल: 30 + 9 = 39 ।
टिप्पणियाँ:
- लोअरकेस और अपरकेस अक्षर एक ही कुंजी के रूप में गिने जाते हैं। यदि किसी कुंजी पर दो चिह्न हैं (जैसे 7और &), तो वे भी एक ही कुंजी के रूप में गिने जाते हैं, पुश शिफ्ट को शामिल करने की कोई आवश्यकता नहीं है।
- दुर्भाग्य से, यदि आपके कोड को उन प्रतीकों की आवश्यकता होती है जो कीबोर्ड पर नहीं हैं तो आप इसका उपयोग नहीं कर सकते।
- कीबोर्ड छवि पर, शीर्ष पंक्ति को अनदेखा किया जा सकता है। नीचे की पंक्ति पर आप केवल एक ही कुंजी का उपयोग कर सकते हैंSpace
- कुंजी क्रम में इनपुट की जानी चाहिए, आप कैरेट को स्थानांतरित करने के लिए तीर कुंजी का उपयोग नहीं कर सकते हैं और फिर एक कुंजी इनपुट कर सकते हैं।
स्कोर कैलकुलेटर:
- 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>
सम्बंधित:
===
जब तक कि किसी कारण से जेएस नहीं चाहते कि आप चुपके से अपने प्रकारों को सहलाएं और प्रदर्शन को रोकें।