ম্যাচস্টিকস গণনা করুন


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উচিত উভয় গণনা 6matchsticks, এমনকি কোনো বড় হাতের মত দৃশ্যগত উপস্থাপনা সৌন্দর্য যদিও 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) হিসাবে লেখা হয়
12

@ 12Me21 আমি এরকম কিছু করার চিন্তাভাবনা করেছি, তবে আমি মনে করি না যে এটি চিঠির কাছাকাছি যথেষ্ট বলে মনে হচ্ছে, তাই আমি এটি ছেড়ে দিয়েছি।
অ্যাডমবর্কবার্ক

আপনার চিঠি এক্স (এইচ) সম্পর্কে কি? (ভাল, এখন আমি উত্তর পাচ্ছি তা নিয়ে কিছু আসে যায় না))
12

বাইরে বর্ণের জন্য [0-9a-z], আমাদের 0 টি ম্যাচস্টিক গণনা করা উচিত? এটিই আমি আপনার স্কোর থেকে বুঝতে পারি যে এই উত্কৃষ্ট কোডটি এই অ্যালগরিদমের মাধ্যমে চালিত হয় , বাইটে আপনার উত্স কোডের দৈর্ঘ্য
এরিক দি আউটগল্ফার

@ এরিকথ আউটগল্ফার হ্যাঁ, এটি সঠিক।
অ্যাডমবর্কবার্ক

উত্তর:


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

@ এক্সবার্বি সত্যই, তবে এটি ম্যাচের সংখ্যা বাড়িয়ে দেবে, যার ফলে +3 পয়েন্ট হবে
রড

6

পার্ল 5 সঙ্গে -pF, 95 বাইট + + 14, 109

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

এটি সমান:

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

তবে ~অপারেটরটি ব্যবহার করে আমরা হাই-বাইট অক্ষর ব্যবহার করতে পারি এবং সত্যই বাইটগুলি ত্যাগ না করে প্রচুর অক্ষর এড়াতে পারি।

টন স্কোর থেকে এখনও বেশ কিছুটা পথ, এমনকি সহায়তার সাথেও!

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

এই সমাধানটিতে অপ্রিন্টেবল রয়েছে তাই বাইট-কাউন্টটি যাচাই করতে এখানে একটি বিপরীতমুখী হেক্স ডাম্প রয়েছে:

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বিকল্পটি ফেলে দিন। এছাড়াও আপনি :-) এর +lcপরিবর্তে ভুলে যেতে থাকুনlc()
টোন হসপেল

@ টনহোপেল গডডমিট! এমনকি আমি আমাদের উভয় পোস্ট দেখেছি এবং আমি মনে করতে পারি না কোন পোস্টে আমি এটি দেখেছি এবং +তা অবিলম্বে মনে মনে জাগে না! nআমার মেশিনে আমার দরকার আছে এবং আমি এটিকে ফেলে দিতে পারি ভুলে যাই!
ডম হেস্টিংস

দুঃখিত, আমি ভুল বানান। আমার অর্থ "ড্রপ দ্যা " }{এবং -p(এবং -nযদি আপনার পার্লের এখনও এটির প্রয়োজন হয় তবে এটি প্রতিস্থাপন করুন It এটি আজকাল
কোনওভাবেই

@ টনহোপেল আমি আমার কোডটি সর্বশেষে, উফস-এ আপডেট করিনি ...
ডম হেস্টিংস

6

জাভাস্ক্রিপ্ট (ES6), 198 (102 বাইট + 96 ম্যাচস্টিক)

@ L4m2- এর জন্য 5 পয়েন্ট সংরক্ষণ করা হয়েছে

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

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

কিভাবে?

আমরা অক্ষরের ASCII কোড মডিউল 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। একবার স্ট্রিংয়ে জোর করে, "undefined".charCodeAt()ASCII কোডটি প্রদান করে "u", যা 117 । সুবিধাজনকভাবে, 117 মডুলো 9 প্রত্যাশার মতো 0 দেয় gives


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

5

জেলি , 42 বাইট + 0 ম্যাচস্টিকস = 42 পয়েন্ট

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

-২ পয়েন্টের জন্য @ জোনাথন অ্যালানকে ধন্যবাদ!

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

কিভাবে এটা কাজ করে

“Ṅḟṭ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$ইনপুট স্ট্রিংয়ে "এ ... জা ... জেড 0 ... 9_" ( ) ċএর প্রতিটি ( Ѐ) চরিত্রের উপস্থিতি ( ) গণনা করে ।ØW

অবশেষে æ.বিন্দু পণ্য গ্রহণ করে, প্রতিটি অক্ষরের গণনা ম্যাচস্টিকগুলিতে সংশ্লিষ্ট ব্যয়ের সাথে গুণিত করে, পরে যোগফল গ্রহণ করে।


একটি বাইট এবং বেস ডিকম্প্রেশন এবং মডুলো অন্যটিকে Dসংরক্ষণ করার পরিবর্তে সঞ্চয় করতে বড় সংখ্যার একটি অনুকরণ ব্যবহার করুন । অনলাইনে এটি ব্যবহার করে দেখুন
জোনাথন অ্যালান

বাইট ... এরর পয়েন্ট :)
জোনাথন অ্যালান

1
এবং আরও একটি সঙ্গে Ɗ। ধন্যবাদ!
ডেনিস

3

পার্ল 5 -p , 90 64 কোড + 9 ইভাল জোতা + 14 ম্যাচস্টিকস = 87 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৩ এর পরিবর্তে ৩ length দৈর্ঘ্যের অ্যারে দিয়ে একটি বিন্দু-পণ্য সম্পাদন করতে পারি।

⁽[ɱד®-&]Ṙṙ£⁺ÐĊṂⱮɼ ’‘ḤṚæ.Œ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" এর ম্যাচস্টিক ওজন weight .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)

গোশ এটা ড্যাং, আর ভারবস!


টিআইও, যে কারণেই হোক না কেন, methodsপ্যাকেজটি স্বয়ংক্রিয়ভাবে লোড হয় না , তবে এটি baseপ্যাকেজ হওয়ার কারণে, আমি এটি সর্বদা শিরোনামে রেখেছি এবং এটি বাইট-কাউন্টের জন্য গণনা করি না। readlineএটি টিআইওতেও কাজ করবে না কারণ এটি কোনও ইন্টারেক্টিভ সেশন নয়। যদিও এটি অবশ্যই গল্ফযোগ্য।
জিউসেপে


input যদিও ফাঁকা বিশিষ্ট ইনপুটটির চারপাশে উদ্ধৃতিগুলির প্রয়োজন।
জিউসেপে

এছাড়াও, আমি সবেমাত্র আর গল্ফিংয়ের জন্য একটি চ্যাটরুম শুরু করেছি ! ! আমি ইদানীং বিভিন্ন ব্যবহারকারী দ্বারা প্রচুর উত্তর দেখেছি, যা যথেষ্ট উত্সাহজনক :)
জিউস্পে

@ জিউস্পে আমার ধারণা আপনার উত্তর আলাদাভাবে পোস্ট করা উচিত। এটি নীতিগতভাবে পৃথক এবং খনি থেকে অনেক উচ্চতর।
আন্দ্রে কোস্টায়ারকা 21 '23

1

পার্ল 6 , 87 বাইট + 26 ম্যাচস্টিকস = 113

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

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

কিছু অ-এএসসিআইআই ইউনিকোড অক্ষর ব্যবহার করে। চেহারা টেবিলটি ইউনিকোড স্ট্রিংয়ে এনকোড করা হয়েছে:

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

অক্ষরগুলি আরবি-ইন্দিক সংখ্যার সাহায্যে বেস-base convers রূপান্তর সহ সূচকে রূপান্তরিত হয়:

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

1

সেড, 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

ব্যাখ্যা:

উপরের স্ক্রিপ্টটি স্ট্যান্ডার্ড ইনপুট লাইনটি রেখায় পড়বে (প্যাটার্ন স্পেসে - সাধারণ "শেড ওয়ে") এবং, প্রতিটি লাইনের জন্য, এই লাইনের সমস্ত ম্যাচস্টিক-উপস্থাপনযোগ্য অক্ষর উপস্থাপনের জন্য প্রয়োজনীয় ম্যাচস্টিকের পরিমাণকে আউটপুট করে দেয়। ইনপুট প্রতিটি লাইন জন্য গণনা নিম্নলিখিত হিসাবে ঘটবে:


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

প্রথমে, আমরা প্রতিটি চরিত্রকে মুছে ফেলি যার জন্য আমাদের প্যাটার্ন স্পেস থেকে সম্পর্কিত ম্যাচস্টিক উপস্থাপনা (প্রশ্নের উপর দেওয়া হিসাবে) নেই। এটি হল, আমরা প্রতিটি অক্ষর মুছে ফেলি যা "0" থেকে "9" পর্যন্ত নয়, "ক" থেকে "জ", "এন" থেকে "এস", "এল", "আপনি", "x", "y" বা "জেড"। বড় হাতের অক্ষর এবং ছোট হাতের অক্ষর একই আচরণ করা হয়।

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

যদি আমরা একটি খালি প্যাটার্ন স্পেস দিয়ে শেষ করি, আমরা 0 টি মুদ্রণ করি (স্বয়ংক্রিয়ভাবে একটি নতুন লাইন অনুসরণ করা হয়, যেমন সেড সবসময় করে থাকে যতক্ষণ না আপনি এটিতে একটি বিশেষ পতাকা প্রেরণ না করে), স্ক্রিপ্টের সমস্ত উত্তরোত্তর লাইনগুলি এড়িয়ে যান এবং পরবর্তী "সেড চক্র" এ যান ( অর্থাত্, ইনপুটটির পরবর্তী লাইনটি পড়ুন এবং প্রথম কমান্ড থেকে পুনরায় প্রক্রিয়াজাতকরণের জন্য ইনপুটটির আর কোনও লাইন না পাওয়া পর্যন্ত পুনরাবৃত্তি করুন।

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

অন্যথায়, যদি প্যাটার্নের স্থানটি খালি না থাকে, তবে আমরা এখন এটি একটি দুটি সেমিকোলন দ্বারা পৃথক দুটি "উপ-স্পেসে" বিভক্ত করব: প্রথমে ইনপুট স্পেস আসে , যা প্রাথমিকভাবে সমস্ত অক্ষর দ্বারা গঠিত হয়েছিল যা প্যাটার্ন স্পেস থেকে পরে সরানো হয়নি were লাইন 1 কার্যকর করা; এর পরে আসে সেমিকোলন এবং এর পরে মানচিত্রের স্থান

মানচিত্রের স্থানটি আমাদের জানায় যে প্রতিটি প্রাসঙ্গিক বর্ণানুক্রমিক চরিত্র উপস্থাপনের জন্য 1 এর পাশে কতটি ম্যাচস্টিক প্রয়োজন। যদি আমরা জানতে চাই যে মানচিত্রের জায়গার মধ্যে যে কোনও বর্ণানুক্রমিক চরিত্রের প্রতিনিধিত্ব করতে কতটি ম্যাচস্টিক প্রয়োজনীয়, আমরা সেই অক্ষরের বাম দিকে মিলিত% 'র প্রথম ক্রমটি সন্ধান করি এবং উত্তরটি% এর সংখ্যায় হবে যে ক্রমটি আরও 1। উদাহরণস্বরূপ, "বি" উপস্থাপনের জন্য প্রয়োজনীয় ম্যাচস্টিকগুলির সংখ্যা 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

পরিশেষে, আমরা প্রতিটি অ-অঙ্কের অক্ষরকে প্যাটার্ন স্পেস থেকে সরিয়ে ফেলি এবং যা অবশেষ থাকে তা পরিচিত দশমিক স্বীকৃতির চূড়ান্ত ফলাফল। সেই মানটি স্ট্যান্ডার্ড আউটপুটে মুদ্রিত হয় এবং পরবর্তী কোনও সেড চক্র শুরু হয়, যদি প্রক্রিয়া করার জন্য আরও কোনও ইনপুট লাইন থাকে।




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পরিবর্তে পরিবর্তনশীল নামগুলি এখন ব্যবহার করা হয়, কারণ চ্যালেঞ্জের বিবরণী অনুসারে মিলগুলি দ্বারা সেগুলি তৈরি করা যায় না।
  • ''(অপ্রিন্টযোগ্য) এর পরিবর্তে ব্যবহৃত হয় 6
  • m-mএবং t-tপরিবর্তে ব্যবহৃত হয় 0
  • (char)(w|32)+""w.toLowerCase()স্ট্রিং-অ্যারে ইনপুটের পরিবর্তে অক্ষর-অ্যারে ইনপুট ব্যবহার করা হয় ।

0

অটোহটকি , 148 বাইট + 345 ম্যাচস্টিকস = 493

এইটি হ'ল সংক্ষিপ্ত করার চ্যালেঞ্জ of

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


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