परिपत्र कीबोर्ड सर्पिल


24

यह एक QWERTY कीबोर्ड है।

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

हम इस कीबोर्ड पर "सर्पिल आउट" कर सकते हैं, जो जी से शुरू होता है। सर्पिल जी पर शुरू होगा, एच तक जाएगा, फिर वाई, फिर टी, फिर एफ, फिर वी, फिर बी, फिर एन, फिर जे, फिर यू , फिर आर, फिर डी, फिर सी, ... आदि आपकी चुनौती है, एक नंबर 1 ≤ एन , 26 दिया, इस सर्पिल में पहला एन अक्षर आउटपुट । (यदि आप भ्रमित हैं, तो पोस्ट के अंत में चित्रों को देखें।)

कैच? आपके कार्यक्रम का स्कोर सर्पिल के अंदर पाए गए पात्रों के सूचकांकों के समानुपाती है!

स्कोरिंग

  1. अपने कोड में प्रत्येक अक्षर (केस-असंवेदनशील) के लिए, सर्पिल में उस चरित्र के सूचकांक को अपने स्कोर में जोड़ें (1 से शुरू)।
  2. सर्पिल में नहीं हर वर्ण के लिए, अपने स्कोर में 10 जोड़ें।
  3. सबसे कम स्कोर जीतता है।

उदाहरण के लिए, कार्यक्रम print("Hello, World!")का स्कोर 300 है।

आपकी सुविधा के लिए, मैंने एक स्वचालित प्रोग्राम ग्रेडर लिखा है।

अन्य नियम

  • आपका सबमिशन एक प्रोग्राम या फंक्शन हो सकता है।
  • आप N को 0 या 1 पर शुरू कर सकते हैं और क्रमशः 25 या 26 पर समाप्त कर सकते हैं, लेकिन आउटपुट अभी भी "G" से शुरू होना चाहिए और "GHYTFVBNJURDCMKIESXLOWAZPQ" के साथ समाप्त होना चाहिए।
  • आपको सर्पिल में वर्णों को आउटपुट करना होगा ।
  • यदि कोई फ़ंक्शन है, तो आप एक स्ट्रिंग के बजाय वर्णों की सूची वापस कर सकते हैं।
  • आउटपुट के बाद आपके पास एक अनुगामी न्यूलाइन हो सकती है।
  • आप अपरकेस अक्षरों या दोनों के संयोजन के बजाय लोअरकेस अक्षरों का उपयोग कर सकते हैं।

परीक्षण के मामलों

number -> output
1 -> G
2 -> GH
5 -> GHYTF
12 -> GHYTFVBNJURD
15 -> GHYTFVBNJURDCMK
24 -> GHYTFVBNJURDCMKIESXLOWAZ
26 -> GHYTFVBNJURDCMKIESXLOWAZPQ

चित्रों

नियमित कीबोर्ड

सर्पिल अतिरंजित:

सर्पिल कीबोर्ड


3
हाल ही में स्फियर को किसी ने देखा है ...
प्यूर्फ्रेट

@Pureferret क्या आप मुझे बता सकते हैं? मुझे यकीन नहीं है कि आप क्या देखें।
कॉनर ओ'ब्रायन

@ ConorO'Brien इन स्फीयर (उपन्यास और फिल्म दोनों), एक एलियन दो अंकों के संख्यात्मक कोड का उपयोग करते हुए मनुष्यों के साथ संवाद करता है, जहां प्रत्येक संख्या बहुत समान पैटर्न में कीबोर्ड पर एक अक्षर से मेल खाती है ।
इंजीनियर टोस्ट

जवाबों:


14

जैप , 304 264 162 अंक

@ ConorO'Brien के लिए धन्यवाद 40 अंक की बचत की

;î"历锋㫿鮹㿬崴ꨜꎋΞ"csG

इसे ऑनलाइन टेस्ट करें!

अधिक से अधिक अंक बचाने के लिए, पूरे स्ट्रिंग को बेस -36 नंबर के रूप में प्रत्येक 3 अक्षरों के प्रत्येक रन की व्याख्या करके 9 यूनिकोड वर्णों में संघनित किया जाता है, फिर एक कोड बिंदु में परिवर्तित किया जाता है। कार्यक्रम में ही इस संकुचित स्ट्रिंग (जो उद्धरण सहित 110 अंक, लागत) और प्रत्येक नक्शे लेता है cयह एक करने के लिए परिवर्तित करके harcode s(आधार -36 में ट्रिंग Gके बाद ;शुरुआत में)। îइस के पहले {इनपुट} वर्णों को लेता है, जो संक्षेप में मुद्रित होता है।


11

सी, स्कोर: 544

g(g){write(1,"GHYTFVBNJURDCMKIESXLOWAZPQ",g);}

इसे ऑनलाइन आज़माएं!


... आप फ़ंक्शन को तर्क के रूप में एक ही नाम क्यों दे रहे हैं?
निधि मोनिका का मुकदमा

6
@QPaysTaxes क्योंकि gचुनौती में प्रयुक्त स्कोरिंग का सबसे सस्ता पत्र है।
स्टेडीबबॉक्स

आह, मैं कस्टम स्कोर करने से चूक गया।
निधि मोनिका का मुकदमा

11

सर्पिल , स्कोर:  61921   5127   4715   4655  4191

4.X~>v+^#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v
   X *   X X X X X X X X X X X X X X X X X X X X X X X X X
   ! >   h y t f V b n j u [ ( 1 3 2 ) ] U J N B F T Y H G
0;vgv*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*vvv****v+^v+^v+^v+^*v++4
    X X X X X X X X X X X X X X X X X X X X X X X X X X
    v v v v v v v v v v v v v v v v v v v v v v v v v v
    Y y J F V u t U [ G H B n 3 N 2 j ) h g f ] ( 1 b T

एक दुभाषिया यहाँ पाया जा सकता है

स्पष्टीकरण:

P.X~ZZ*v+^#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v
   X       X X X X X X X X X X X X X X X X X X X X X X X X X
   !       h y t f V b n j u r d c m k i e s x l o w a z p q
0;vgv*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*v*****************************************************************vP
    X X X X X X X X X X X X X X X X X X X X X X X X X X
    v v v v v v v v v v v v v v v v v v v v v v v v v v
    z y x w V u t s r q p o n m l k j i h g f e d c b a

कार्यक्रम 0चौथी पंक्ति के चरित्र पर शुरू होता है । चलाने के लिए कोड का पहला टुकड़ा है 0;vg;इनपुट के रूप में एक संख्या लेता है और इसे स्टैक में रखता है। vस्टैक में रजिस्टर (शून्य) में क्या है। इसका उपयोग काउंटर के रूप में किया जाएगा। gएक लेबल है, जब यह पहुंच जाता है, तो नियंत्रण gकोड में पत्र की अन्य घटना के लिए कूदता है ।

तो यह वह जगह है जहां नियंत्रण अब है:

X
v
g

चूंकि अन्य सभी दिशाओं में व्हॉट्सएप है, इसलिए निर्देश सूचक ऊपर की ओर बढ़ने लगता है। vस्टैक में एक शून्य रखता है, और Xस्टैक से तुरंत पॉप करता है। चूँकि पोप वैल्यू शून्य है, इंस्ट्रक्शन पॉइंटर चलता है X(अन्यथा इसे व्हॉट्सएप के रूप में माना जाता है)।

डिफ़ॉल्ट रूप से, नियंत्रण प्रवाह टर्न-राइट मोड में होता है, इसलिए अब जब यह जंक्शन तक पहुंचता है, तो निर्देश सूचक दाईं ओर मुड़ता है। vफिर से एक शून्य को स्टैक में धकेलता है, *रजिस्टर को एक से बढ़ाता है।

v*v*v
  X
  v
  g

vस्टैक में रजिस्टर (नंबर 1) में क्या है, अगले स्थानों ने निर्देश पॉइंटर ने अगले को मारते हुए दाईं ओर मुड़ने का प्रयास किया X। केवल स्टैक में जोड़ा गया मान पॉप किया गया है और रजिस्टर में रखा गया है। क्योंकि यह गैर-शून्य है, Xदर्ज नहीं किया गया है, और आईपी *इसके बदले दाईं ओर आगे बढ़ता है , फिर से रजिस्टर में मूल्य बढ़ाता है।

v*v*v*v*v
X X X X X
v v v v v
i h g f e

यह बार-बार होता है जब तक हम इस हिस्से के अंत तक नहीं पहुंच जाते हैं और एस की लाइन *शुरू हो जाती है। अब तक रजिस्टर में मूल्य 6 है, जो कि ASCII अक्षर का gऋण ASCII पत्र है a। इस प्रकार 97 *एस की एक पंक्ति के साथ हम रजिस्टर में मूल्य को बढ़ाकर 103 gकर देते हैं , जो उस पत्र से मेल खाता है जिसे हम प्रिंट करना चाहते हैं। vइसे स्टैक में धकेल दिया जाता है, और Pएक और लेबल होता है जिस पर हम Pकोड की पहली पंक्ति पर दूसरे पर जाते हैं।

यहां .स्टैक से मूल्य को पॉप करता है और इसे एक चरित्र के रूप में प्रिंट करता है। उसके बाद Xस्टैक से एक्सट्रॉनिक शून्य को पॉप करता है, फिर स्टैक ~में दो शेष मानों की तुलना करता है (काउंटर और इनपुट इनपुट होने वाले मान)। यदि मान समान हैं, तो ऑपरेटर स्टैक में शून्य रखता है (अन्यथा -1 या 1)। फिर से, नियंत्रण दाईं ओर मुड़ने का प्रयास करता है। Xस्टैक से तुलना के मूल्य को पॉप करता है, अगर यह शून्य है X, और इसे !दर्ज करने के बाद , प्रोग्राम को समाप्त करना।

P.X~ZZ*v+^
   X
   !

अन्यथा आईपी जारी है Z, जो एक लेबल है जो इस मामले में दाईं ओर केवल एक कदम कूदता है। ऐसा करने का कारण यह है कि कूदने से रजिस्टर में मूल्य शून्य हो जाता है। *रजिस्टर को बढ़ाता है और vपरिणामस्वरूप 1 को स्टैक में रखता है। +स्टैक के दो शीर्ष तत्वों (1 और काउंटर) को पॉप करता है, उन्हें जोड़ता है, और परिणाम को स्टैक में रखता है (प्रभाव में यह एक से काउंटर को बढ़ाता है)। ^स्टैक के परिणाम को स्टैक से हटाए बिना रजिस्टर से कॉपी करता है।

#रजिस्टर में vमूल्य को घटाता है, घटे हुए मूल्य को स्टैक में धकेलता है, आईपी दाईं ओर मुड़ने का प्रयास करता है, और Xस्टैक से मूल्य को हटाता है। यदि मान गैर-शून्य है तो आईपी पूर्व में चलती रहती है, रजिस्टर में मूल्य को घटाती है, जब तक कि यह शून्य को हिट नहीं करता है, और आईपी एक Xशाखा में प्रवेश करता है ।

#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v
 X X X X X X X X X X X X X X X X X X X X X X X X X
 h y t f V b n j u r d c m k i e s x l o w a z p q

शाखा काउंटर के मूल्य के अनुरूप एक लेबल की ओर जाता है। लेबल से टकराने पर, नियंत्रण उस अनुभाग में लेबल की अन्य घटना के लिए कूदता है जहां हमने लेबल के साथ शुरू किया था g, एक और पुनरावृत्ति शुरू कर रहा है। जैसा कि g, रजिस्टर में मूल्य उस अक्षर के ASCII मूल्य तक बढ़ जाता है जिसे हमें प्रिंट करने की आवश्यकता होती है। फिर चरित्र मुद्रित होता है और काउंटर बढ़ जाता है, एक और लेबल चुना जाता है। यह तब तक होता है जब तक कि अंतिम पुनरावृत्ति के बाद काउंटर इनपुट के बराबर होता है, और प्रोग्राम समाप्त हो जाता है।

संपादित करें:

P.X~Zv+^
   X *
   ! Z

जैसा है वैसा ही हासिल करता है

P.X~ZZ*v+^
   X
   !

लेकिन कम व्हाट्सएप के साथ।

2 संपादित करें:

vv****v+^v+^v+^v+^*v++P

के बजाय इस्तेमाल किया जा सकता है:

*****************************************************************vP

2
विडंबना यह है कि "स्पिरल" नामक एक अपक्षय एक सर्पिल आउटपुट समस्या में इतना उच्च स्कोर है।
शिरकाम

6

हास्केल , 471

(`take`"GHYTFVBNJURDCMKIESXLOWAZPQ")

इसे ऑनलाइन आज़माएं!

यह एक बेंचमार्क है, मुझे लगता है कि वहाँ एक बेहतर तरीका होना चाहिए, लेकिन इसका सबसे अच्छा मैंने अब तक पाया है।

व्याख्या

मुझे लगता है कि मुझे यह अच्छी तरह से हास्केल से परिचित नहीं लोगों के लिए समझाना चाहिए। फ़ंक्शन takeसूची के पहले n तत्वों को लेता है। इसे इस तरह कहा जाता है:

take n list

हम स्टिंग के पहले एन तत्वों को लेना चाहते हैं "GHYTFVBNJURDCMKIESXLOWAZPQ", इसलिए हम कुछ ऐसा चाहते हैं

f n=take n"GHYTFVBNJURDCMKIESXLOWAZPQ"

हम बेहतर कर सकते हैं, हालांकि, हम takebackticks का उपयोग करके infix कर सकते हैं

f n=n`take`"GHYTFVBNJURDCMKIESXLOWAZPQ"

और अब इसे पॉइंटफ्री बनाया जा सकता है

(`take`"GHYTFVBNJURDCMKIESXLOWAZPQ")

यह एक शर्म की बात है आंशिक आवेदन को partialक्लीजुर में उपयोग करने की आवश्यकता है । यह वही है जो मैं जा रहा था, लेकिन partialबहुत महंगा था।
कार्निजेन्टिक

3
क्या आपका स्कोर 470 नहीं है? इस सवाल में स्निपेट मुझे वैसे भी दे रहा है ...
सिर्फ एक छात्र



4

Befunge, स्कोर: 531

QPZAWOLXSEIKMCDRUJNBVFTYHG"&\>,# 1#\-# :# _@

मुझे लगता है कि यह चुनौती अधिक दिलचस्प होती अगर उत्पादन सर्पिल में भी होता।


4

TI-Basic (TI-84 Plus CE), 454 432 अंक

sub("GHYTFVBNJURDCMKIESXLOWAZPQ",1,Ans

-कोन ओ'ब्रायन से -22 अंक

साथ चलाना 5:prgmNAME

रिटर्न / प्रिंट sub से स्ट्रिंग 1के लिए Ans(संख्या इनपुट)।

टीआई-बेसिक ए है टोकन लैंगज है , इसलिए मैं इसे टोकन के बाइट मूल्यों द्वारा स्कोर कर रहा हूं।

sub( 0xbb 0x0c है, इसलिए 20 है

" 0x2a है, इसलिए * , इसलिए 10 * 2 = 20

अपरकेस अक्षर नहीं बदलते हैं, इसलिए स्ट्रिंग 351 है

, 0x2b है, इसलिए + , 10 * 2 = 20 है

1 0x31 है, इसलिए 1 , 10 है

Ans 0x72 है, जो है r 11 है

20 + 20 + 351 + 20 + 10 + 11 = 432


स्कोरिंग नियमों की इस व्याख्या के साथ, आप रचनात्मक स्थानों में अक्षरों की तलाश करके 31 और बाइट्स बचा सकते हैं। S, A, Z, P को स्टेट वैरिएबल s, a, z, p (STAT + 5 मेनू में) से बदलें, जो कि 17 अंक स्कोर करते हैं: वे 2-बाइट टोकन हैं जिनका पहला बाइट b से मेल खाता है। O, W, Q को साधारण लोअरकेस अक्षरों से बदलें, जो प्रत्येक में 20 अंक स्कोर करते हैं: वे 2-बाइट टोकन 0xBBBF, 0xBBC7, 0xBBC1 हैं।
मिशा लावरोव

3

पायथन 3, स्कोर = 762 753

1-आधारित इनपुट। यह तुच्छ दृष्टिकोण से भी बदतर है, क्योंकि यह 37 गैर-पत्रों का उपयोग करता है। हालांकि यह कुछ दिलचस्प है।

-9 धन्यवाद सिंह

h=lambda g:g and h(g-1)+chr(65+int('GYGGYHGYYGYTGTYHGYGGHGGTGHGYGYGFGHGGYGGHHGGHHYYGHGHGGYFGGYHGGTHGHTGGGGGFGGVHGT'[g*3-3:g*3],35)%26)or''

इसे ऑनलाइन आज़माएं!


1
मुझे यह तरीका पसंद है :) वैसे कुल स्कोर 9 अंक[:g*3][-3:][g*3-3:g*3]
लियो


2

ब्रेनफ ** के, स्कोर = 2690

एक से एक बाइट इनपुट 0x1करें 0x1a

>>++++>+++>>>>++++++++++[<+<-<+>>>-]<<--<+++>>>++>->+++++++++++>++++++>-------->---->-->>---------->--------->+++++>++++++++>--->+>----------->+++++++++>------->+++++++>++++++++++++>----->------>+>>+++++++[<+++++++++++[<[[+<]+<]>->[[>]>]<<<-]>-]<<[-]>,[[<]<.[-]>+[>]<-]

इसे ऑनलाइन आज़माएं!


2

APL (Dyalog) , स्कोर: 391

↑∘'GHYTFVBNJURDCMKIESXLOWAZPQ'

इसे ऑनलाइन आज़माएं!

Dyalog में लैटिन अक्षरों के लिए एकमात्र उपयोग चर नामों और कुछ सिस्टम फ़ंक्शन में है। इसके अलावा, केवल ग्लिफ़ और कुछ ग्रीक अक्षरों का उपयोग किया जाता है।


1

पायथन 3, 522

lambda g:"GHYTFVBNJURDCMKIESXLOWAZPQ"[:g]

इसे ऑनलाइन आज़माएं!

पायथन के स्ट्रिंग्स के स्लाइसिंग का उपयोग करने वाला एक अनाम लंबोदर ( "asdf"[:i]पहले iअक्षर मिलते हैं "asdf")


1

क्लोजर, 484 474 अंक

-10 अंक क्योंकि जाहिरा तौर पर %उन्हें अलग करने के लिए एक स्थान के बिना एक संख्या के बाद मौजूद हो सकता है !? मुझे वापस जाना होगा और कुछ सबमिशन में सुधार करना होगा।

#(subs"ghytfvbnjurdcmkiesxlowazpq"0%)

एक अनाम फ़ंक्शन। मूल रूप से पहले से ही पोस्ट किया गया एक क्लोजर पोर्ट है। अच्छी तरह से स्कोर! मुझे लगता है कि यह पहला क्लोजर प्रोग्राम है जो मैंने कभी लिखा है जिसमें एक भी जगह नहीं है।

(defn spiral [n]
  ; Substring the hardcoded list, going from index 0 to n
  (subs "ghytfvbnjurdcmkiesxlowazpq" 0 n))



1

भूसी , 293 बाइट्स

↑¨ghytfvb⌋ȷÜdcmkÏexl⁰Λzpq

यह सबसे छोटा है जिसे मैं ¨gHYtfvB⌋ȷÜdCmkÏex←ẆAzpq¨293 के स्कोर के करीब पा सकता हूं ।

इसे ऑनलाइन आज़माएं!

व्याख्या

ब्रूट-बल खोज, सभी निचले मामलों में सर्वश्रेष्ठ स्कोर दिया। यह मूल रूप से @Wheat जादूगर के समाधान के समान है, take( एक संपीड़ित स्ट्रिंग पर ¨) ( )।



1

एक्सेल, 490 अंक

=LEFT("GHYTFVBNJURDCMKIESXLOWAZPQ",A1)

एक्सेल आंगर्स के लिए कन्वेंशन से इनपुट लेना है A1। इसमें G122 अंकों (468) की कटौती की गई है।

=LEFT("GHYTFVBNJURDCMKIESXLOWAZPQ",G1)


1

जंग, स्कोर 443

यह अक्सर नहीं होता है कि रस्ट कोड गोल्फ में अच्छा है, लेकिन यहां यह कई भाषाओं को धड़कता है

|g|&"GHYTFVBNJURDCMKIESXLOWAZPQ"[..g]


1

जावास्क्रिप्ट ईएस 6, 527 अंक

g=>`GHYTFVBNJURDCMKIESXLOWAZPQ`.slice(0,g)

कोशिश करो !

f=g=>`GHYTFVBNJURDCMKIESXLOWAZPQ`.slice(0,g)

input.oninput = function() {
    output.value = f(input.value);
}
textarea { width: 500px; height: 6em; font-style: monospace; }
<textarea id="input"></textarea>
<textarea disabled id="output"></textarea>







0

> <> , 558 + 16 = 574 अंक

<;v? : <{"GHYTFVBNJURDCMKIESXLOWAZPQ"
  >$o1-^

-vस्टैक पर इनपुट पुश करने के लिए ध्वज का उपयोग करता है ।

स्टैक पर सर्पिल को रिवर्स ऑर्डर में धक्का देता है, फिर इनपुट को शीर्ष पर घुमाता है। फिर, जबकि स्टैक का शीर्ष गैर-शून्य है, अगले अक्षर को प्रिंट करता है और स्टैक के शीर्ष को घटाता है।

इसे ऑनलाइन आज़माएं!


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.