গল্ফ মি একটি ওওপি!


26

গল্ফ মি একটি ওওপি!

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

ইনপুট

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

<statement> : <name> is a <name>. | <name> has a <name>.
<question> : Is <name> a <name>? | Does <name> have a <name>?
<name> : a-z | A-Z | sequence of alphanumerics or underscores, starting with a letter

ইনপুটটি সর্বদা বিবৃতি, তারপরে প্রশ্ন থাকবে। সমস্ত শ্রেণীর নাম একটি বড় ইংরেজী বর্ণ ( A-Z) দিয়ে শুরু হবে এবং সমস্ত সদস্যের নাম একটি ছোট অক্ষরের ইংরেজি বর্ণ ( a-z) দিয়ে শুরু হবে । সমস্ত নাম কেস-সংবেদনশীল - ABC123এর মতো শ্রেণি নয় Abc123

তাহলে - এখানে কোনো চক্রাকার উত্তরাধিকার হবে না Bথেকে উত্তরাধিকারী A, Aথেকে অধিকার পাইবে না Bবা কোনো B'র সন্তান।

কেবল শ্রেণীর নামগুলি একটি শ্রেণিবিন্যাসের অংশ হবে - যেমন বিবৃতি যেমন ঘটে foo is a bar.বা document has a name.না ঘটে।

আউটপুট

সত্যের বা মিথ্যা মানগুলির একটি সিরিজ, প্রশ্নের উত্তর হিসাবে, স্ট্যান্ডার্ড আউটপুটকে লেখা বা আপনার ফাংশনের রিটার্ন মান হিসাবে। যদি আপনার কোনও প্রশ্নের উত্তর দেওয়ার জন্য পর্যাপ্ত তথ্য না থাকে (উদাহরণস্বরূপ এমন প্রশ্নগুলির মধ্যে যেগুলি নামগুলির সাথে জড়িত আপনি বিবৃতিতে দেখেননি), একটি মিথ্যা মান দিয়ে উত্তর দিন।

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

মামলা 1:

ইনপুট:

B is a A.
C is a B.
A has a foo.
Does B have a foo?
Is C a A?
Is D a A?

আউটপুট:

True
True
False

কেস 2:

ইনপুট:

Cop is a Person.
Criminal is a Person.
Sheriff is a Cop.
Crooked_Cop is a Cop.
Crooked_Cop is a Criminal.
BankRobber is a Criminal.
Cop has a badge.
Criminal has a criminal_record.
Person has a name.
Is Crooked_Cop a Person?
Does Criminal have a name?
Is Crooked_Cop a BankRobber?
Does Person have a potato?
Is Cop a Cop?

আউটপুট:

True
True
False
False
True

বিধি

  • আপনি কোনও ফাংশন বা কোনও প্রোগ্রাম দিয়ে উত্তর দিতে পারেন
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ
  • এটি , তাই বাইট জেতে সংক্ষিপ্ততম সঠিক উত্তর
  • বিজয়ী উত্তরটি এক সপ্তাহের মধ্যে বেছে নেওয়া হবে

শুভকামনা, এবং ওওপি আপনার সাথে থাকুক!

লিডারবোর্ড

এই পোস্টের নীচে স্ট্যাক স্নিপেট উত্তরগুলি থেকে লিডারবোর্ড তৈরি করে) ক) ভাষা প্রতি সংক্ষিপ্ত সমাধানের তালিকা হিসাবে এবং খ) সামগ্রিক লিডারবোর্ড হিসাবে।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

## Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

## Ruby, <s>104</s> <s>101</s> 96 bytes

যদি আপনি নিজের শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের সমষ্টি বা আপনি পৃথকভাবে দোভাষী পতাকা দণ্ডের তালিকা করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

## Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও তৈরি করতে পারেন যা স্নিপেটে প্রদর্শিত হবে:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


কিভাবে Does Criminal have a name?সমান True? সমস্ত বস্তুর একটি নাম আছে?
জে আতকিন

4
@JAtkin Criminal is a PersonPerson has a name
রেটো কোরাদি

আহ ... আমি এটা মিস করেছি
জে আতকিন

আমার কি সমস্ত ইনপুট একবারে নেওয়ার দরকার আছে, বা আমি এটি ইন্টারেক্টিভ কনসোলের মতো লাইনে লাইন নিতে পারি? যদি # 2, ইনপুটটি স্ট্যাটামেন্ট হয়েও আমি কি সত্যবাদী \ মিথ্যা আউটপুট করতে পারি?
জে আটকিন

@ জ্যাটিন সমস্ত একবারে বা একের পর এক লাইন, আপনার পছন্দ। যদি এটি বিবৃতি হয় তবে কোনও আউটপুট থাকা উচিত নয়। শুধুমাত্র প্রশ্নের উত্তর পাওয়া যায়।
মেগো

উত্তর:


13

সিজেম, 59 বাইট

q_'.e=\N/{)'?=\S/>_,(%}%/(__,*{(2$z~@f=.*\m*|}/ff{1$e=>:=N}

উভয় পরীক্ষার ক্ষেত্রে এটি তাত্ক্ষণিকভাবে শেষ হয়।

এটি হয় প্রশ্নের দ্বিতীয় নামের নাম বা 1(সত্যবাদী), বা 0(মিথ্যা) মুদ্রণ করে।

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

ধারণা

শ্রেণি এবং সদস্যদের মধ্যে পার্থক্যের কারণে, চ্যালেঞ্জটি একটি প্রিআর্ডার তৈরি করতে উত্সাহিত করে যার জন্য ইনপুট আংশিক সংজ্ঞা দেয়।

আমরা সংজ্ঞায়িত করি যে xy iff x একটি y বা x এর y রয়েছে

প্রথম টেস্ট কেস জন্য ইনপুট বলে যে বিএকজন , সিবি এবং একটিfoo বিন্যাস । Transitivity কারণে আমরা আছে বিfoo বিন্যাস , সিএকজন এবং একজনfoo বিন্যাস । এছাড়াও, প্রতিবিম্বের কারণে, xx সর্বদা সত্য।

প্রদত্ত ইনপুটটির জন্য, আমরা এভাবে বিবৃতিগুলি থেকে of এর আংশিক সংজ্ঞাটি নিষ্কাশন করতে পারি trans সংজ্ঞাটি সম্পূর্ণ করতে পর্যাপ্ত পরিমাণে ট্রানজিটিভিটি প্রয়োগ করতে পারি এবং শেষ পর্যন্ত প্রশ্নের উত্তর দিতে পারি।

কোড

q_     e# Push all input from STDIN and a copy.
'.e=   e# Count the number of dots/statements (C).
\N/    e# Split the original input at linefeeds.
{      e# For each line:
  )'?= e#   Pop the last character and check if it is a question mark.
       e#   Pushes 1 for '?', 0 for '.'.
  \S/  e#   Split the modified line at spaces.
  >    e#   Remove the first chunk ("Does" or "Is") for questions.
  _,(% e#   Keep the first and last element of the resulting array.
}%/    e# Split the line array into chunks of length C.
(_     e# Extract the first chunk (statements) and push a copy.
       e# The original becomes an accumulator for ≺.
_,*    e# Repeat the statements C times.
{      e# For each of the repeated statements:
  (    e#   Shift out the first name.
       e#     ["w" "x"] -> ["x"] "w"
  2$z~ e#   Copy the accumulator, zip it and dump.
       e#     [["x" "y"] ["z" "w"]] -> ["x" "z"] ["y" "w"]
  @f=  e#   Rotate the shifted out name on top and check for equality.
       e#     ["y" "w"] "w" -> [0 1]
  .*   e#   Vectorized string repetition.
       e#     ["x" "z"] [0 1] -> ["" "z"]
  \m*  e#   Swap the result with the shifted array and apply Cartesian product.
       e#     ["" "z"] ["x"] -> [["" "x"] ["z" "x"]]
       e#   This accounts for transitivity; we had ["w" "x"] and ["z" "w"],
       e#   so now we have ["z" "x"].
  |    e#   Perform set union with the accumulator to add the new pairs.
}/     e#
ff{    e# For each of the questions on the bottom of the stack.
  1$e= e#   Count the occurrences of the question pair in the accumulator.
  >    e#   Remove 0 or 1 elements from the question pair.
  :=   e#   Check for equality.
       e#   If the question pair occurs in the accumulator, this pushes the
       e#   second name of the question pair. Otherwise, it pushes 1 if the
       e#   names are equal (to account for reflexivity) and 0 otherwise.
  N    e#   Push a linefeed.
}      e#

2
সিজেমের ক্লাস নেই তা বিবেচনা করে এটি চিত্তাকর্ষক: ডি
বিটা

এটা সুন্দর.
মেগো

@ বেটাডে ক্লাসগুলি মূলত নেস্টেড সেট; ক্লাস প্রতিটি ভাষায় প্রয়োগ করা হয়। প্রথম উদাহরণে বলুন। C:{B:{A:{foo:{}}}}

8

পাইথন 3, 431 331 308 বাইট

o={}
f={}
def h(z,f):
 if z not in o:f[z]=[z];o[z]=[]
while 1:
 g=input().split(' ');r=2;l=g[-1][:-1]
 if'.'in g[3]:
  if'i'in g[1]:h(g[0],f);h(l,f);f[g[0]]+=f[l]
  if'h'in g[1]:o[g[0]]+=l,
 else:
  if'I'in g[0]:r=any(l in z for z in f[g[1]])
  if'D'in g[0]:r=any(l in o[z] for z in f[g[1]])
 if r<2:print(r)

এটি মন্তব্য সহ পুরো সংস্করণ

objects = {}
synonyms = {}

def createObject(name):
    """
    Create a object with `name` if is does not yet exist and start a synonym tree.
    """
    if name not in objects:
        synonyms[name] = [name]
        objects[name] = []

# use this to read from a file
# with open("questions.txt") as file: 
#     for l in file:
        # print(">>> " + l, end='')
        # inArg = l.replace("\n","").split(" ")


while True: # to read from a file comment this
        inArg = input(">>> ").split(" ") # and this out

        out = -1

        if '.' in inArg[3]: # statement
            last = inArg[3].replace('.','')

            if 'i' in inArg[1]: # is a
                createObject(inArg[0])
                createObject(last)
                synonyms[inArg[0]] += synonyms[last]

            if 'h' in inArg[1]: # has a
                objects[inArg[0]] += [last]

        else:# question
            last = inArg[-1].replace('?','')

            createObject(inArg[1])
            if 'I'in inArg[0]: # Is a
                out = any([last in syn for syn in synonyms[inArg[1]]])

            if 'D'in inArg[0]: # Does have a
                out = any(last in objects[syn] for syn in synonyms[inArg[1]])

        if out != -1:
            print(out)

পরীক্ষার কেস # 1 এর আউটপুট:

True
True
False

কেস # 2:

True
True
False
False
True

আমি মূল প্রোগ্রামটিতে স্পষ্টতার জন্য ডিবাগ কমান্ডগুলি সরিয়েছি, তবে আপনি যদি তাদের দেখতে চান তবে কেবল ইতিহাসে দেখুন


এর পরিবর্তে ব্যবহার করার global fমধ্যে h(z), ব্যবহারের def h(z,f)ও বৈশ্বিক পাস fযখন এটি কলিং হবে। আসলে, আপনার একেবারেই দরকার নেই h(z)- কেবল যেখানে দেবেন সেখানে শরীরটি রেখে দিন। আপনার প্রয়োজন নেই r=2, এবং আপনি কেবল print(r)এটি ছাড়া করতে পারেন if, যেহেতু আপনাকে মিথ্যা প্রশ্নের জন্য একটি ভুয়া মান আউটপুট করতে হবে। আপনি নাম পরিবর্তন synকরতে পারেন zএবং বেশ কয়েকটি বাইট সেখানে শেভ করতে পারেন । আমি মনে করি না []প্রথমে আপনার তালিকাটি বোঝার জন্য আপনার প্রয়োজন any
মেগো

আপনি eএকবারও ব্যবহার করেন , যাতে আপনি সংজ্ঞাটি সরিয়ে ফেলতে পারেন এবং কেবল ব্যবহার করতে পারেন [a,b,c,d]। পরিবর্তে if s(i,g) is not None, করুন if s(i,g)- কোনও মিল পাওয়া গেলে re.Matchঅবজেক্টগুলি সর্বদা মূল্যায়ন করা Trueহয়। এর সাথে আপনি 2 বাইটও ড্রপ করতে পারেন f[x]+=f[y]
মেগো

@ মেগো ওয়াও, সমস্ত টিপসের জন্য ধন্যবাদ। আমি তাদের পরে রাখা প্রয়োজন।
জে আতকিন

এই পোস্টটি সম্ভবত আপনাকে অনেক সাহায্য করবে
মেগো

@ মেগো বিগ ধন্যবাদ, এখন তা 396-এ নেমে এসেছে। আমি শীঘ্রই পোস্ট করব।
জে আতকিন

4

হাস্কেল, 157 বাইট

o s=v(x 0#k)#(x 1#q)where(k,q)=break((=='?').l.l)(words#lines s)
x n w=(w!!n,init$l w)
v k(a,c)=a==c||or[v k(b,c)|b<-snd#(filter((==a).fst)k)]
(#)=map
l=last

স্ট্রিং দিন o। নিশ্চিত না যে ইনফিক্সগুলি তৈরি xএবং v('এক্সট্র্যাক্ট' এবং 'ভেরিফাই') ইনফিক্সগুলি ইনফিক্স তৈরি mapকরার চেয়ে বেশি হ্রাস করে , বা উভয়ই সম্ভব যদি না।

সম্পাদনা: ব্যাখ্যা

সুতরাং, (#)আপনি কীভাবে ইনফিক্স অপারেটরটি সংজ্ঞায়িত করেন, আমি এটি mapতালিকার প্রতিটি উপাদানটিতে একটি ফাংশন প্রয়োগ করে কেবল শর্টহ্যান্ড হিসাবে ব্যবহার করি । এটি এবং অন্যান্য উপনামটি সমাধান lকরে 'সরাসরি-ফাংশন-অ্যাপ্লিকেশন'-অপারেটর এড়ানো $এবং আরও বেশি বন্ধনী এবং স্পেসিংয়ের জিনিস যুক্ত করা এবং আসল ফাংশন নাম সহ আমরা এখানে পৌঁছেছি:

oop string = map (verify (map (extract 0) knowledge)) (map (extract 1) questions)
 where (knowledge,questions) = break ((=='?').last.last) (map words (lines string))

extract n wordlist = (wordlist!!n,init (last wordlist))

verify knowledge (a,c) = (a==c)
               || or [verify knowledge (b,c) | b <- map snd (filter ((==a).fst) knowledge)]

map words (lines string) ইনপুট স্ট্রিংয়ের প্রতিটি লাইনের শব্দের তালিকার একটি তালিকা।

(=='?').last.last রেখার শেষ শব্দের শেষ অক্ষরটি একটি প্রশ্ন চিহ্ন, অর্থাত লাইনটি একটি প্রশ্ন কিনা তা নির্দেশ করে এমন একটি সূচক।

break প্রশ্নগুলি (সমস্ত বিবৃতি) ছাড়াই প্রথম অংশের একটি তালিকায় এবং সমস্ত প্রশ্নে (সমস্ত প্রশ্ন) প্রথম অংশ থেকে তালিকাকে ভেঙে দেয়।

mapextract nএগুলির উপর পিং করা প্রতিটি শব্দের মধ্যে থাকা উপাদানগুলি আমরা প্রকৃতপক্ষে চাই সেগুলি তালিকাভুক্ত করে, nমঞ্চটি (যা বিবৃতিতে প্রথম শব্দ - সুতরাং n == 0, এবং প্রশ্নগুলিতে দ্বিতীয় শব্দ - তাই n == 1) !!অপারেটর এবং শেষটি ব্যবহার করে , যা থেকে আমরা ব্যবহার করে শেষ বর্ণটি ( '.'বা হয় '?') কেটে ফেলতে হবে init

(নোট করুন যে আমি পুঙ্খানুপুঙ্খভাবে উপেক্ষা করি, কারণ আমি শ্রেণি এবং সদস্যদের মধ্যে পার্থক্যকে সম্পূর্ণ উপেক্ষা করি, সদস্যরা জ্ঞানের ভিত্তি দ্বারা নির্মিত গাছের পাতাগুলি (তবে সমস্ত পাতা সদস্যদের প্রতিনিধিত্ব করে না, তারা উপশ্রেণী বা সদস্য নয় এমনও শ্রেণি হতে পারে) ), যার মধ্যে প্রতিটি শিশু নোড একটি উপক্লাস বা তার পিতামাতার নোডের প্রতিনিধিত্ব করে এমন সদস্যের প্রতিনিধিত্ব করে OP আমি ওপি'র আওতাভুক্ত নয় এমন ক্ষেত্রে এটি করা ভুল কাজ soon সত্যই শিগগিরই সমাধানটি সম্পাদনা করব))

এখন, map (extract 0) knowledgeএবং map (extract 1) questionsএকটি সাবক্লাস প্রতিনিধিত্বকারী নামের টিপলগুলির তালিকা রয়েছে- বা প্রথম থেকে দ্বিতীয়টির সদস্য-সম্পর্ক।

এর টিউপসগুলি map (extract 0) knowledgeসমস্ত সত্য সম্পর্ক হয়, যাঁরা map (extract 1) questionsএখন verifyপ্রথম যুক্তির সাথে সেট করে ফাংশনটি ম্যাপ করেছেন map (extract 0) knowledge

(এখন থেকে, ভিতরে verify, knowledgeএকটি প্যারামিটারের নাম এবং ইতিমধ্যে extractএড টিপল তালিকাটি বোঝায় ))

(এছাড়াও, পড়ার সময় verify, নোট করুন যে যখন ||(এসই অনুভূমিক-স্ক্রোল এড়ানোর জন্য অদক্ষ লাইনব্রেকের পরে) 'রিফ্লেক্সিভ' এবং 'রিকভারসিভ' কেসের মধ্যে স্বাভাবিক বুলিয়ান বিভাজন, orকোনও তালিকার উপরে ভাঁজ হয়, অর্থাত্ যদি পরীক্ষা করা হয় তবে তালিকার উপাদানটি সত্য)

এখন, সম্পর্কগুলি যদি স্বচ্ছন্দ হয় তবে স্পষ্টতই সঠিক। কঠোরভাবে বলতে, না, একটি potatoনয় আছে একটি potato(এবং অর্থে 'হল' এখানে ব্যবহার করা হয় এক এমনকি নয় হিসাবে 'একটি পুলিস একটি পুলিস হল'), কিন্তু যে শুধু অবসান অবস্থায় যে কভার সব সম্পর্ক পর গাছের নীচে হাঁটা (যা প্রকৃত গাছের ক্ষেত্রে ভিন্ন তার অর্থ 'পাতার দিকে')।

অন্যান্য সমস্ত ক্ষেত্রে, আমরা knowledge(আমরা filterপরীক্ষা করতে চাই যে একই প্রথম উপাদানটির সাথে কেবল জোড়া দেখতে পাচ্ছি) তা নিশ্চিত করার পরে আমরা একটি পদক্ষেপ নেওয়ার চেষ্টা করি এবং এটি যেখান থেকে দেখায় সেখান থেকে এগিয়ে যাই। তালিকা বোধগম্যতা অব্যাহত রাখার জন্য সমস্ত সম্ভাব্য টিপল নিয়ে কাজ করে verifyএবং প্রতিটি ক্ষেত্রে আবার কল করে । একটি সীমাবদ্ধ এখানে কেবল একটি খালি তালিকা থাকবে এবং falseসামগ্রিকভাবে ফিরে আসবে , এবং তাই verifyএটির দ্বারা প্রভাবিত হওয়ার উদাহরণটিকে প্রভাবিত করবে না ।


আপনি কি হাস্কেল অনর্গল মানুষের জন্য একটি সংক্ষিপ্ত ব্যাখ্যা যোগ করতে পারেন?
জে আতকিন

আনন্দের! আমি অনুরোধ না করা পর্যন্ত প্রতিটি পোস্টের জন্য এটি করি না।
লিফ উইলার্টস

ঠিক আছে ধন্যবাদ! (ফিলার)
জে আটকিন

বাহ, এটি কিছু ব্যাখ্যা।
জে আতকিন

2
আমি সবে প্রথমার্ধ পড়া শেষ করেছি Learn you a haskell for great good!এবং এটি এখন আমি এটি বুঝতে পারি! (এই উত্তরটি আসলে হ্যাসেল এবং এফপি সম্পর্কে আরও জানতে আমাকে উত্সাহিত করেছিল, এবং এটি খুব সুন্দর!)
জে এটকিন

4

জাভাস্ক্রিপ্ট, 265 263 বাইট

for(o={};i=prompt().split(/\W/);)a=i[0],b=i[1],d=i[2],b=="is"?((o[a]=o[a]||{p:[],k:{}}).p.push(d),o[d]=o[d]||{p:[],k:{}}):b=="has"?o[a].k[d]=1:alert(o[b]&&(a>"E"?b==d|(c=n=>~(p=o[n].p).indexOf(d)|p.some(c))(b):(c=n=>o[n].k.hasOwnProperty(i[4])|o[n].p.some(c))(b)))

প্রস্থান করতে একটি ফাঁকা স্ট্রিং প্রবেশ করান।

ব্যাখ্যা

for(
  o={};                               // o = all objects
  i=prompt().split(/\W/);             // i = command as an array of words
)
  a=i[0],                             // a = first word
  b=i[1],                             // b = second word
  //c=i[2],                           // c = third word
  d=i[3],                             // b = fourth word
  //e=i[4],                           // e = fifth word

  // Case: <name> is a <name>.
  b=="is"?(
    (o[a]=o[a]||{p:[],k:{}})          // create the object if it does not exist
      .p.push(d),                     // add the parent to the object's list of parents
    o[d]=o[d]||{p:[],k:{}}            // create the parent if it does not exist
  ):

  // Case: <name> has a <name>.
  b=="has"?
    o[a].k[d]=1                       // set the specified property

  :
  alert(                              // display the responses to the questions
    o[b]                              // false if the queried object does not exist
    &&(

      // Case: Is <name> a <name>?
      a>"E"?                          // "Is" > "E" and "Does" < "E"
        b==d                          // check if it is itself
        |(c=n=>
          ~(p=o[n].p)                 // p = direct parents of current object
            .indexOf(d)               // check direct parents for the object
          |p.some(c)                  // check the grandparents
        )(b)

      // Case: Does <name> have a <name>?
      :
        (c=n=>
          o[n].k.hasOwnProperty(i[4]) // check if this object has the property
          |o[n].p.some(c)             // check it's parents for the property also
        )(b)
    )
  )

আপনি ব্যবহার করতে পারেন string.split(" ");?
জে আতকিন

@ জ্যাটিন আমি .match(/\w+/g)শব্দগুলি থেকে বিরামচিহ্নগুলি সরিয়ে ফেলতাম ।
ব্যবহারকারী 81655

আমি এটি দেখেছি, তবে .split(" ")ছোট হবে না বা আমি কিছু মিস করছি? (আমি জাভাস্ক্রিপ্ট জানি না)
জে আতকিন

@JAtkin যদি আমি ব্যবহার .splitআমিও ব্যবহার করতে হবে .slice(0,-1)(দু'বার) কারণ B is a A.হবে Bউত্তরাধিকারী A.(সঙ্গে .)।
ব্যবহারকারী 81655

@ জ্যাটিন প্রকৃতপক্ষে আমি সবেমাত্র জানতে পেরেছি যে বিভাজনটি নিয়মিত অভিব্যক্তি গ্রহণ করে যাতে আমি ব্যবহার করতে পারি .split(/\W/)। আমাকে এটি সন্ধান করার জন্য ধন্যবাদ!
ব্যবহারকারী81655
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.