সেখানে আমি এটি ভেঙে দিয়েছি (কাঁচি দিয়ে)


15

চ্যালেঞ্জ

একটি স্ট্রিং একটি কাটিয়া বিধি এবং অন্য স্ট্রিং বর্ণনা করে, প্রথম স্ট্রিং দ্বারা বর্ণিত নিয়মটি ব্যবহার করে দ্বিতীয় স্ট্রিংয়ের অংশগুলি কেটে ফেলুন।

উভয় স্ট্রিংগুলিতে বর্ণগুলি a-zবা A-Zআপনি যে কোনও একটি নির্বাচন করে (সেগুলি একইভাবে উপস্থাপন করতে হবে না) থাকবে will দ্বিতীয় স্ট্রিংটি যেভাবে সংশোধন করতে হবে তা নীচে বর্ণিত:

অ্যালগরিদম

প্রথম স্ট্রিংটি ধরুন এবং অ-সংলগ্ন (ক্রমবর্ধমান) অক্ষরের মধ্যে ফাঁকগুলি পূরণ করার কল্পনা করুন =; উদাহরণস্বরূপ, abcfg=> abc==fg। তারপরে, দুটি স্ট্রিং সারিবদ্ধ করুন এবং প্রথম স্ট্রিং থেকে সমস্ত অক্ষর ফিরিয়ে দিন যা সমান চিহ্নের উপরে নয়। উদাহরণস্বরূপ, প্রদত্ত abcfgএবং qrstuvwইনপুট হিসাবে:

qrstuvw - Modify
abc==fg - Modifier

qrs--vw -> qrsvw

যদি সমতুল্য চিহ্নগুলি পূরণের পরে সংশোধকটি ছোট হয়, তবে দ্বিতীয় স্ট্রিংয়ের সমস্ত অনুসরণীয় অক্ষর অন্তর্ভুক্ত করা উচিত। সংশোধক যদি দীর্ঘ হয় তবে অনুসরণকারী অক্ষরগুলি এড়ানো হবে।

সংশোধক বাছাই করার নিশ্চয়তা নেই।

পরীক্ষার কেস

abcfg, qrstuvw -> qrsvw
abqrs, qwertyuiopasdfghjklzxcvbnm -> qwjklzxcvbnm
za, qr -> qr
azazaz, qwertyuioplkjhgfdsazxcvbnmnbvcxzasdfghjklpoiuytrewq -> qmn

রেফারেন্স বাস্তবায়ন (পরীক্ষার কেস উত্পন্ন করতে ব্যবহৃত হয়) -> টিআইও

বিধি

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

শুভ গল্ফিং!

কেভিন ক্রুইজসেনের সাম্প্রতিক দুটি চ্যালেঞ্জ দ্বারা অনুপ্রাণিত, "সেখানে, আমি এটি স্থির করেছি ( টেপ / দড়ি দিয়ে )"



2
খুব সাধারণ প্রবণতা আমি এখানে দেখছি
এল_চর্চ

@ এল_চর্চ চ্যালেঞ্জ কখনও কখনও প্রবণতা অনুসরণ করে। দুটি সম্পর্কিত চ্যালেঞ্জ পোস্ট করা হয়েছিল তাই আমি প্রবণতাটি অব্যাহত রাখার সিদ্ধান্ত নিয়েছি: ডিআই আরও একটি "আমি এটি ঠিক করেছি" চ্যালেঞ্জ পোস্ট করতে যাচ্ছিলাম তবে ক) জিনিসগুলি আরও ভাল ভাঙা পছন্দ করি 2) আমি অন্য কোনও সৃজনশীল এবং যথেষ্ট স্বতন্ত্র সম্পর্কে ভাবতে পারি না "এটি ঠিক করা হয়েছে "ধারণা: পি
হাইপারনিউট্রিনো

16
পরবর্তী চ্যালেঞ্জ:There, I blew it up (with a segfault)
ম্যাজিক অক্টপাস আরন

উত্তর:


5

জাভাস্ক্রিপ্ট (ES6), 81 80 বাইট

বাক্য গঠন সিনট্যাক্সে ইনপুট নেয় (modify)(modifier)

s=>g=([c,...a],d=i=0,x=s[k=parseInt(c,36),i+=c?d&&(k-d+26)%26:1])=>x?x+g(a,k):''

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

মন্তব্য

s =>                       // outer function, taking the string s to modify
  g = (                    // recursive inner function g(), taking:
    [c, ...a],             //   c = current modifier character; a[] = remaining characters
    d = i = 0,             //   d = code of previous modifier character; i = pointer in s
    x = s[                 //   x = i-th character of s
      k = parseInt(c, 36), //     k = code of the current modifier character in [10..35]
      i += c ?             //     update i; if c is defined:
        d &&               //       if d = 0, let i unchanged
        (k - d + 26) % 26  //       otherwise, add the difference between k and d (mod 26)
      :                    //     else:
        1                  //       just pick the next character by adding 1
    ]                      //   end of character lookup in s
  ) =>                     //
    x ?                    // if x is defined:
      x + g(a, k)          //   append x and do a recursive call to g()
    :                      // else:
      ''                   //   stop recursion


3

05 এ বি 1 ই , 20 17 বাইট

ćsv¹Ç¥Nè<yú«}SðÊÏ

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


প্রতিটি চরের মধ্যে ASCII দূরত্ব গণনা করে, অনেকগুলি স্পেস যদি ইতিবাচক হয় তবে তা প্রদান করে। Theণাত্মক দূরত্বের ফলাফল হিসাবে 0 টি স্পেস যুক্ত করা যায়। এর পরে, আমি প্রথম অক্ষরযুক্ত স্ট্রিংয়ের ফাঁকা স্থানগুলির মতো স্ট্রিং 2 তে সমস্ত অক্ষরকে একই সূচকগুলিতে টান করি।


Input: [azaz,qwertyuiopasdfghjklzxcvbnm]
--------------------------------------------------------------------------------

ćs                # Remove head, swap                           | [a, zaz]
  v               # Iterate...                                  | ............
   ¹Ç¥            # Push deltas between each char of string 1   | [a,[25,-25,25,-25]]
      Nè          # Push delta at index...                      | [a, 25]
        <         # Decrement (for 1-indexed answer)            | [a, 24]
         y        # Push current char in iteration...           | [a, 24, z]
          ú       # Append b spaces to a...                     | [a, '(spaces)z']
           «      # Concat                                      | [a(spaces)z]
            }     # End loop.                                   | [a(spaces)za(spaces)z]
             SðÊ  # Split, push 1 for non-space elements.       | [Long array of 1/0]
                Ï # Push chars from 2 that aren't spaces in 1.  | ['qmn']

90% নিশ্চিত যে আমি ফাঁকা স্থান না ব্যবহার করে আরও 2-3 বাইট হারাতে পারি, তবে সূচী N তে চারটি চাপ দিয়ে Still এই মুহুর্তে এই বৈকল্পিকের উপর এখনও কাজ করছি ... আমার "আরও ভাল ধারণা" কী হিসাবে শেষ হয়েছে:

05AB1E , 18 বাইট

Ç¥ε1‚Z}ηO0¸ìʒ²g‹}è

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

আমার মনে হচ্ছে আমি কিছু মিস করছি, আপনি যদি উন্নতি দেখতে পান ε1‚Z},ʒ²g‹} বা0¸ì lmk ...

Ç¥ε1‚Z}ηO0¸ìè13 বছর বয়সী ছিল, তবে কখন n > |input_2|এটি input_2[n%|input_2|]...


আপনার দ্বিতীয় সংস্করণটি Ç ¥ ε1M} হতে পারে ¥ ʒ²g ‹} è but
এমিগিনা

উপরের সংস্করণটি যুক্ত করে সংশোধন করা যেতে পারে IgÅ1«, তবে সম্ভবত এর থেকে আরও ভাল উপায় আছে?
এমিগিনা

2

স্ট্যাক্স , 15 বাইট

Ç«|¢Äα•è@╟╣i`vF

এটি চালান এবং এটি ডিবাগ করুন

এটি আসকি উপস্থাপনা।

:-Z+{v0|Mt|cB]pFp
  1. যুগলতর পার্থক্য পান।
  2. একটি শূন্য প্রস্তুত।
  3. ফরচ পার্থক্য, পুনরাবৃত্তি
    1. 1 বিয়োগ করুন এবং শূন্যের সাথে সর্বাধিক গ্রহণ করুন।
    2. স্ট্রিংয়ের শুরু থেকে অনেকগুলি অক্ষর সরান।
    3. স্ট্রিং ফাঁকা থাকলে থামুন।
  4. স্ট্রিংয়ের বাকি অংশটি মুদ্রণ করুন।

1
কোডটি কীভাবে বলেছে তা আমি পছন্দ করি╟╣i
উরিল

2

জেলি , 14 বাইট

OI’R¬⁸żFḣL}aḟ0

একটি ডায়াডিক লিঙ্কটি বাম দিকের অক্ষরের তালিকা হিসাবে এবং অক্ষরের তালিকায় ডানদিকে পরিবর্তনের জন্য অক্ষরের তালিকা হিসাবে সংশোধকটিকে গ্রহণ করে।

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

কিভাবে?

OI’R¬⁸żFḣL}aḟ0 - Link list of characters Modifier, list of characters InStr
               -                       e.g.  ['a','c','g','a'], ['n','m','l','k','j']
O              - ordinals of Modifier        [97,99,103,97]
 I             - incremental differences     [2,4,-6]
  ’            - decrement                   [1,3,-7]
   R           - range                       [[1],[1,2,3],[]]
    ¬          - NOT (vectorises)            [[0],[0,0,0],[]]
     ⁸         - chain's left argument, Modifier
      ż        - zip together                [['a',[0]],['c',[0,0,0]],['g',[]],['a']]
       F       - flatten                     ['a',0,'c',0,0,0,'g','a']
         L}    - length of right (InStr)     5
        ḣ      - head to index               ['a',0,'c',0,0] (if shorter or equal, no effect)
           a   - AND with InStr (vectorises) ['n',0,'l',0,0]
            ḟ0 - filter out zeros            ['n','l']

¬আমার উত্তরে কৌশলটি ব্যবহার করেছেন Used :) (আমাদের প্রযুক্তিগতভাবে একই অ্যালগরিদম রয়েছে, তবে আপনি আরও সংক্ষিপ্ত করেছেন, ভাল করেছেন!)
এরিক দ্য আউটগল্ফার

ওহ হ্যাঁ, আমি এ সম্পর্কে মন্তব্য করতে চাইছিলাম ¬, তবে ভুলে গিয়েছিলাম যখন আমি একটি মোবাইল ফোন ফ্যাট-আঙুলের পোস্টটি না-এখনও প্রস্তুত 13 বাইট প্রয়াসের পোস্ট করেছি।
জোনাথন অ্যালান

2

জাভাস্ক্রিপ্ট (ES6), 79 বাইট

f=([t,...T],s,z=T[0])=>z&&s?s[0]+f(T,s.slice(t>z||(parseInt(t+z,36)-370)%37)):s

আমার হিসাবে অক্ষরের মধ্যে দূরত্ব গণনা করার জন্য একই অ্যালগরিদম ব্যবহার করে শেষ উত্তর

পরীক্ষার কেস:







1

কাঠকয়লা , 29 28 বাইট

⭆η×ιI§⁺⭆θ⁺×0∧μ⊖⁻℅λ℅§θ⊖μ1⭆η1κ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সেখানে আমার উত্তরের ভিত্তিতে, আমি টেপ দিয়ে এটি স্থির করেছি। ব্যাখ্যা:

       ⭆θ⁺×0∧μ⊖⁻℅λ℅§θ⊖μ1        Fix it with tape, but map to 1s and 0s
      ⁺                 ⭆η1     Append extra 1s just in case
⭆η                              Map over the second string
     §                     κ    Get the character from the fixed string
    I                           Cast to integer
  ×ι                            Repeat the current character that many times
                                Implicitly print

দ্রষ্টব্য: এটি 28 বাইট হওয়া উচিত, তবে Andলেখার সময় এটি ভেঙে যায়।


0

জাভা 8, 117 বাইট

a->b->{for(int i=0,j;++i<a.length;b=j>0&b.length()>=i+j?b.substring(0,i)+b.substring(i+j):b)j=a[i]+~a[i-1];return b;}

ব্যাখ্যা:

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

a->b->{                   // Method with char-array + String parameters and String return
  for(int i=0,j;++i<a.length;
                          //  Loop `i` in range [1; length_of_array)
      b=                  //    After every iteration: change the String-input to:
        j>0               //     If `j` is larger than 0,
        &b.length()>=i+j? //     and the length of `b` is larger or equal to `i+j`:
         b.substring(0,i) //      Take the substring [0; i)
         +b.substring(i+j)//      + the substring [i+j; end_of_string]
        :                 //     Else:
         b)               //      Leave `b` the same
    j=a[i]+~a[i-1];       //   Set `j` to the difference between two adjacent chars - 1
  return b;}              //  Return the modified input-String
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.