उन कुंजियों का उपयोग करके QWERTY कीबोर्ड प्रिंट करें जो यथासंभव एक साथ बंद हैं


19

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

आम तौर पर, बाइट्स, या कभी-कभी लेवेंसहाइट दूरी में चुनौतियों का सामना किया जाता है, लेकिन इस एक के लिए हम कीबोर्ड दूरी का उपयोग कर रहे हैं - प्रोग्राम टाइप करने के लिए उपयोग की जाने वाली कुंजियों के बीच कुंजी की संख्या (निश्चित संदर्भ के रूप में उपरोक्त कीबोर्ड का उपयोग करें)। उदाहरण के लिए, के बीच की दूरी 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

टिप्पणियाँ:

  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
हमें एक और चुनौती देनी चाहिए: इस तरह के उत्तर देने के लिए सबसे छोटा कोड। मुझे लगता है कि स्कोरिंग विधि प्रश्न से अधिक दिलचस्प है।
Cyoce

2
इसके अलावा, भगवान के प्यार के लिए कृपया ===जब तक कि किसी कारण से जेएस नहीं चाहते कि आप चुपके से अपने प्रकारों को सहलाएं और प्रदर्शन को रोकें।
साइओस

5
Unary / Lenguage में किसी भी जमावड़े का स्कोर 0.23
डेनिस

1
@ डेनिस क्या उन भाषाओं में इसका जवाब देना संभव है? मैं अधिकतम कार्यक्रम की लंबाई पर एक टोपी लगा सकता हूं।
जियोकॉवेल

3
आईडीके मुझे लगता है कि यह वास्तव में चीजों की भावना में नहीं है कि यह रचनात्मक, वैध भाषा को खत्म कर दे कि यह काम करता है ...? क्या भाषा अच्छी है? यह CJam या Pyth को खत्म करने से अलग नहीं लगता है क्योंकि उनके उत्तर थोड़े बहुत कम होते हैं या पाठ-मिलान वाले प्रश्नों के लिए रेटिना को समाप्त कर देते हैं, और हाँ, यह मुझे इतना अजीब लगा कि शीर्ष उत्तर अमान्य होने के बावजूद पोस्ट किए जाने के कुछ समय बाद अमान्य हो गया। चुनौती। मुझे वास्तव में इस तरह के जवाब साझा करने में मजा आता है जब भाषा वास्तव में दिखाई जाती है।
djechlin

जवाबों:



33

यूनरी , स्कोर ~ 6.1 * 10 618

6103247739090735580402225797524292167653462388595033897325606983093527722629493568418069722646005695215642120674994001348606253869287599178270707482456199630901069511698694317195626565008736452130034232375778047932461822258369348260249011643486476832847755830117284465136723525376668555270734061914837886192012601522703308221225195058283657800958507281265116257152529161080096092081620384043514820427911786442536988705847468796481108000358361636640985892696216392434604543586511103835032034494033598102606339253132146827455065586119645920456668064941286708686113567081095434338440184737976711767750474398662381256908308 zeros

सबसे "रचनात्मक" समाधान नहीं है, लेकिन मेरे कंप्यूटर को बेस 10 के आधार 2 प्रतिनिधित्व को बदलने के लिए मेरे कंप्यूटर को ~ 3 मिनट लग गए


यह करने के लिए इस्तेमाल एक है 0 के स्कोर , लेकिन स्कोरिंग नियमों में बदलाव किया।

कोड की लंबाई: ~ 6.1 * 10 618

की दूरी: 0


3
योग्य, मुझे नहीं पता कि यह कैसे काम करता है, लेकिन यह जल्द ही अमान्य हो जाएगा।
जियोकॉवेल

1
@geokavel aww :( लेकिन अमान्य नहीं है, यह सिर्फ एक बहुत ही उच्च स्कोर होगा
डाउगोनेट

हाँ, बीमार आप एक उत्थान दे।
जियोकॉवेल

3 मिनट? आपको एक बेहतर कनवर्टर की आवश्यकता है । : पी
डेनिस

2
मैंने आपके कोड ब्लॉक के अंत में स्क्रॉल किया। मुझे लगा कि कोड 61032477390907355804 था .... नहीं, 61032477390907355804 ... शून्य। : पी
R

6

जाप्ट , स्कोर 123 119 118 116 106

42 41 40 बाइट्स + 81 78 77 75 66 दूरी

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

("आउटपुट" बॉक्स में उचित आउटपुट)


1
आपका स्कोर वही रहता है।
जियोकॉवेल

@geo पहले ही पुनर्गणित हो गया :)
nicael

@ बीजीओ, आप तुरंत ही स्कोर संपादित कर सकते हैं।
निकेल

फिर से अच्छा लगा! आप कर सकते हैं "QWERTYUIOP<br>ASDFGHJKL<br>ZXCVBNM"¬¸r'Z" Z( <br>एक लाइन ब्रेक का प्रतिनिधित्व करता है), लेकिन इसके लिए दो गैर-कीबोर्ड चार्ट की आवश्यकता होती है, इसलिए मुझे लगता है कि यह कानूनी नहीं है। लेकिन कम से कम आप कॉमा को हटा सकते हैं, क्योंकि यह स्वचालित रूप से डाला जाता है।
19

@ बहुत बढ़िया, धन्यवाद! लाइन ब्रेक के लिए, मुझे नहीं लगता कि मैं html में एक noob हूं; D
nicael

6

जावास्क्रिप्ट (ईएस 6), स्कोर 188

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

केवल मुश्किल से alertआउटपुट स्ट्रिंग की तुलना में बेहतर स्कोर मिलता है, लेकिन यह सबसे अच्छा तरीका है जो मुझे मिल सकता है ...: /

बाइट्स: 60

मुख्य दूरी: 128


मैंने इस apporach के एक संशोधित संस्करण की कोशिश की: alert(`QWERTYUIOP<br>ASDFGHJKL<br> ZXCVBNM`.match(/\n| ?./g).join` `)जबकि यह काम करता है, यह 65 बाइट्स है (स्कोर 231)।
ETHproductions

2
आपका स्कोर अब 1 अंक छोटा है ..
जियोकॉवेल


5

पायथन, 157 , 156 , 211 , 221 अंक

की दूरी: 157

बाइट्स: 64

एर्गो, कुल स्कोर 221 है।

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

स्ट्रिंग को प्रिंट करता है लेकिन एक अतिरिक्त स्थान जोड़ना पड़ता है। :( अब लंबा है।

क्यों @Pietu, तुमने मेरे साथ ऐसा क्यों किया?


3
अब आपका स्कोर 1 कम है।
जियोकॉवेल 18

ऊह, शांत। धन्यवाद @geokavel नियमों में क्या बदला?
R

नियम नहीं, कैलकुलेटर में एक बग था
geokavel

यह तीसरी पंक्ति की शुरुआत में बहुत अधिक रिक्त स्थान प्रिंट करता है।
पुरक्काकूदरी

आपने अपनी सच्ची बातों से मेरी आशाओं को कुचल दिया है। लेकिन यह इंगित करने के लिए धन्यवाद।
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`)


लेकिन यह स्ट्रिंग नहीं प्रिंट करता है, नहीं?
nicael

@nicael मैं दावा कर सकता हूं कि मैं इस वातावरण का उपयोग कर रहा हूं जिसमें अंतर्निहित मुद्रण / आउटपुट है।
डाउनगेट

1
स्कोर अब 1 कम है।
जियोकॉवेल

@geokavel धन्यवाद निश्चित
१at:४१ पर डाउनगेट २oka

3
उत्पादन, hmm के आसपास पाने के लिए अपने खुद के पर्यावरण का आविष्कार? वैसे भी, एक बाइट द्वारा इसे छोटा करना संभव है
ETHproductions

4

Jolf , 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


0

पायथन, 185 का स्कोर

print" ".join("QWERTYUIOP\nASDFGHJKL\n")+"  Z X C V B N M"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.