माचिस की तीली गिनें


20

यहां के अधिकांश लोग सात खंडों के डिस्प्ले से परिचित हैं, जिनका उपयोग माचिस की पहेलियों में भी किया जाता है। नीचे अंक हैं 0के माध्यम से 9और पत्र aके माध्यम से zछोड़कर, k,m,t,v,w, इस प्रारूप में लिखा है।

 _        _   _         _    _    _    _    _
| |   |   _|  _|  |_|  |_   |_     |  |_|  |_|
|_|   |  |_   _|    |   _|  |_|    |  |_|   _|

 _       _      _  _  _                        _   _      _               _
|_| |_  |   _| |_ |_ |   |_  |   | |   _   _  |_| |_|  _ |_      |_| |_|  _|
| | |_| |_ |_| |_ |  |_| | | | |_| |_ | | |_| |     | |   _| |_| | |   | |_

यहां चुनौती सरल है। एक इनपुट स्ट्रिंग को देखते हुए, उस स्ट्रिंग को दर्शाने के लिए आवश्यक माचिस की संख्या का उत्पादन होता है। यदि स्ट्रिंग में उपरोक्त प्रतिनिधित्व के बाहर एक चरित्र है, तो इसे अनदेखा करें (इसे 0 के रूप में गिनें)।

उदाहरण के लिए, निवेश के लिए 53, की कुल 10माचिस की तीलियों की आवश्यकता है, 5के लिए 5और 5के लिए 3है, इसलिए उत्पादन होता है 10

इनपुट के helloलिए कुल 19माचिस की आवश्यकता होती है h (4), e (5), l (3), l (3), o (4), इसलिए आउटपुट है 19

स्पष्टता के लिए, यहां प्रत्येक वर्ण बनाने के लिए आवश्यक माचिस हैं:

0 -> 6
1 -> 2
2 -> 5
3 -> 5
4 -> 4
5 -> 5
6 -> 6
7 -> 3
8 -> 7
9 -> 6
a -> 6
b -> 5
c -> 4
d -> 5
e -> 5
f -> 4
g -> 5
h -> 4
i -> 2
j -> 4
l -> 3
n -> 3
o -> 4
p -> 5
q -> 5
r -> 2
s -> 5
u -> 3
x -> 5
y -> 4
z -> 5

अब ट्विस्ट के लिए, और उनमें से दो हैं।

  • पहला यह है कि इनपुट केस माना जाता है में संवेदनशील। यही है, Aऔर aदोनों को 6मैचस्टिक्स के लिए गिनना चाहिए , भले ही दृश्य प्रतिनिधित्व एक अपरकेस जैसा दिखता है A
  • आपका स्कोर इस एल्गोरिथ्म के माध्यम से चलाया जाने वाला आपका स्रोत कोड है, साथ ही बाइट्स में आपके स्रोत कोड की लंबाई कम है। उदाहरण के लिए, यदि आपका स्रोत कोड है abc123, तो आपका स्कोर होगा 6+5+4+2+5+5 = 27 + 6 = 33। यदि आपका स्रोत कोड था #&@()*, तो आपका स्कोर होगा 0 + 6 = 6

इनपुट / आउटपुट उदाहरण

0    -> 6
53   -> 10
111  -> 6
112  -> 9
8888 -> 28
hello -> 19
PPCG  -> 19
Programming Puzzles & Code Golf -> 99
#&()mt!!~ -> 0
*DḌƤÆE%Ḅċ0 -> 16

नियम

  • यदि लागू हो, तो आप मान सकते हैं कि इनपुट / आउटपुट आपकी भाषा के देशी पूर्णांक प्रकार में फिट होगा।
  • इनपुट और आउटपुट किसी भी सुविधाजनक विधि द्वारा दिया जा सकता है ।
  • या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं। यदि कोई फ़ंक्शन है, तो आप इसे प्रिंट करने के बजाय आउटपुट वापस कर सकते हैं।
  • मानक खामियों को मना किया जाता है।

2
टी आमतौर पर |_\n|_(लोअरकेस t) के रूप में लिखा जाता है
12M2121

@ 12Me21 मैंने ऐसा कुछ करने पर विचार किया था, लेकिन मुझे नहीं लगा कि यह पत्र के काफी करीब लग रहा है, इसलिए मैंने इसे छोड़ दिया।
AdmBorkBork

आपके पत्र X (H) के बारे में क्या? (ठीक है, मुझे अब इस बात से कोई फ़र्क नहीं पड़ता कि इसका जवाब है।)
१२

बाहर के चार्ट के लिए [0-9a-z], क्या हमें 0 माचिस की गिनती करनी चाहिए? यही मैं आपके स्कोर से समझता हूं कि इस एल्गोरिथ्म के माध्यम से आपका स्रोत कोड चलाया जाता है , साथ ही बाइट में आपके स्रोत कोड की लंबाई
एर्ग आउटफोलर

@EriktheOutgolfer हाँ, यह सही है।
AdmBorkBork

जवाबों:


8

पायथन 2 , 97 बाइट्स + 237 मैच = 334

lambda w:sum(map(('1ir'*2+'7lnu'*3+'4cfhjoy'*4+'235bdegpqsxz'*5+'069a'*6+'8'*7).count,w.lower()))

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

यह एक स्ट्रिंग उत्पन्न करके काम करता है जहां प्रत्येक निर्माण योग्य वर्ण उस चरित्र को बनाने के लिए आवश्यक समान मात्रा में मैचस्टिक्स दिखाई देता है


+'069a8'*6+'8')इसके बजाय एक चरित्र को बचाया जा सकता है +'069a'*6+'8'*7)
xbarbie

@xbarbie वास्तव में, लेकिन इससे मैच की संख्या बढ़ जाएगी, जिसके परिणामस्वरूप +3 अंक
रॉड

6

पर्ल 5 के साथ -pF, 95 बाइट्स + 14, 109

eval~"Û£Ô„…ÊÏÉÎÍÍÊÌÊËËÊÊÉÉÈÌÇÈÆÉžÉʜ˛ʚʙ˘ʗ˖͕˓̑ÌËÊŽÊ͌ʊ̇ʆËÂÐÑИ‚ÒÁ„Ô“œ‚™¿¹"}{

यह इसके बराबर है:

$\+={z506122535445566738796a6b5c4d5e5f4g5h4i2j4l3n3o4p5q5r2s5u3x5y4=~/./g}->{+lc}for@F

लेकिन ~ऑपरेटर का उपयोग करके हम उच्च-बाइट वर्णों का उपयोग कर सकते हैं और वास्तव में बाइट्स का त्याग किए बिना बहुत से पात्रों से बच सकते हैं।

अभी भी काफी हद तक टन का स्कोर, सहायता के साथ भी!

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

इस समाधान में unprintables होते हैं, इसलिए यहाँ बाइट-काउंट को सत्यापित करने के लिए एक प्रतिवर्ती हेक्स डंप है:

00000000: 6576 616c 7e22 dba3 d4c2 8485 cacf c9ce  eval~"..........
00000010: cdcd cacc cacb cbca cac9 c9c8 ccc7 c8c6  ................
00000020: c99e c99d ca9c cb9b ca9a ca99 cb98 ca97  ................
00000030: cb96 cd95 cb93 cc91 cc90 cb8f ca8e ca8d  ................
00000040: cd8c ca8a cc87 ca86 cbc2 81d0 d1d0 9882  ................
00000050: d2c1 84d4 939c 8299 908d bfb9 227d 7b    ............"}{

क्यों }{? इसे छोड़ दें और -nविकल्प। इसके अलावा, आप forgeting रखने +lcके बजाय lc():-)
टन Hospel

@ टोनहोम गॉडडामिट! मैंने अपनी दोनों पोस्टों के माध्यम से भी देखा और मुझे याद नहीं आया कि मैं किस पोस्ट पर इसे देखूंगा और +तुरंत मन में वसंत नहीं आएगा! मुझे nअपनी मशीन पर जरूरत है और मैं इसे छोड़ सकता हूं!
डोम हेस्टिंग्स

क्षमा करें, मैं चूक गया। मेरा मतलब था "ड्रॉप द }{एंड -p" (और इसे बदल दें -nयदि आपके पर्ल को अभी भी इसकी आवश्यकता है। यह आजकल किसी भी तरह से गिनती नहीं करता है)
टन हास्पेल

@TonHospel मैंने अपने कोड को नवीनतम, उफ़ पर अद्यतन नहीं किया है ...
डोम हेस्टिंग्स

6

जावास्क्रिप्ट (ईएस 6), 198 (102 बाइट्स + 96 माचिस)

@ L4m2 के लिए 5 अंक की बचत की

v=>[...v].map(w=>t+=('{w__^_{]|{{_^__^_^w^~]~]^__w_~]~~_^_'[parseInt(w,36)]+v).charCodeAt()%9,t=+[])|t

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

कैसे?

हम ASCII कोड modulo 9 अक्षरों का उपयोग करते हैं जो माचिस की तीली की संख्या को एनकोड करने के लिए कोई जुर्माना नहीं जोड़ता है।

 char. | code | modulo 9
-------+------+-----------------
   ~   |  126 |   0
   v   |  118 |   1  (not used)
   w   |  119 |   2
   ]   |   93 |   3
   ^   |   94 |   4
   _   |   95 |   5
   {   |  123 |   6
   |   |  124 |   7

हमें मामले के बारे में चिंता करने की आवश्यकता नहीं है क्योंकि parseInt()मामला असंवेदनशील है।

ऐसे पात्रों के लिए जो मेल नहीं खाते [0-9A-Za-z] से , parseInt()रिटर्न NaNऔर स्ट्रिंग लुकअप में परिणाम मिलता है undefined। एक बार एक स्ट्रिंग के लिए coerced, "undefined".charCodeAt()ASCII कोड देता है "u", जो कि 117 है । सुविधाजनक, 117 सापेक्ष 9 देता 0 अपेक्षा के अनुरूप।


v=>[...v].map(w=>t+='~{w__^_{]|{{_^__^_^w^~]~]^__w_~]~~_^_'.charCodeAt(1+parseInt(w,36))%9,t=+[])|t 1 कम
l4m2

5

जेली , 42 बाइट्स + 0 माचिस = 42 अंक

“ṄḟṭkɗØæ⁶ṡ“£ƈṠ¤żȥṬ}ė$t¿ƬⱮȷ|çƓ’×/ṚṚæ.ċЀØW$

-2 अंकों के लिए @JonathanAllan को धन्यवाद!

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

यह काम किस प्रकार करता है

“ṄḟṭkɗØæ⁶ṡ“£ƈṠ¤żȥṬ}ė$t¿ƬⱮȷ|çƓ’

ऐसे साहित्य जो शुरू होते हैं और विभाजन के साथ समाप्त होते हैं , शेष पात्रों को जेली के कोड पृष्ठ में उनके 1-आधारित सूचकांकों के साथ बदल देते हैं, फिर जीव विशेष आधार 250 से पूर्णांक में परिवर्तित करते हैं।

यह विशेष रूप से शाब्दिक सांकेतिक शब्दों में बदलना है

[3096734725226860846495, 211369264881118657055472842435156679693648].

×/ गुणन द्वारा कम करता है, उपज

654554542403034552503005456545545424030345525030054562554563760

(इस पूर्णांक को सीधे एनकोड करने से 6 बाइट बचती हैं, लेकिन लागत 28 माचिस है।)

ṚṚदो बार पलटता है; पहली कॉल अपने अंक सरणी के लिए एक पूर्णांक को बढ़ावा देती है। यह प्रदान करता है

[6, 5, 4, 5, 5, 4, 5, 4, 2, 4, 0, 3, 0, 3, 4, 5, 5, 2, 5, 0, 3, 0, 0, 5, 4, 5, 6, 5, 4, 5, 5, 4, 5, 4, 2, 4, 0, 3, 0, 3, 4, 5, 5, 2, 5, 0, 3, 0, 0, 5, 4, 5, 6, 2, 5, 5, 4, 5, 6, 3, 7, 6, 0]

ċЀØW$मायने रखता है ( ċ) प्रत्येक की घटनाओं ( Ѐ) के चरित्रØWइनपुट स्ट्रिंग "A ... Za ... z0 ... 9_" ( ) ।

अंत æ.में डॉट उत्पाद लेता है, माचिस की तीलियों में प्रत्येक वर्ण गणना को गुणा करके, फिर राशि लेता है।


एक बाइट और बेस डीकंप्रेसन और मोडुलो Dको बचाने के बजाय बड़ी संख्या के एक फैक्टराइजेशन का उपयोग करें । इसे ऑनलाइन आज़माएं
जोनाथन एलन

बाइट ... गलत बिंदु :)
जोनाथन एलन

1
और एक और के साथ Ɗ। धन्यवाद!
डेनिस

3

पर्ल 5 -p , 90 64 कोड + 9 eval harness + 14 माचिस = 87

(उनके शाब्दिक 1 बाइट संस्करण द्वारा हेक्स कोड की जगह नहीं दावा किया स्कोर के लिए के रूप में TIO की कोशिश करता है UTF-8)

eval~"\xdb\xa3\xd4\xc2\x86\xd0\xcf\xd2\xc6\x9e\xd2\x85\xd0\xc9\xcd\xca\xca\xcb\xca\xc9\xcc\xc8\xc9\xc9\xca\xcb\xca\xca\xcb\xca\xcb\xcd\xcb\xcf\xcc\xcf\xcc\xcb\xca\xca\xcd\xca\xcf\xcc\xcf\xcf\xca\xcb\xca\xd0\x8d\x99\x90\x8d\xdf\x93\x9c\xc2\x81\xd0\xd1\xc0\xd0\x98"}{

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

पूरक स्ट्रिंग के अंदर कोड:

$\+=y/0-9a-z/625545637665455454240303455250300545/rfor lc=~/.?/g

3

जेली , 34 बाइट्स + 3 मैच = 37

⁽[ɱד®-&]Ṙṙ£⁺ÐĊṂⱮɼ ’‘ḤṚæ.ŒlċЀØWṚƊ

वर्णों की एक सूची को स्वीकार करने और पूर्णांक वापस करने के लिए एक विवादास्पद लिंक।

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

कैसे?

डेनिस के जेली जवाब के समान तरीके से काम करता है लेकिन पर्याप्त प्रयास किया है कि मुझे लगता है कि यह एक और जवाब वारंट करता है। मुख्य अंतर यह है कि यह तीन मैचों की लागत के लिए इनपुट को कम करता है ( Œlइसमें एक l) है जो तब लागत सरणी बनाने के लिए बहुत कम संख्या में उपयोग करने की अनुमति देता है। मुश्किल बिट संक्षिप्त रहते हुए मैचों के बिना उस संख्या का निर्माण करने का एक तरीका खोज रहा था।

ØWपैदावार "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"इसलिए कम-केस इनपुट इनपुट की गणना हमेशा 26 शून्य से शुरू होती है। हम इसे उल्टा कर सकते हैं और 63 की लंबाई के बजाय लंबाई 37 की एक सरणी के साथ एक डॉट-उत्पाद कर सकते हैं।

⁽[ɱד®-&]Ṙṙ£⁺ÐĊṂⱮɼ ’‘ḤṚæ.ŒlċЀØWṚƊ - Link: list of characters
⁽[ɱ                                - literal                                     23913
    “®-&]Ṙṙ£⁺ÐĊṂⱮɼ ’               - literal         136861653160003879166772353166783
   ×                               - multiply  = 3272772712015172762515027281277281879
                    ‘              - increment = 3272772712015172762515027281277281880
                     Ḥ             - double    = 6545545424030345525030054562554563760
                      Ṛ            - reverse (implicit decimal list) -> [0,6,7,3,6,5,4,5,5,2,6,5,4,5,0,0,3,0,5,2,5,5,4,3,0,3,0,4,2,4,5,4,5,5,4,5,6]
                                   -                     (to align with: _ 9 8 7 6 5 4 3 2 1 0 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)
                                 Ɗ - last four links as a monad:
                         Œl        -   lower-case (the input)
                              ØW   -   word -> "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"
                            Ѐ     -   map across right:
                           ċ       -     count (right character in lower-cased input)
                                Ṛ  -   reverse (to align with the values as shown above)
                       æ.          - dot-product




1

रूबी , 125 बाइट्स + 87 माचिस = 212

->m{v=->w,k{w.scan(/./).map &k};v[m,->t{v["!#&&;&=$(==&;&&;&;#;!$!$;&&#&!$!!&;&",->k{k.ord%11}][t.to_i 36].to_i+(t==?0?6:0)}].sum}

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

भारी रूप से अर्नुल्ड के जावास्क्रिप्ट उत्तर से प्रेरित है ।

आम तौर पर एक लैम्ब्डा को केवल दो बार इस्तेमाल करने की घोषणा करने की लागत इसके लायक नहीं है, लेकिन बदले scanapमें " " का मैचस्टिक वजन .scan(/./).map। यह एक मजेदार चुनौती थी!

->m{
  v=->w,k{w.scan(/./).map &k};                # v is a lambda taking a string and a block
  v[m,->t{                                    # Transform each char t of the input:
    v["!#&&;&=$(==&;&&;&;#;!$!$;&&#&!$!!&;&", # Transform each char of this magic string
      ->k{k.ord%11}                           #  into a matchstick count ([0,2,5,5,4,5...])
    ][t.to_i 36]+                             # Parse t as a base 36 index into the counts
    (t==?0?6:0)                               # If t was "0", add 6 matchsticks
  }].sum                                      # Add the counts for all characters
}


1

आर, 112 बाइट्स + 319 मैच = 431 स्कोर

sum(strtoi(el(strsplit(chartr("0-9a-z","625545637665455454240303455250300545",tolower(scan(,""))),""))),na.rm=T)

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

कुदोस टू ग्यूसेप जो इस सुधार के साथ आए।

पुराना संस्करण, 143 बाइट्स + 454 मैच = 597 स्कोर

b=el(strsplit(chartr("0123456789abcdefghijlnopqrsuxyz","6255456376654554542433455253545",tolower(readline())),""))
sum(as.numeric(b[b%in%0:9]))

el()TIO पर फ़ंक्शन को काम करने के लिए , आपको उपयोग करने की आवश्यकता है library(methods)

Gosh dang it, आर वर्बोज़ है!


TIO, जो भी कारण से, स्वचालित रूप से methodsपैकेज को लोड नहीं करता है , लेकिन चूंकि यह एक baseपैकेज है, मैंने हमेशा इसे हेडर में छायांकित किया है और इसे बाइट-काउंट के लिए नहीं गिना है। readlineयह TIO पर भी काम नहीं करेगा क्योंकि यह एक इंटरैक्टिव सत्र नहीं है। यह निश्चित रूप से गोल्फ है, हालांकि।
Giuseppe


^ रिक्त स्थान वाले इनपुट के बारे में उद्धरण की आवश्यकता है, हालांकि।
ग्यूसेप

इसके अलावा, मैंने अभी आर गोल्फिंग के लिए एक चैटरूम शुरू किया ! ! मैंने बहुत से अलग-अलग उपयोगकर्ताओं द्वारा हाल ही में आर में बहुत सारे उत्तर देखे हैं, जो काफी उत्साहजनक है :)
Giuseppe

@Giuseppe मुझे लगता है कि आपको अपना जवाब अलग से पोस्ट करना चाहिए। यह सिद्धांत में अलग है और मेरे लिए बहुत बेहतर है।
आंद्रे

1

पर्ल 6 , 87 बाइट्स + 26 माचिस = 113

{+[+] (~'򘮉򛫡񯌞𺪯񯉒񉘁'.ords~~m:g/\w/)[m:g/<[/..{]-[\W_]>/>>.&{:٣٦(~$_)}]}

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

कुछ गैर- ASCII यूनिकोड वर्णों का उपयोग करता है। लुकअप तालिका एक यूनिकोड स्ट्रिंग में एन्कोडेड है:

say '򘮉򛫡񯌞𺪯񯉒񉘁'.ords;
# (625545 637665 455454 240303 455250 300545)

अक्षर अरबी-इंडिक अंकों का उपयोग करके बेस -36 रूपांतरण के साथ सूचकांकों में परिवर्तित होते हैं:

:٣٦('z'); # is equivalent to
:36('z');

1

sed, 367 (स्रोत कोड बाइट्स) + 532 (स्रोत कोड के लिए मैचस्टिक्स की राशि) = 899

s/[^0-9a-jln-suxyz]//Ig;/^$/{s/.*/0/;b};s/.+/&; %1ir %%7lnu %%%4cfhjoy %%%%235bdegpqsxz %%%%%069a %%%%%%8/;:1;s/([^% ])(.+ (%+)[^ ]*\1)/%\3 \2/I;/ ;/!b1;s/;.+//;s/^/,;/;:2;s/(;[^%]*)(%+)/\2\1/;:3;s/,%{10}/%,/;s/^%/,&/;/%{10}/b3;/;.*%/b2;:4;s/,[;,]/,0,/;/,[;,]/b4;s/%{9}/9/g;s/%{8}/8/g;s/%{7}/7/g;s/%{6}/6/g;s/%{5}/5/g;s/%%%%/4/g;s/%%%/3/g;s/%%/2/g;s/%/1/g;s/[^0-9]//g

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

बहु-पंक्ति संस्करण:

s/[^0-9a-jln-suxyz]//Ig
/^$/{s/.*/0/;b}
s/.+/&; %1ir %%7lnu %%%4cfhjoy %%%%235bdegpqsxz %%%%%069a %%%%%%8/
:1
s/([^% ])(.+ (%+)[^ ]*\1)/%\3 \2/I
/ ;/!b1
s/;.+//
s/^/,;/
:2
s/(;[^%]*)(%+)/\2\1/
:3
s/,%{10}/%,/
s/^%/,&/
/%{10}/b3
/;.*%/b2
:4
s/,[;,]/,0,/
/,[;,]/b4
s/%{9}/9/g
s/%{8}/8/g
s/%{7}/7/g
s/%{6}/6/g
s/%{5}/5/g
s/%%%%/4/g
s/%%%/3/g
s/%%/2/g
s/%/1/g
s/[^0-9]//g

स्पष्टीकरण:

उपरोक्त स्क्रिप्ट लाइन द्वारा मानक इनपुट लाइन पढ़ती है (पैटर्न स्पेस में - सामान्य "sed तरीका") और, प्रत्येक पंक्ति के लिए, यह उस लाइन में सभी माचिस-प्रतिनिधित्व योग्य वर्णों का प्रतिनिधित्व करने के लिए आवश्यक मैचस्टिक्स की मात्रा को आउटपुट करता है। इनपुट की प्रत्येक पंक्ति के लिए गणना निम्नानुसार होती है:


s/[^0-9a-jln-suxyz]//Ig

सबसे पहले, हम प्रत्येक वर्ण को हटाते हैं, जिसके लिए हमारे पास पैटर्न स्पेस से एक समान माचिस का प्रतिनिधित्व (जैसा कि प्रश्न पर दिया गया है) नहीं है। यही है, हम प्रत्येक वर्ण को हटाते हैं जो या तो "0" से "9" तक का अंक नहीं है, "a" से "j", "n" से "s", "l", "u" से एक अक्षर है। "x", "y" या "z"। अपरकेस और लोअरकेस अक्षरों को एक समान माना जाता है।

/^$/{s/.*/0/;b}

यदि हम एक खाली पैटर्न स्थान के साथ समाप्त होते हैं, तो हम 0 प्रिंट करते हैं (स्वचालित रूप से एक नई पंक्ति का अनुसरण करते हैं, जैसे कि sed हमेशा करता है जब तक कि आप इसके लिए एक विशेष ध्वज पास नहीं करते हैं), स्क्रिप्ट के सभी पीछे की रेखाओं को छोड़ दें और अगले "sed साइकिल" में आगे बढ़ें ( यानी, इनपुट की अगली लाइन पढ़ें और पहले कमांड से फिर से प्रोसेसिंग को दोहराएं जब तक कि इनपुट की कोई और लाइन प्रोसेस न हो जाए)।

s/.+/&; %1ir %%7lnu %%%4cfhjoy %%%%235bdegpqsxz %%%%%069a %%%%%%8/

अन्यथा, यदि पैटर्न स्पेस खाली नहीं है, तो हम इसे दो "सब-स्पेस" में विभाजित करते हैं , जो अर्धविराम द्वारा अलग होता है: सबसे पहले इनपुट स्पेस आता है , जो शुरू में उन सभी कैरेक्टर द्वारा बनता है, जिन्हें पैटर्न स्पेस से हटाने के बाद नहीं निकाला गया था। लाइन 1 का निष्पादन; इसके बाद अर्धविराम आता है, और इसके बाद मानचित्र स्थान

मैप स्पेस हमें बताता है कि प्रत्येक प्रासंगिक अल्फ़ान्यूमेरिक चरित्र का प्रतिनिधित्व करने के लिए 1 के बगल में कितने मैचस्टिक्स हैं। यदि हम यह जानना चाहते हैं कि मानचित्र अंतरिक्ष में किसी भी अल्फ़ान्यूमेरिक वर्ण का प्रतिनिधित्व करने के लिए कितने माचिस आवश्यक हैं, तो हम उस वर्ण के बाईं ओर सन्निहित% s के पहले क्रम की तलाश करते हैं, और उत्तर% s की संख्या का होगा। वह अनुक्रम प्लस 1. तो, उदाहरण के लिए, "b" का प्रतिनिधित्व करने के लिए आवश्यक माचिस की संख्या 4 + 1 = 5 है; "y", 3 + 1 = 4 का प्रतिनिधित्व करने के लिए "4", 3 + 1 = 4 का प्रतिनिधित्व करना; और इसी तरह।

:1
s/([^% ])(.+ (%+)[^ ]*\1)/%\3 \2/I
/ ;/!b1

यह एक पाश है। अब हम हर वर्ण को% (जिसके पूर्ण) अनुक्रम के इनपुट स्पेस में बदल देंगे, जिसकी संख्या उस वर्ण का प्रतिनिधित्व करने के लिए आवश्यक राशि से मेल खाती है, और एक सफेद स्थान वर्ण (फिर, अपरकेस और लोअरकेस अक्षर) द्वारा उस अनुक्रम का पालन करें वैसा ही उपचार)। यह निर्धारित करने की कसौटी कि क्या लूप का अंत होना चाहिए, यह जांचने के लिए कि क्या पैटर्न स्पेस में अर्धविराम के तत्काल बाईं ओर एक सफेद स्थान वर्ण है: यदि वह स्थिति रखती है, तो हम लूप को समाप्त करते हैं और अगली पंक्ति में जारी रखते हैं।

s/;.+//
s/^/,;/

वे दो पंक्तियाँ पैटर्न स्पेस से अर्धविराम और उसके बाद की सभी चीजों को हटा देती हैं और फिर पैटर्न स्पेस की शुरुआत में एक कॉमा और एक अर्धविराम सम्मिलित करती हैं। अब हमारे पास पैटर्न स्पेस एक बार फिर से दो नए उप-स्पेस में विभाजित है: सेमीकोलन से पहले एनालॉग रिजल्ट स्पेस और एनालॉग इनपुट स्पेस बाद ।

एनालॉग इनपुट स्पेस वह है जिसे हमने पहले "इनपुट स्पेस" कहा है, लेकिन एक अलग रूप में: इसमें अब सफेद स्थान द्वारा अलग किए गए%% के अनुक्रम शामिल हैं। एनालॉग इनपुट स्पेस में इस तरह के% की कुल संख्या प्रारंभिक इनपुट चरित्र स्ट्रिंग का प्रतिनिधित्व करने के लिए आवश्यक मैचस्टिक्स की समान संख्या है, अर्थात, वह संख्या परिणाम है। लेकिन हमें उस परिणाम को दशमलव संकेतन में छापना चाहिए, न कि प्रतिशत संकेतों के अनुक्रम के रूप में। एनालॉग रिजल्ट स्पेस का उद्देश्य रिजल्ट के प्रत्येक अंक का एनालॉग रिप्रेजेंटेशन रखना होता है, जबकि हम एक दूसरे के एनालॉग इनपुट स्पेस में% के प्रत्येक सन्निहित अनुक्रम को जोड़कर उस परिणाम की गणना करते हैं। अगला लूप उस राशि का प्रदर्शन करता है:

:2
s/(;[^%]*)(%+)/\2\1/
    :3
    s/,%{10}/%,/
    s/^%/,&/
    /%{10}/b3
/;.*%/b2
  1. सबसे पहले, लेबल 2 के बाद , हम एनालॉग इनपुट स्पेस से सेमीकोलोन के तत्काल बाईं ओर के सेमीफाइनल के बाद के% रिग्रेसिव सीक्वेंस को ले जाते हैं, एनालॉग रिजल्ट स्पेस में;

  2. अगला, हम एक उप-लूप (लेबल 3 ) में जाते हैं जो निम्नलिखित गणना करता है:

    • यदि अनुरूप परिणाम स्थान में अल्पविराम के बाद दस% का सन्निहित अनुक्रम होता है, तो हम उन% को हटा देते हैं और अल्पविराम के बाईं ओर तुरंत एक% लगाते हैं। इसे सीधे शब्दों में कहें, तो यह इंगित करता है कि परिणाम में दशमलव स्थानों में से एक ने 9 से अधिक इकाइयों का अधिग्रहण किया है, इसलिए हम उस दशमलव स्थान से 10 यूनिट दूर ले जाते हैं और अगले बड़े दशमलव स्थान में 1 इकाई जोड़ते हैं;

    • यदि पैटर्न स्पेस में "%" पहला वर्ण है, तो हम इसके ठीक पहले एक नया अल्पविराम सम्मिलित करते हैं। यह इंगित करता है कि राशि एक मूल्य पर पहुंच गई है, जिसका दशमलव प्रतिनिधित्व पिछले मूल्य की तुलना में बाईं ओर एक और दशमलव स्थान है;

    • यदि अभी भी एनालॉग रिजल्ट स्पेस में दस% का कोई सन्निहित अनुक्रम है, तो हम 3 लेबल पर वापस जाते हैं और इस प्रक्रिया को दोहराते हैं। अन्यथा, हम इस उप-लूप से बाहर निकलते हैं और अगली पंक्ति में कदम रखते हैं।

  3. अब, अगर एनालॉग इनपुट स्पेस (यानी अर्धविराम के बाद) में अभी भी कोई "%" है, तो इसका मतलब है कि कुल योग में अभी भी कुछ संख्या में मैचस्टिक्स हैं - इसलिए हम लेबल 2 पर वापस जाते हैं ।

एक बार योग पूरा होने पर, हम कोड के अंतिम लूप में कदम रखते हैं:

:4
s/,[;,]/,0,/
/,[;,]/b4

यहां, हम बाईं ओर अल्पविराम या अर्धविराम या दाईं ओर एक अल्पविराम द्वारा बनाए गए वर्ण के प्रत्येक जोड़े की जांच करते हैं। हम ऐसे सभी पात्रों को दो कॉमा के अंदर "0" से बदल देते हैं।

s/%{9}/9/g
s/%{8}/8/g
s/%{7}/7/g
s/%{6}/6/g
s/%{5}/5/g
s/%%%%/4/g
s/%%%/3/g
s/%%/2/g
s/%/1/g

कोड का उपरोक्त टुकड़ा काफी सरल है: हम दशमलव परिणाम वर्ण के अनुरूप परिणाम स्थान में% के प्रत्येक सन्निहित अनुक्रम को बदलते हैं जो प्रत्येक विशेष क्रम में% s की संख्या से मेल खाता है।

s/[^0-9]//g

अंत में, हम हर गैर-अंक वाले चरित्र को पैटर्न स्पेस से हटाते हैं और जो परिचित रहता है वह अंतिम परिणाम है। उस मान को मानक आउटपुट पर मुद्रित किया जाता है और अगले sed चक्र शुरू होता है, अगर संसाधित करने के लिए कोई और इनपुट लाइनें हैं।




1

जावा 10, 452 432 416 404 स्कोर (145 बाइट्स + 259 मैच)

k->{int m=0,t;for(var w:k)for(t=m-m;t<'';)m+="1ir 7lnu 4cfhjoy 235bdegpqsxz 069a 8".split(" ")[t++].contains((char)(w|32)+"")?-~t:t-t;return m;}

स्पष्टीकरण:

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

k->{                   // Method with character-array parameter and int return-type
  int m=0,             //  Result-integer, starting at 0
      t;               //  Index-integer
  for(var w:k)         //  Loop over the input String-array
    for(t=m-m;t<'';)   //   Inner loop over the parts array with index [0,6)
      m+="1ir 7lnu 4cfhjoy 235bdegpqsxz 069a 8".split(" ")[t++]
                       //     If the current part ordered by amount of matches (2-8)
         .contains((char)(w|32)+"")?
                       //     contains the current (lowercase) letter
          -~t          //      Increase the result by the index + 2
         :             //     Else:
          t-t;         //      The result remains the same by adding 0
  return m;}           //  Return the result
  • $ραετवर्णों के बजाय परिवर्तनीय नामों का उपयोग किया जाता है। संपादित करें: चर नामkmtvw का उपयोग अब इसके बजाय किया जाता है, क्योंकि उन्हें चुनौती विवरण के अनुसार मैचों द्वारा नहीं बनाया जा सकता है।
  • ''(unprintable) के बजाय प्रयोग किया जाता है 6
  • m-mऔर t-tके बजाय इस्तेमाल कर रहे हैं 0
  • (char)(w|32)+""w.toLowerCase()स्ट्रिंग-सरणी इनपुट के साथ उपयोग किए जाने वाले वर्ण-सरणी इनपुट के साथ।

0

AutoHotkey , 148 बाइट्स + 345 माचिस = 493

यह एक छोटी चुनौती थी।

n:=["1ir","7lnu","4cfhjoy","235bdegpqsxz","09a5",7+1]
Loop Parse,i
{r:=A_LoopField
Loop % n.Length()
{l:=A_Index
if InStr(n[l],r)
u+=l+1
}}
send % u

0

पायथन 3 , 123 बाइट्स + 65 मैच = 188

lambda w,m='',t='',k=ord:sum(~-k((m+t+m+''+t)[k(v)%77])*('/'<v<'{')for v in w)

एक अनाम फ़ंक्शन एक स्ट्रिंग को स्वीकार करता है और एक पूर्णांक लौटाता है।

कई गैर-मुद्रण योग्य वर्ण शामिल हैं (विशेष रूप से एक से आठ तक बाइट्स)।

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


0

चारकोल , 48 बाइट्स + 3 = 51

IΣEθ⎇№α↥ιI§”)➙⊞←!Σw➙⊙↘⁴↘”⌕α↥ι∧№IX²φιI§”)⧴u↑$◨”Iι

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

IΣEθ

इनपुट के वर्णों पर लूप करें, प्रत्येक के माचिस की संख्या की गणना करें, फिर परिणाम का योग करें, स्ट्रिंग में कनवर्ट करें, और स्पष्ट रूप से प्रिंट करें।

⎇№α↥ι

यदि यह एक पत्र है ...

I§”)➙⊞←!Σw➙⊙↘⁴↘”⌕α↥ι

संपीड़ित स्ट्रिंग में मैचस्टिक्स की संख्या को देखें 65455454240303455250300545

∧№IX²φι

अगर यह मूल्य में प्रकट होता है 2 ** 1000...

I§”)⧴u↑$◨”Iι

संपीड़ित स्ट्रिंग में मैचस्टिक्स की संख्या को देखें 6255456376


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