এই স্ট্রিংটি কি একটি চিঠি একটি কার্টুইল করছে?


35

চ্যালেঞ্জের অনুপ্রেরণা হ'ল এটি আমি কোথাও দেখেছি:

"নুন" শব্দটি হ'ল একটি n কার্টহিল করছে

আপনার চ্যালেঞ্জটি হল একটি স্ট্রিং নেওয়া এবং এটি নির্ধারণ করা যে এটি কোনও কার্টহিলের প্রথম অক্ষর কিনা।

বিধি

স্ট্রিং হ'ল একটি চিঠি যা একটি কার্টুইল করছে যদি:

  • প্রথম চিঠিটি শেষ চিঠির মতোই। (চিঠিটি তার মাথায় অবতরণ করতে পারে না))
  • স্ট্রিংটি প্রতিটি অক্ষরের কার্টহিলিং অক্ষরের মধ্যে বিকল্প হয়।

কার্টহিলিং চিঠিগুলি nএবং u, mএবং w, bএবং q। লক্ষ্য করুন nএবং wএকসাথে না অক্ষর cartwheeling, এবং কেউই হয় wএবং b

  • আপনি আমাদের স্ট্যান্ডার্ড ইনপুট পদ্ধতিগুলির ব্যবহার করে একটি স্ট্রিং নেবেন।
  • স্ট্রিংটি কার্টহিলিং অক্ষর এবং মিথ্যা মান না থাকলে আপনি সত্যবাদী মান আউটপুট পাবেন। আউটপুট যে কোনও স্ট্যান্ডার্ড আউটপুট পদ্ধতি ব্যবহার করে করা যেতে পারে।

অতিরিক্ত নিয়ম:

  • কেবল ছোট হাতের কার্টহিল অক্ষর n/ u/ m/ w/ b/ qহ্যান্ডেল করা দরকার।
  • আপনি ধরে নিতে পারেন ইনপুট কখনই খালি থাকে না।
  • একটি অক্ষরের স্ট্রিংটি একটি বৈধ কার্টুইল নয়।

পরীক্ষার মামলা

Input        -> Output
nun          -> truthy
nunun        -> truthy
nunununu     -> falsy
wmw          -> truthy
wmwun        -> falsy
bqbqbqbqbqb  -> truthy
v^v^v        -> falsy
AVAVA        -> falsy
OOO          -> falsy
ununununu    -> truthy
nunwmwnun    -> falsy
nun unun     -> falsy
nunwmw       -> falsy
nnuunnuunnuu -> falsy
nwnwnwnwn    -> falsy
m            -> falsy
nunuuunun    -> falsy

বিজয়ী

সঙ্গে , সবচেয়ে কম কোড (প্রতিটি ভাষার মধ্যে) জিতেছে!


29
আমি মনে করি bকার্টহিলগুলি intoোকা q, তাই না? dএবং pকার্টহিল বন্ধুরাও। তাদের কীটি হ'ল তারা ঘোরান, উল্টানো নয়।
ইঞ্জিনিয়ার টোস্ট

আরেকটি uwuwuwuwuwu
টেস্টকেস

19
bqbতবে কেন নয় pdp?
aschepler

@ এস্পেল্পার আমি গণ্ডগোল করেছি
এমডি এক্সএফ

2
যেহেতু dpd, pdp এবং এগুলি কার্যকর হয় না, আমি মনে করি আপনার কাছে জালিয়াতি উত্তর সহ পরীক্ষার ক্ষেত্রে এটি থাকা উচিত।
trlkly

উত্তর:


2

জেলি , 23 বাইট

এটি মনে করার চেয়েও বেশি কাজ করেছে!

“nmbuwq”iЀo⁵IAs2⁼€3,3Ȧ

অক্ষরগুলির তালিকা এবং প্রত্যাবর্তন 1(সত্যবাদী) বা 0(মিথ্যা) একটি মোনাদিক লিঙ্ক।

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা স্যুট দেখুন

কিভাবে?

অক্ষরের 1-সূচিযুক্ত তালিকায় ইনপুটটির প্রতিটি অক্ষরের সূচি সন্ধান করে nmbuwq। এই স্ট্রিংটি এমনভাবে সাজানো হয়েছে যে জোড়গুলির সূচকগুলি তিনটি পৃথক পৃথক, যেমন বৈধ কার্টুহিলগুলির জন্য সূচকের বর্ধিত পার্থক্যগুলির একটি [-3,3]বা এর পুনরাবৃত্তি হবে [3,-3]

যখন কোনও আইটেম পরমাণুর "সূচক" এর তালিকায় পাওয়া যায় না i, তখন এটি প্রত্যাবর্তন করে 0, যা সত্যের bমতো ইনপুট তৈরি করে bxbxbভিত্তিহীন অক্ষরগুলিকে যুক্ত করে। সুতরাং 0s 10বৈধতার জন্য যাচাই করার আগে অন্য কোনও মান থেকে তিন এর বেশি দূরে একটি মান দ্বারা প্রতিস্থাপিত হয় ।

“nmbuwq”iЀo⁵IAs2⁼€3,3Ȧ - Link: list of characters, s
         Ѐ             - map across c in s:
        i               -   first index of c in (1-indexed; 0 if not present)
“nmbuwq”                -   literal "nmbuwq"
            ⁵           - literal 10
           o            - logical or (vectorises - replace any 0s with 10s)
             I          - incremental differences (i.e. deltas)
              A         - absolute value (vectorises)
               s2       - split into chunks of 2 (possibly with a single remainder)
                   3,3  - pair three with three = [3,3]
                 ⁼€     - equals? for €ach (1 if so, otherwise 0 - including a single 3)
                      Ȧ - any and all? (0 if any 0s or if empty, 1 otherwise)

13

সেড 4.2.2 , 30 + 1 -r= 43 31 বাইট

প্রথম লাইনটি সংক্ষিপ্ত করে @ নীলকে 12 টি বাইট সংরক্ষণ করা হয়েছে

/nu|wm|qb/!d
/^((.).)\1*\2$/!d

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

মিথ্যা হলে ইনপুট মুছে ফেলে অন্যথায় ইনপুটটিতে কিছুই করে না।

ব্যাখ্যা

সঙ্গে -rপতাকা, আমরা ব্যবহার করার প্রয়োজন হবে না \(এবং \)গ্রুপ ধরে রাখার জন্য এবং এই বাইট পরিমাণ সঞ্চয় হয়।

/nu|wm|qb/!                # On every line that does not match this regex
           d               # Delete
/^((.).)\1*\2$/!           # On every line that does not math
 ^((.).)                   #  the first two characters at the beginning of the line
        \1*                #  repeated
           \2$             #  with the first character at the end of the line
                d          # Delete

এখানে sedউইজার্ডটি আসবে ...
এমডি এক্সএফ

@ এমডিএক্সএফ আমি উইজার্ড হওয়া থেকে অনেক দূরে, এখনও একটি শিক্ষানবিস :)
ক্রিটসি লিথোস

আমার কাছে সবকিছু sedজাদুকরের মতো লাগে। : পি
এমডি এক্সএফ 2'17

1
আপনি শুধুমাত্র চিঠি জোড়া উভয় যেমন অর্ধেক সংবরণ জন্য চেক আছে unuএবং nunধারণ nuকরে অক্ষর বাকি ঐ দুই মেলে এবং দ্বিতীয় লাইন নিশ্চিত করে।
নিল

8

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

থিপ্রেটবে এবং এমডি এক্সএফের পরামর্শ অনুসারে দুটি মিথ্যা মান ব্যবহার করে 1 বাইট সংরক্ষণ করা হয়েছে।

([c,...s],S='bqwmun')=>s.reduceRight((r,a)=>r&a==S[S.search(c)^++k&1],k=s>'')

পরীক্ষার মামলা


&&পরিবর্তে ছেড়ে যাওয়ার কোনও কারণ &?

@ পাইরেটবেই ওয়েল, একমাত্র কারণ প্রত্যাবর্তিত মিথ্যা মানটির ধারাবাহিকতা, যদিও এটি সত্যই এই চ্যালেঞ্জের প্রয়োজন বলে মনে হয় না। (ব্যবহার &করে falseবা হয় উত্পাদন করতে পারে 0)
Arnauld

@ আরনাউল্ড আপনি দ্বিতীয়টি মুছে ফেলতে পারেন &; আমি নির্দিষ্ট করেছি (আড্ডায়) একসময় বেমানান মিথ্যা মানগুলি অনুমোদিত values
এমডি এক্সএফ

5

পাইথন 3 , 111 বাইট

-২ বাইটস মিঃ এক্সকোডারকে ধন্যবাদ।

lambda s:s[0]==s[-1]and any(any({*s[::2]}=={i[j]}and{*s[1::2]}=={i[j<1]}for j in[0,1])for i in['nu','mw','bq'])

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


2
আমাকে পুনরায়
এমডি এক্সএফ

আমি এ সম্পর্কে ভাল বোধ করি না, যেহেতু আপনি আমার বাইট গণনাটি আবার পৌঁছাতে চলেছেন তবে -২ বাইট
মিঃ এক্সকডার

বিটিডাব্লু, আপনার সমাধানটি অবৈধ, ঠিক যেমনটি আমার শুরুতে ছিল। ব্যর্থ nunununu
মিঃ এক্সকডার

অনেকগুলি বাইটের দামে স্থির। ; -;
সম্পূর্ণরূপে

5

পাইথন 2 , 63 বাইট

lambda s:s[:3]in'ununqbqbwmwm'and s==s[:2]*max(len(s)/2,1)+s[0]

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


ভাল উত্তর, সাইটে আপনাকে স্বাগতম! কিছু টিপস: আপনি "nu un nm mn bp pb".split()4 বাইট সংরক্ষণ করতে পারেন এবং আপনি কিছু সাদা জায়গা সরিয়ে ফেলতে পারেন। 75 বাইট:lambda s:any(s==c[-1]+c*max(len(s)/2,1)for c in"nu un nm mn bp pb".split())
ডিজেএমসিমেহেম

s[0]পরিবর্তে না করে আপনি 1 বাইট সংরক্ষণ করতে পারেন c[-1]
ডিজেএমসিএমহেম

61 বাইট উত্তরটি সত্য unmnuএবং এর জন্য দেয় unmwnu। সত্যই এটি (s==s[::-1])+len(set(s))4 এর পরে মিথ্যা ইতিবাচক প্রত্যাবর্তন করে , যা জোর করা সহজ। এমনকি মাত্র 4 টি আলাদা অক্ষর এটিকে সত্য করে তোলে।
আর্নল্ড পামার 21

59 বাইট একক অক্ষর ইনপুট সঙ্গে বিরতি। এইটিকে বাছাই করার জন্য দুঃখিত, আমি পাইথন পছন্দ করি :)
আর্নল্ড পামার

ব্যতিক্রম মিথ্যা না? সেই বিরতিটি ইচ্ছাকৃত
হ্যারিকেল

5

পাইথন 3 , 71 বাইট

lambda n:''.join(sorted({*n[1::2]}|{*n[::2]}))in"nu,mw,bq"*(n==n[::-1])

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

-১ @ হাইপার নিউট্রিনোকে ধন্যবাদ এবং -১৩ @ @ @ ধন্যবাদ

উপরেরটি যদি কোনও পরীক্ষার ক্ষেত্রে ব্যর্থ হতে দেখা যায় তবে একটি বিকল্প রয়েছে:

lambda n:(sorted(list({*n[1::2]}.union({*n[::2]})))in[[*'nu'],[*'mw'],[*'bq']])*n[0]==n[-1]

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


ব্যাখ্যা

  • ''.join(sorted(list({*n[1::2]}).union({*n[::2]})))) - বিজোড় সূচীতে অক্ষর এবং সমান সূচকগুলিতে অক্ষরগুলি পান, সেগুলি নকল করে এবং তাদের ইউনিয়ন দ্বারা গঠিত তালিকাটি সাজান।

  • in'nu,mw,bq' - তারা বৈধ কার্ট-লেটার সংমিশ্রণ কিনা তা পরীক্ষা করে।

  • n[0]==n[-1] - প্রথম চরিত্রটি শেষের চরিত্রের মতো কিনা তা পরীক্ষা করে।


কোনও পরীক্ষার ক্ষেত্রে ব্যর্থ হয় না, ভাল কাজ +1
এমডি এক্সএফ

@ এমডিএক্সএফ ওহ ধন্যবাদ! আমি খুব স্বস্তি পেয়েছি rn ...> _ <
মিঃ এক্সকোডার

1
uwuwuwuwuwuসত্যে ফলাফল
ক্রিটিকি লিথোস

1
অবৈধ: নুনুউনুন
হ্যারিকেল 3'17

1
nuuun -> True। এটা সঠিক না.
পুনরাবৃত্ত

5

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

s=>/^(nu|un|bq|qb|wm|mw)+$/.test(s+s[1])

ইনপুট স্ট্রিংয়ের দ্বিতীয় অক্ষরটি দিয়ে ইনপুট স্ট্রিংটি একই জোড়কার কার্টুইল অক্ষরের পুনরাবৃত্তি স্ট্রিং কিনা তা পরীক্ষা করে দেখুন।

পরীক্ষা:

[
  "nun",
  "nunun",
  "nunununu",
  "wmw",
  "wmwun",
  "bqbqbqbqbqb",
  "v^v^v",
  "AVAVA",
  "OOO",
  "ununununu",
  "nunwmwnun",
  "nun unun",
  "nunwmw",
  "nnuunnuunnuu",
  "nwnwnwnwn",
  "m",
  "nunuuunun"
].forEach( x=>console.log( x, (s=>/^(nu|un|bq|qb|wm|mw)+$/.test(s+s[1]))(x) ) )


সত্যিই এখানে যুক্তি পছন্দ! আমি কখনই শেষে কোনও চরিত্র যুক্ত করার এবং পরীক্ষার চিন্তা করতাম না। খুব সুন্দর, ক্লিন কোডও, গল্ফ করা হলেও।
trlkly

4

ক্লোজার, 156 বাইট

(fn[w](let[s["nu""wm""bq"]c #(= 1(count(set %)))e #(take-nth 2 %)r #(and(c(e %))(c(e(drop 1 %))))](and(=(first w)(last w))(r w)(some #(=(set w)(set %))s))))

এটা ছদ্মবেশী কঠিন ছিল! আমি এটিকে 3 টি সাব সমস্যায় বিভক্ত করে শেষ করেছি:

  • প্রথম বর্ণটি কি শেষের মতো?
  • চিঠিগুলি আবার কি?
  • সমস্ত অক্ষর কি বৈধ সেটগুলির একটি অংশ?

আমি অবশ্যই জিততে পারি নি, তবে এটি ছিল একটি শুভ সকাল অনুশীলন! নীচে সম্পূর্ণ ব্যাখ্যা:

(defn cartwheel? [word]
  (let [; Valid Character Sets
        cs ["nu" "wm" "bq"]

        ; Is the list composed of only a single character?
        count-1? #(= 1 (count (set %)))

        ; Grabs every other element of the list
        every-other #(take-nth 2 %)

        ; Do the characters repeat? Works by checking if every other element is the same, then drops the first letter
        ; to check all the odd indexed characters
        repeating? #(and (count-1? (every-other %))
                         (count-1? (every-other (drop 1 %))))]

    ; Do all the predicates hold?
    (and (= (first word) (last word))
         (repeating? word)
         ; Is the set of letters in the word part of some set of the valid characters?
         (some #(= (set word) (set %)) cs))))

4

হাস্কেল, 80 78 বাইট

f s|l<-length s=odd l&&l>1&&any((==s).take l.cycle)(words"un nu mw wm bq qb")

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

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

l<-length s        -- let l be the length of the input string

f s         =      -- return True, if
    odd l          -- l is odd and
    l > 1          -- l is greater than 1 and 
    any            -- any of the following is also True
      (     )(words "  ...  ")
                   -- apply the function to each of the words "un", "nu" ... "qb"
           cycle   --  infinitely repeat the word
      take l       --  take the first l characters
     (==s)         --  and compare to s

4

পাইথন 2 , 45 বাইট

lambda s:s[2:]+s[1:3]==s>s[:2]in'bqbunuwmw'

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

স্ট্রিংয়ের ফাঁকা স্থানগুলি হ'ল DELঅক্ষর।


|u|কার্টহিল হিসাবে ব্যাখ্যা করা হয়।
হারিকেল

@ হারিকেল আমি DELপরিষ্কার করতে চরিত্রগুলি রেখেছি ।
এক্সনর

ডিল অক্ষরগুলি এখনও ইনপুট অক্ষর হতে পারে। আমি আপনার সমাধানটি পছন্দ করি তবে আমার উত্তর থেকে আপনার একটি কৌশল নেওয়া উচিত:s[:3]in'bqbqnunuwmwm'
হ্যারিকেল

4

রেটিনা , 24 বাইট

G`nu|mw|bq
^((.).)\1*\2$

সত্যবাদী আউটপুট 1, মিথ্যা জন্য 0।

গরুর বন্দরের কোয়েলের উত্তর।

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


নতুন সংস্করণটি সত্যতার আউটপুট দেয় nunwmwnun(কখন এটি মিথ্যা হওয়া উচিত), এ কারণেই আমার কাছে \1*আমার উত্তর দেওয়া হয়েছিল।
ক্রিটিকি লিথোস

পছন্দ করুন
Okx

প্রথম লাইনটি G`nu|mw|bpহ'ল যেহেতু সমস্ত সত্যবাদী স্ট্রিংগুলিতে সেগুলির মধ্যে একটি চিঠি যুক্ত থাকে এবং দ্বিতীয় রেখায় নিশ্চিত করা হয় যে বাকী সমস্ত স্ট্রিংয়েও সেই চিঠিগুলি রয়েছে ..
নীল

@ নীল যা পরীক্ষার ক্ষেত্রে ব্যর্থ হয়ununununu
Okx

@ ওক্স নীলের পরামর্শটি এখনও মনে হচ্ছে সেই টেস্টকেসের জন্য এটি অনলাইনে চেষ্টা করুন!
কৃতিক্সিত লিথোস

3

গ্রিম , 28 বাইট

e`..-#!"nu\|bq\|mw"oTv&..v+.

এটি অনলাইন চেষ্টা করুন! ছাপে 1truthy ইনপুট জন্য এবং 0falsy বেশী জন্য।

ব্যাখ্যা

গ্রিম সিনট্যাক্স নিয়মিত প্রকাশের সাথে সাদৃশ্যযুক্ত এবং গ্রিম প্রোগ্রাম এমন একটি প্যাটার্ন নির্দিষ্ট করে যা অক্ষরের একটি আয়তক্ষেত্রের সাথে মেলে বা নাও পারে।

e`..-#!"nu\|bq\|mw"oTv&..v+.
e`                            Match input against pattern:
      !                       Does not
     #                        contain
  ..                          a 2-character substring
    -                         which is not
       "nu\|bq\|mw"           any of these strings
                   oT         potentially reversed,
                     v&       AND
                       ..     two characters
                         v+   one or more times
                           .  then one more character.

গ্রিমের কিছু বৈশিষ্ট্য যা এটি হ্রাস করতে সহায়তা করেছিল:

  • সাধারণত একটি চরিত্রের আক্ষরিক অবশ্যই ব্যাকস্ল্যাশ দিয়ে পালাতে হবে, তবে "" পরিবর্তন করে: বাক্য গঠন উপাদানগুলি পালিয়ে যায় তবে হয় না। উক্তি ব্যতীত যে অংশটি চরিত্রের জোড়গুলি গণনা করে তা হবে (\n\u|\b\p|\m\w)oT
  • বাইনারি অপারেটর অনুসরণকারী ইউনিারি অপারেটর (এখানে -) এর ফলাফলের জন্য কাজ করে: ..-#!"…"oTএর সমতুল্য(..-"…"oT)#!
  • vগুলি সিনট্যাক্স উপাদান আছে যা তাদের অনুসরণ প্রাধান্য কমে। একটি নির্জন &বেশী প্রাধান্য রয়েছে -, কিন্তু v&কম। একইভাবে ..+পার্স করা হয় .(.+)তবে ..v+এটি সমান (..)+



2

জেলি , 27 বাইট

Ḋm2Qµ³m2Q;Ṣe“nu“mw“bq”ȧ³⁼U¤

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

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

Ḋm2Qµ³m2Q;µṢe“nu“mw“bq”ȧ³⁼U¤  Main link; z is the argument
Ḋ                             z[1:]
 m2                           z[1::2]
   Q                          deduplicate(z[1::2])
    µ                         New Chain
     ³                        z
      m2                      z[::2]
        Q                     deduplicate(z[::2])
         ;                    deduplicate(z[1::2]) + deduplicate(z[::2])
          Ṣ                  Sort the result
           e                 Is it an element of the following?
            “nu“mw“bq”       ["nu", "mw", "bq"]
                      ȧ      It has the correct characters and:
                       ³  ¤  Nilad followed by links as nilad
                       ³     z
                        ⁼      == 
                         U        z[::-1]
                          ¤  [End chain]

জেলি ... পাইথের চেয়ে লম্বা ?!
মিঃ এক্সকোডার 20

@ মিঃ এক্সকোডার shhhh আমি এতে কাজ করছি ... এক্সডি
হাইপার নিউট্রিনো

হাহ ভাল আমি এখন আপনার সাথে এক্সডি করছি
হাইপারনিউটারিনো


2

জাপট , 47 বাইট

g ¦U¬o ª`q¿nwm`ò má c aU¯2)<0?0:UÅë ä¥ ©Uë ä¥ e

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


আপনি কোনও বাইট সংরক্ষণ করার জন্য স্ট্রিংটি সংকোচন করতে পারেন?
শেগি

nwnwn সত্য যখন এটি মিথ্যা হতে পারে
হ্যারিকেল

@ হারিকেল ধন্যবাদ, স্থির!
অলিভার

1

পাইথন 3 , 88 বাইট

lambda x:[len(x)%2,x[:2]in'nu,un,bq,qb,mw,wm',len(set(x[::2])),len(set(x[1::2]))]==[1]*4

len(x)%2: একটি দৈর্ঘ্যের স্ট্রিং প্রথম অক্ষরটিতে শেষ হতে পারে না

x[:2] in: 6 টি বৈধ প্রারম্ভিক জোড়ার যেকোনটির জন্য চেক করুন

len(set()): 0,2,4 ... এবং 1,3,5 ... তে অক্ষরের সেটগুলির দৈর্ঘ্য পান

রিটার্নস Trueযদি মূল্যায়ন তালিকা, অন্য [1,1,1,1] সমান False

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


1

পার্ল 5 , 55 + 1 (-পি) = 56 বাইট

$c={"nuunmwwmbppb"=~/./g}->{$l=chop};$_=/^($l$c)+$/&&$c

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

সত্যের জন্য প্রথম চরিত্রের "উল্টোদিকে" সংস্করণ মুদ্রণ করে, মিথ্যা জন্য কিছুই না।


আমাকে শক্ত 18 বাইট দ্বারা প্রহার করুন। চমৎকার উত্তর!
সিলভিও মায়লো

এখন বেশিরভাগ নয়। সমস্ত একই চরিত্রের যে কোনও স্ট্রিংয়ের জন্য আসলটি সত্য ফিরে আসছিল।
এক্সকালি

1

পিএইচপি, 59 + 1 বাইট

<?=preg_match('#^(nu|un|mw|wm|bq|qb)\1+$#',$argn.$argn[1]);

পাইপ হিসাবে চালান -F

আংশিক রেইগেক্স সলিউশন, 101 + 1 বাইট:

for($s=$argn;$c=$s[$i++];$p=$c)$c!=$p||die;echo$i%2<1&&preg_match("#^(nu|mw|bq)#",count_chars($s,3));

মিথ্যা জন্য খালি আউটপুট। পাইপ হিসাবে চালান -nR


1

জাভা 8, 57 বাইট

s->s.matches("(nu)+n|(un)+u|(mw)+m|(wm)+w|(bq)+b|(qb)+q")

এখানে চেষ্টা করুন।

সমস্ত ছয়টি মামলার সাথে ম্যাচ করার জন্য সরল রেজেেক্স। নোট করুন যে জাভা String#matchesস্বয়ংক্রিয়ভাবে পুরো স্ট্রিংয়ের সাথে মিলে যায়, সুতরাং এর প্রয়োজন নেই ^...$


1

এমএটিএল , 25 বাইট

'nuwmbq'&mq2&\d~wdts~Gnqv

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

সমস্ত পরীক্ষার কেস যাচাই করার জন্য , ifপাদলেখটিতে একটি শাখা যুক্ত করা হয়েছে যা স্ট্রিং দ্বারা 'truthy'কোনও সত্যবাদী মান বা স্ট্রিং দ্বারা কোনও মিথ্যা মানকে প্রতিস্থাপন করে 'falsy'এবং তারপরে স্ট্রিংটি প্রদর্শন করে।

ব্যাখ্যা

'nuwmbq'  % Push this string
&m        % Implicit input. For each char, push index of membership in the above
          %  string, or 0 if not member
q         % Subtract 1
2         % Push 2
&\        % Divmod. Pushes remainders, then quotients
d~        % Consecutive differences negated. Gives an array of ones iff all
          % quotients were equal
w         % Swap. Moves remainders to top
d         % Consecutive differences. Gives nonzeros iff no consecutive
          % remainders were equal
ts~       % Duplicate, sum, negate. Gives true iff sum was 0. For unequal
          % consecutive differences of remainders, this corresponds to an odd
          % number of remainders
Gnq       % Push input, length, subtract 1. True iff input longer than 1
v         % Concatenate into column vector. Truthy iff all entries are nonzero


0

Clojure, 115 বাইট

(apply some-fn(map(fn[r]#(re-matches r %))(map(fn[[x y]](re-pattern(str x"("y x")+")))["nu""un""mw""wm""bq""qb"])))

প্রতিটি অক্ষরের জুটির মধ্যে একটি রেজেক্স তৈরি করুন এবং দেখুন ইনপুটটি কোনওটির সাথে মেলে কিনা। এই সমস্ত অংশগুলি করার জন্য আরও অনেক মার্জিত উপায়, তবে সেগুলি আরও ভার্চুজের। ক্লোজুরে গল্ফিংয়ের সাথে জীবন এমন।


0

পার্ল 5, 68 + 1 = 69 বাইট

if(/../&&$&=~/nu|un|bq|qb|mw|wm/){s/^($&)*//;$&=~/./;print if/^$&$/}

সাথে চালাও -n

ব্যাখ্যা:

# Match the first two characters, and if they exist, then...
if (/../ &&
 # Make sure they are a pair of compatible cartwheel characters.
 $&=~/nu|un|bq|qb|mw|wm/) {
  # If that's true, then eliminate as many of that pair of characters
  # from the beginning of the string as possible.
  s/^($&)*//;
  # Then get the first character out of the match (the first character
  # of the original string).
  $&=~/./;
  # Print the text (which is truthy since it's nonempty) if the original
  # first character matches exactly the remaining string.
  print if/^$&$/
  # Otherwise, print nothing (the empty string in Perl is falsy).
}

0

টিএক্সআর লিস্প , 50 বাইট

(f^$ #/n(un)+|u(nu)+|m(wm)+|w(mw+)|b(qb)+|q(bq)+/)

চালান:

1> (f^$ #/n(un)+|u(nu)+|m(wm)+|w(mw+)|b(qb)+|q(bq)+/)
#<intrinsic fun: 1 param>
2> [*1 "nun"]
"nun"
3> [*1 "nuns"]
nil
4> [*1 "mwm"]
"mwm"
5> [*1 "wmw"]
"wmw"
6> [*1 "abc"]
nil

f^$হ'ল একটি সমন্বয়কারী যা একটি রেজেেক্স অবজেক্ট নিয়ে যায় এবং একটি ফাংশন দেয় যা সেই অ্যাঙ্গোরড উপায়ে সেই রেজেক্সের সাথে মেলে। (নিজে থেকে, একটি রেজেক্স অবজেক্ট হ'ল ফাংশন-কলযোগ্য বস্তু যা একটি স্ট্রিং নেয় এবং এটির মাধ্যমে নিজের জন্য অনুসন্ধান করে))



0

টিএক্সআর : 78 74 বাইট

@{x 2}@(rep :gap 0)@x@(end)@y
@(bind(x y)(#"nu un mw wm bq qb"@[x 0..1]))

সিস্টেম প্রম্পট থেকে চালান। প্রম্পটে সংখ্যা হ'ল সমাপ্তি স্থিতি: 0 = সাফল্য, 1 = ব্যর্থতা:

0:$ ./txr cart.txr 
nun
0:$ ./txr cart.txr 
abc
1:$ ./txr cart.txr 
bab
1:$ ./txr cart.txr 
mwm
1:$ ./txr cart.txr 
nununununun
0:$

ব্যাখ্যা:

  • @{x 2}: দুটি অক্ষর মেলে, xভেরিয়েবলের সাথে বাঁধুন ।
  • @(rep :gap 0)@x@(end): কোনও ছাড়েনি ফাঁক দিয়ে পুনরাবৃত্তি ম্যাচ: শূন্য বা এর বেশি সংঘটন x, পূর্বের ম্যাচ করা ডিগ্রাফ।
  • @y: লাইনের বাকীটি মিলছে, ক্যাপচার হয়েছে y
  • @(bind(x y)(foo bar)): বেঁধে xকরার foo, y এর bar। যেহেতু xএবং yইতিমধ্যে আবদ্ধ, তাদের মিলতে হবে fooএবং barঅন্যথায় একটি ব্যর্থতা রয়েছে।
  • fooহয় #"nu un mw wm bq qb", একটি শব্দ তালিকা আক্ষরিক, পাতার মর্মর তালিকার জন্য অন্বিত চিনি ("nu" "un" ... "qb")। একটি bindএকটি পরিবর্তনশীল এবং একটি তালিকা উপায়ে যে পরিবর্তনশীল একটি উপাদান মেলানো মধ্যে ম্যাচ।
  • barহল @[x 0..1]: xএর শুরু থেকে এক-চরিত্রের সাবস্ট্রিং । এর bindমধ্যে ম্যাচটি yলাইনটির শেষ অক্ষরটিকে প্রথমটির সাথে মেলে ধরতে বাধ্য করে।

0

সি ++, 268 বাইট

#include<map>
#include<string>
std::map<char,char>c{{'n','u'},{'m','w'},{98,'q'},{'w','m'},{'u','n'},{'q',98}};
int w(std::string s){if(s[0]!=s[s.size()-1]||c.find(s[0])==c.end()||s.size()<3)return 0;for(int i=0;i<s.size()-1;i+=2)if(s[i+1]!=c[s[i]])return 0;return 1;}

মাত্র দুটি পরিবর্তে সমস্ত অক্ষরের জন্য ASCII মান ব্যবহার করে 10 বাইট সংরক্ষণ করুন ।
এমডি এক্সএফ

@ এমডিএক্সএফ n= ১১০, u= ১১7, m= ১০৯, w= ১১৯,q = ১১৩. সুতরাং ASCII মানগুলি ব্যবহার করা c(99)
হাটসুপয়েন্টারকুন

0

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

s=>/bq|wm|un/.test(s)&s.replace(RegExp(s[0]+s[1],'g'),'')==s[0]

রিটার্ন 1বা 0

ব্যাখ্যা

সমস্ত কার্টহিলের স্ট্রিংগুলিতে এক বা একাধিক বেক , ডাব্লুএমএল থাকবে , অথবা আন থাকবে । আমরা এটির জন্য এটি পরীক্ষা করি:

/bq|wm|un/.test(s)

যদি আপনি কোনও কার্টহিল স্ট্রিংয়ের প্রথম দুটি অক্ষরের সমস্ত উদাহরণ প্রতিস্থাপন করেন তবে আপনার স্ট্রিংয়ের প্রথম অক্ষরটি বাকী থাকবে। আমরা এটির জন্য এটি পরীক্ষা করি:

s.replace(RegExp(s[0]+s[1],'g'),'')==s[0]

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