কেন আরও ভাষাগুলি একটির সাথে অন্য মানের সাথে একটি মানের তুলনা করার ক্ষমতা রাখে না? [বন্ধ]


10

নিম্নোক্ত বিবেচনা কর:

if(a == b or c)

বেশিরভাগ ভাষায়, এটি লিখিত হতে হবে:

if(a == b or a == c)

যা কিছুটা জটিল এবং তথ্যের পুনরাবৃত্তি করে।

আমি জানি আমার উপরের নমুনা সিনট্যাক্সটি কিছুটা জটিল, তবে আমি নিশ্চিত যে ধারণাটি জানাতে আরও ভাল উপায় আছে।

কেন আরও ভাষা এটি অফার করে না? কর্মক্ষমতা বা সিনট্যাক্স সমস্যা আছে?


6
এসকিউএল এটি অফার করে: যেখানে এএন (বি, সি)
বৃহস্পতিবারের

4
আমি যে ভাষাগুলি এটি সরবরাহ করে, বা এটি থাকতে পারে তার জন্য আমি জিজ্ঞাসা করছিলাম না, তবে আরও ভাষা কেন এটি দেয় না? কর্মক্ষমতা বা সিনট্যাক্স সমস্যা আছে?
জেরোথ

8
@ বৃহস্পতিবারের জবাবকে সাধারণীকরণ করতে, বেশিরভাগ ভাষায়, সাধারণত আপনি সেট কনটেন্ট দিয়ে তা করেন। (অথবা যদি এটি সহজ হয় তবে একটি তালিকা বা টিপল)) এটি একইভাবে কাজ করে এবং কিছু সম্ভাব্য কৌশলগত সিনট্যাক্স সমস্যাগুলি এড়িয়ে চলে। আপনার উদাহরণ থেকে, "বি বা সি" এর অর্থ সেটটি "{বি, সি}" বা একটি অপারেটরের মতো বা || ? পাইথনে "বি বা সি" এর অর্থ "সত্যিকার অর্থে বি এর মান, অন্যথায় গ এর মান"
রব

4
মূলত এটি একটি সিনট্যাক্স সমস্যা। "খ বা সি" এবং "বি বা সি এর সাথে" এর মধ্যে পার্থক্যটি ছিন্ন করার একটি স্বজ্ঞাত উপায় হ'ল সমস্যাটি।
ইয়ংজান

2
এটি বিশেষ ক্ষেত্রে যথেষ্ট হ্যাকি a == b or c, এবং এটি আইএমএইচও ভাল করে না।

উত্তর:


24

সিনট্যাক্স ইস্যুটি - এটির জন্য সিনট্যাক্সের প্রয়োজন।

আপনার ভাষায় যা সিনট্যাক্স রয়েছে, ভাষা ব্যবহার করা লোকদের এটি শিখতে হবে। অন্যথায় তারা কোডটি দেখায় এবং এটি কী করে তা না জানার ঝুঁকি চালায়। সুতরাং কোনও ভাষার যদি এমন একটি সরল বাক্য বাক্য থাকে যা পরিষ্কারভাবে প্রচুর ক্ষেত্রে পরিচালনা করে তবে এটি একটি ভাল জিনিস হিসাবে বিবেচিত হয়।

আপনার নির্দিষ্ট উদাহরণে, আপনি একটি ইনফিক্স অপারেটর নেওয়ার চেষ্টা করছেন (এমন একটি ফাংশন যা দুটি আর্গুমেন্ট নেয় তবে লেখা থাকে Argument1 Operator Argument2) এবং একাধিক যুক্তিতে এটি প্রসারিত করার চেষ্টা করছেন। এটি খুব পরিষ্কারভাবে কাজ করে না কারণ ইনফিক্স অপারেটরগুলির পুরো বিন্দুটি, একটি মাত্রা পর্যন্ত অপারেটরটিকে 2 টি আর্গুমেন্টের মধ্যে ডানদিক রাখা উচিত। প্রসারিত করার (Argument1 Operator Argument2 MagicallyClearSymbol Argument3...)ফলে খুব বেশি স্পষ্টতা যুক্ত হবে বলে মনে হয় না Equals(Arg1,Arg2,...)। ইনফিক্স সাধারণত গাণিতিক কনভেনশনগুলির অনুকরণ করতে ব্যবহৃত হয় যা লোকেদের সাথে পরিচিত, যা কোনও বিকল্প বাক্য গঠনের ক্ষেত্রে সত্য হবে না।

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

ধারণাটি নিয়ে বড় সমস্যাটি হ'ল যে কোনও ভাষায় প্রচুর বিশেষ কেস তৈরি করা একটি খারাপ ধারণা হতে পারে ।


1
অন্যদিকে: স্কালায় একটি স্বেচ্ছাসেবী সংখ্যার সাথে ইনফিক্স অপারেটর রয়েছে, কারণ ইনফিক্স অপারেটরগুলি কেবল একটি ছাড়া মেথড কল .। সুতরাং তারা হিসাবে লেখা হবে arg1 op (arg2, arg3)। হুবহু সুন্দর নয়, তবে সেই ভাষার প্রসঙ্গে কিছু জায়গায় প্রয়োজন।
আমন

if my_var in (a, b)তাহলে কি হবে ? এটি কি কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করার প্রশ্ন নয়?

দুর্দান্ত পয়েন্ট। ভাষার বাক্য গঠনটি ভাষার প্রয়োজনীয় হওয়া উচিত এবং তারপরে আপনি তার উপরে লাইব্রেরি তৈরি করুন। ভাষাটি যদি "সহায়ক" সিনট্যাকটিকাল চিনির সাথে খুব বেশি বিশৃঙ্খল থাকে তবে এটি ব্যবহার করা আরও শক্ত হয়ে যায়। a == b or cঅন্যেরা চাইলে প্রত্যেকেরই প্রয়োজন হয় না a == b or c but not d। আইএমও যেখানে ইউটিলিটি ফাংশন / গ্রন্থাগারগুলি উদ্ধার করতে আসে।
অ্যালান

সম্ভবত যা প্রয়োজন তা হ'ল একটি উপায় যার মাধ্যমে কোনও পদ্ধতিটি নির্দিষ্ট করে দিতে পারে যে স্বেচ্ছাসেবী সংখ্যার সাথে একটি কলকে একাধিক কল হিসাবে পরিচালনা করা উচিত, ফলাফলগুলি কোনওভাবে একত্রিত করে। যদি f().Equals(a,b,c); (var temp=f(); temp.Equals(a)||temp.Equals(b)||temp.Equals(c))সিনট্যাক্সটি নিখুঁত হবে বলে মূল্যায়ন করা যেতে পারে তবে এটি যদি int[] arr = {a,b,c}; f().Equals(arr);এতটা ভাল না হয় তবে এটি বিশেষত যদি প্রতিটি কলের জন্য একটি নতুন অ্যারে তৈরি করতে হয় তবে তা মূল্যায়ন করা যায়।
সুপারক্যাট

6

কারণ এটি একটি সমস্যাবিহীন, এবং এটি সমাধান করা মূলত শূন্য সুবিধা নিয়ে আসে তবে এটি বাস্তবায়ন শূন্য-ব্যয় নিয়ে আসে।

বিদ্যমান পরিসীমা-ভিত্তিক ফাংশন এবং এর মতো যে ব্যবহারিকভাবে প্রতিটি ভাষা প্রস্তাব দেয় এই পরিস্থিতিতে পুরোপুরি ভাল কাজ করতে পারে যদি এটি এমন আকারে স্কেল করে যেখানে a == b || a == cএটি কেটে না।


2
+1, তবে আমি মনে করি যে "বিদ্যমান পরিসীমা ভিত্তিক ফাংশনগুলির যে ব্যবহারিকভাবে প্রতিটি ভাষায় [অফার করে]" তাদের মধ্যে একজন বা দু'একটি দেখিয়ে উত্তরটি আরও উন্নত হবে, সুতরাং এই বিকল্পটি আরও পরিষ্কার হবে।
অব্নার শাহর-কাশতান

আপনি কি প্রমাণ করতে পারবেন যে এটি "মূলত শূন্য সুবিধা নিয়ে আসে, কিন্তু এটি বাস্তবায়নের ফলে শূন্য-ব্যয় হয়"?
দারেক নডজা

3
@ দারেকনিডাজা দ্বিতীয়ার্ধটি বিতর্কিত হওয়া উচিত নয়: প্রতিটি বৈশিষ্ট্যটি অবশ্যই প্রয়োগ করা, পরীক্ষা করা, নথিভুক্ত ও সমর্থিত হওয়া উচিত। এই পদক্ষেপগুলির কোনওটিই কোনও যুক্তিসঙ্গত মেট্রিকের অধীনে নিখরচায় নয় (মানুষের সময়, সুযোগ ব্যয়, জটিলতা, আর্থিক ব্যয় যদি কারও কাছে এটির জন্য কাজ করা হয় তবে) under

@ আভেনারশাহার-কাশতান রাজি হয়েছিলেন - আমার কাছে এটি স্পষ্ট নয় যে এটি কীভাবে দেখবে, বলতে হবে, জাভা, বা শ, বা জেডএস হবে? ঠিক আছে, সে সম্ভবত 'আধুনিক' ভাষা বোঝিয়েছে। খাঁজকাটা?
ভোলকার সিগেল

পিএইচপি-তে, এটি দেখতে ভালো লাগবে in_array($a, [$b, $c, $d, $e, $f])। : পি
সিএইচও

6

কিছু ভাষায় এ জাতীয় বৈশিষ্ট্য রয়েছে। Perl6 মধ্যে যেমন আমরা ব্যবহার করতে পারি জাংশন , যা দুইটি মানের "superpositions" আছেন:

if $a == any($b, $c) {
    say "yes";
}

# syntactic sugar for the above
if $a == $b | $c {
    say "yes";
}

জংশনগুলি স্ক্যালার অপারেশনকে কিছু ভাষায় সংগ্রহের মাধ্যমে যেভাবে বিতরণ করে তার অনুরূপ, বেশ সংক্ষিপ্তভাবে ডেটাগুলির সেটগুলিতে অপারেশন প্রকাশ করার অনুমতি দেয়। উদাহরণস্বরূপ পাইথনকে নিম্পের সাথে ব্যবহার করে তুলনাটি সমস্ত মানগুলিতে বিতরণ করা যায়:

import numpy as np
2 == np.array([1, 2, 3])
#=> np.array([False, True, False], dtype=np.bool)
(2 == np.array([1, 2, 3])).any()
#=> True

তবে এটি কেবল নির্বাচিত আদিম ধরণের জন্য কাজ করে।

জংশন সমস্যাযুক্ত কেন? যেহেতু কোনও জংশনে অপারেশনগুলি অন্তর্ভুক্ত মানগুলিকে বিতরণ করে, জংশন অবজেক্টটি নিজেই পদ্ধতি কলগুলির জন্য প্রক্সিটির মতো আচরণ করে - হাঁসের টাইপিং বাদে কয়েকটি ধরণের সিস্টেম পরিচালনা করতে পারে।

এই জাতীয় জংশনগুলি কেবল তুলনামূলক অপারেটরগুলির চারপাশে বিশেষ সিনট্যাক্স হিসাবে অনুমোদিত হলে টাইপ সিস্টেম সমস্যাগুলি এড়ানো যায় । তবে এক্ষেত্রে এগুলি এতটাই সীমিত যে তারা কোনও বুদ্ধিমান ভাষায় যুক্ত করার জন্য পর্যাপ্ত মান যোগ করেন না। একই ক্রিয়াকলাপটি সেট অপারেশনগুলি ব্যবহার করে বা ম্যানুয়ালি সমস্ত তুলনা বানানটি প্রকাশ করা যেতে পারে এবং যদি ইতিমধ্যে একটি নিখুঁত সূক্ষ্ম সমাধান থাকে তবে বেশিরভাগ ভাষা অপ্রয়োজনীয় বাক্য গঠন যুক্ত করতে বিশ্বাস করে না।


সেই নির্দিষ্ট অদ্ভুত উদাহরণটিকে আরও পরিষ্কার করে পুনরায় লেখা যেতে পারে 2 in [1, 2, 3]। অন্যদিকে, নিম্পের যদি একটি .all()বা কিছু থাকে তবে সমপরিমাণ সমতল পাইথন প্রায় সংক্ষিপ্ত নয়।
ইজকাটা

@ ইজকাটা আমি বিশেষভাবে সেট অপারেশনগুলি ব্যবহার করি নি। আমার উদাহরণটি ==অপারেটরটি ব্যবহার করার সময় , আমরা তার <পরিবর্তেও ব্যবহার করতে পারি - আপনার inএখন কোথায়? জাংশন, সেট সদস্যপদ পরীক্ষার চেয়ে আরও সাধারণ কারণ মোড় উপর অপারেশন সকল সদস্যদের উপর বিতরণ - (x|y).fooহয় x.foo|y.fooনা হওয়া পর্যন্ত মোড় পরিশেষে একটি একক মান সঙ্কুচিত করা হয়। প্রদত্ত NumPy কোডটি আদিম প্রকারগুলি ধরে ধরে পার্ল jun জংশনের একটি ঠিক সমতুল্য কিন্তু আরও ভার্ভোজ অনুবাদ দেখায়।
আমন

2

ম্যাক্রোগুলির ভাষায়, ইতিমধ্যে এটি না থাকলে এমন কিছু যুক্ত করা সহজ। র‌্যাকেট বিবেচনা করুন

(define-syntax-rule (equal-any? a b ...)
  (or (equal? a b) ...))
(equal-any? "a" "b" "a")
> #t

রূপান্তর না করে অন্য ভাষায়, সম্ভবত আপনি সেট / তালিকার সদস্যতা যাচাইকরণ হিসাবে এটি সংশোধন করতে পারেন সম্ভবত:

if a ∈ {b, c}

2
প্রথম দুটি পরীক্ষা করে সমস্ত যুক্তি সমান কিনা; প্রথম আর্গুমেন্ট নিম্নলিখিতগুলির সাথে সমান কিনা তা ওপি চেক করতে চায়। কৌতূহলজনকভাবে, আপনার প্রদর্শিত তৃতীয় স্নিপেট সম্মান করে।

@ ডেলান দুঃখিত, আমি জিনিসকে ভুল বুঝেছি। আমি এটি সম্পাদনা করেছি।
ফিল

2

কিছু (জনপ্রিয়) ভাষায় ==অপারেটর ট্রানজিটিভ নয়। উদাহরণস্বরূপ জাভাস্ক্রিপ্ট 0উভয় ''এবং সমান '0', ''এবং তারপর এবং '0'প্রতিটিের সমান হয় না। পিএইচপি-তে এ জাতীয় আরও কিছু বাজে কথা।

এটা তোলে তার মানে a == b == c, অন্য অস্পষ্টতা যোগ হবে, কারণ এটি কিনা তা হিসেবে ব্যাখ্যা হচ্ছে তার উপর নির্ভর করে একটি ভিন্ন ফল পারে (a == b) & (a == c)বা (a == b) & (a == c) & (b == c)


2

বেশিরভাগ ভাষায়, কোনও Inফাংশন লিখে এটি তুচ্ছভাবে অর্জনযোগ্য হওয়া উচিত , তবে কেন এটিকে আসল ভাষার একটি অংশ বানাবেন?

উদাহরণস্বরূপ, লিনক রয়েছে Contains()

ঠিক আছে, আপনার সকল পেডেন্টদের জন্য, এখানে সি # তে আমার বাস্তবায়ন রয়েছে:

public static bool In<T>(this T obj, params T[] values)
{
    for(int i=0; i < values.Length; i++)
    {
        if (object.Equals(obj, values[i]))
            return true;
    }
    return false;
}

এটি ওপেনের কোড হিসাবে প্রকাশিত হতে পারে এমন টিপল নয়, একটি মানসম্পন্ন রান-টাইম পরিসীমা নিয়ে কাজ করে।
ডেড এমজি

দেখে মনে হচ্ছে এটি কেবল সহজ, এর অর্থ এটি করা উচিত নয়। এটি ... নির্মাণ বিবেচনা করুন। আমরা কেন সবসময় কার্যকারিতা এবং অ্যালগরিদমের এই সমস্ত বুনিয়াদি টুকরোটি বার বার লিখতে থাকি?
জেরোথ

5
@ জেরোথ সম্ভবত আপনি বার বার একই জিনিস লিখছেন, তবে অন্যরা পরিবর্তে তাদের ভাষার দ্বারা প্রদত্ত বিমূর্ত পদ্ধতিটি ব্যবহার করার ঝোঁক। আপনি নিজেকে দেখতে পান, তাহলে লেখার a == b || a == cএকাধিক বার, হয়তো এটা সময় এসেছেequals_any(a, {b, c})
আমন

একটি "রয়েছে" বাস্তবায়ন সহজে if (a > (b or c))এবং এর মতো জিনিসগুলি কভার করার জন্য প্রসারিত হয় না if (a mod (b or c) == 2)
tobyink

1
কেউ কি পেডেন্টস বলেছে? :) এটি ফোরচ লুপস, সুতরাং কোনও iপরিবর্তনশীল নেই। এবং সামগ্রিক এটা পরে আপনি একটি দীর্ঘ দিন ছিল করেছি :) কারণ উভয় নির্বাণ লেখা যেতে বলে মনে হয় return trueএবং return falseলুপ ভিতরে এখানে কোন উপায় এটি আগের প্রথম পুনরাবৃত্তির পরলোক করতে হবে মানে। আপনি কেবল প্রথমটির সাথে তুলনা করছেন value। যাইহোক, কেন Any@ বোবি প্রস্তাবিত এবং এটিকে সহজতর হিসাবে ব্যবহার করবেন নাreturn values.Any(value => Object.Equals(obj, value));
কনরাড মোরাওস্কি

1

"যদি (a == b বা c)" বেশিরভাগ ভাষায় কাজ করে: a == খ বা সি যদি নেতিবাচক, নাল, বা শূন্য না হয়।

এটি ভার্বোজটি বিন্দুটি মিস করে বলে অভিযোগ করা: আপনি শর্তসাপেক্ষে এক ডজন জিনিস ilingোকাবেন না। আপনার যদি একটি মানকে অন্য মানগুলির একটি স্বেচ্ছাসেবী সংখ্যার সাথে তুলনা করতে হয় তবে একটি সাবরুটাইন তৈরি করুন।


3
কোন ভাষা "সর্বাধিক" গঠিত?
হতাশ

1
@ ফ্রাস্ট্রেটেড উইথফোর্ডস ডিজাইনার, ভাল, যদি cকোনও বুলিয়ানকে মূল্যায়ন করা হয় তবে কোনও ভাষা হ্যান্ডেল করতে পারে a == b || c:)
ব্রায়ান এস

@ ব্রায়ানস: আমি ধরে নিয়েছিলাম ওপি মানে আক্ষরিক বাক্য গঠন if(a == b or c)। আমার একটি বিরতি নেওয়া দরকার, আমি মনে করি ...: পি
হতাশ

নিবন্ধন করুন ... হাহ? ... :)
ভোলকার সিগেল

3
এটি সত্যই প্রশ্নের বিন্দু মিস করে। if (a == b or c)যদি চেক করতে সিউডো-কোড aসমান b, বা aসমান c। এটি যা cশূন্য নয় তা যাচাই করার উদ্দেশ্যে নয় ।
এইচডিভি

1

সাধারণত, আপনি নিজের সিনট্যাক্সটি ন্যূনতম রাখতে চান এবং পরিবর্তে এই জাতীয় নির্মাণগুলি ভাষায়ই সংজ্ঞায়িত করার অনুমতি দিন।

উদাহরণস্বরূপ, হাস্কেলতে আপনি ব্যাকটিক্স ব্যবহার করে দুটি বা ততোধিক যুক্তি দিয়ে যে কোনও ফাংশন ইনফিক্স অপারেটরে রূপান্তর করতে পারেন। এটি আপনাকে লিখতে দেয়:

if a `elem` [b, c] then ... else ...

যেখানে elemকেবল দুটি সাধারণ যুক্তি - একটি মান এবং মানেরগুলির একটি তালিকা গ্রহণ করে এবং প্রথমটি দ্বিতীয়টির একটি উপাদান কিনা তা পরীক্ষা করে।

আপনি যদি andপরিবর্তে ব্যবহার করতে চান or? হাস্কেলে, আপনি কোনও নতুন বৈশিষ্ট্য প্রয়োগের জন্য সংকলক বিক্রেতার অপেক্ষা না করে কেবল নিম্নলিখিতটি ব্যবহার করতে পারেন:

 if all (== a) [b, c] then ... else ...

1
কেন কেউ সিনট্যাক্স ন্যূনতম রাখতে চান? সেখানে বাণিজ্য বন্ধ কী চলছে? যুক্তি সমর্থন না করে এর মতো ঘোষণাপত্র করবেন না। ;)
জেরোথ

1

কিছু ভাষায় এটি অফার করে - কিছুটা হলেও।

আপনার নির্দিষ্ট উদাহরণ হিসাবে নাও হতে পারে তবে উদাহরণস্বরূপ পাইথন লাইনটি ধরুন:

def minmax(min, max):
    def answer(value):
        return max > value > min
    return answer

inbounds = minmax(5, 15)
inbounds(7) ##returns True
inbounds(3) ##returns False
inbounds(18) ##returns False

সুতরাং, কিছু ভাষা একাধিক তুলনার সাথে ঠিক আছে, যতক্ষণ আপনি এটি সঠিকভাবে প্রকাশ করছেন।

দুর্ভাগ্যক্রমে, এটি তুলনা করার জন্য আপনি এটির মতো আশা করেন ঠিক তেমন কাজ করে না।

>>> def foo(a, b):
...     def answer(value):
...         return value == a or b
...     return answer
... 
>>> tester = foo(2, 4)
>>> tester(3)
4
>>> tester(2)
True
>>> tester(4)
4
>>> 

"আপনার অর্থ কি এটি প্রত্যাশিত হয় 4 বা সত্য?" - আপনার পরে ভাড়া

এক্ষেত্রে একটি সমাধান, কমপক্ষে পাইথন সহ এটি কিছুটা আলাদাভাবে ব্যবহার করা:

>>> def bar(a, b):
...     def ans(val):
...             return val == a or val == b
...     return ans
... 
>>> this = bar(4, 10)
>>> this(5)
False
>>> this(4)
True
>>> this(10)
True
>>> this(9)
False
>>> 

সম্পাদনা: নিম্নলিখিতটি আবারও পাইথনে আবার কিছু একই কাজ করবে ...

>>> def bar(a, b):
...     def answer(val):
...             return val in (a, b)
...     return answer
... 
>>> this = bar(3, 5)
>>> this(3)
True
>>> this(4)
False
>>> this(5)
True
>>> 

সুতরাং, যেটা ভাষা আপনি ব্যবহার করছেন, এটা হতে পারে যে আপনি করতে পারবেন না এটা করতে, শুধুমাত্র সেই আপনাকে প্রথমে কিভাবে যুক্তিবিজ্ঞান আসলে কাজ করে এ একটি ঘনিষ্ঠ কটাক্ষপাত উচিত নয়। সাধারণত আপনি যে ভাষাটি আপনাকে বলতে চান তা আসলে 'জিজ্ঞাসা' করছেন তা জানা মাত্র।


1

অ্যারেতে ব্যবহৃত ইনডেক্সফ পদ্ধতিটি, যেটি বেশিরভাগ ভাষায় রয়েছে, বেশ কয়েকটি অন্যের সাথে একটি মানের তুলনা করতে দেয়, তাই আমি অনুমান করি যে কোনও বিশেষ অপারেটর খুব বেশি অর্থবোধ করে না।

জাভাস্ক্রিপ্ট যে লিখতে হবে:

if ( [b, c].indexOf(a) != -1 ) { ....  }

0

আপনি জিজ্ঞাসা করুন কেন আমরা এটি করতে পারি না: if(a == b or c)

পাইথন এটি খুব দক্ষতার সাথে করে, বাস্তবে, সবচেয়ে দক্ষতার সাথে set:

if a in set([b, c]):
    then_do_this()

সদস্যপদ পরীক্ষার জন্য, 'সেট' পরীক্ষা করে যে উপাদানটির হ্যাশগুলি একই এবং কেবল তখনই সাম্যের জন্য তুলনা করা হয়, সুতরাং উপাদানগুলি, বি এবং সি, অবশ্যই হ্যাশেবল হতে হবে, অন্যথায় একটি তালিকা সরাসরি সাম্যের জন্য তুলনা করে:

if a in [b, c]:
    then_do_this()

0

এপিএল-স্টাইলের ভাষাগুলি আপনাকে একক ক্রিয়ায় ভেক্টরের প্রতিটি উপাদানগুলির সাথে একটি স্কেলারের তুলনা করতে দেয়। এটি একটি বুলিয়ান ভেক্টর উত্পাদন করে। একটি উদাহরণ জন্য, আমি নির্লজ্জভাবে আমার ন্যূনতমরূপে-বৈশিষ্ট্যযুক্ত APL ক্যালকুলেটর, প্রচার করতে চাই Inca ( অনলাইন অনুবাদক )।

   a<5
5 
   b<4
4 
   c<5
5 
   a=b c
0 1 

এটি একটি একক মানের হ্রাস করতে, আমরা একটি অন্তর্ভুক্তি করতে পারি বা ননজারোর জন্য সংমিশ্রণ করে এবং পরীক্ষা করে।

   0!+/a=b c
1 
   c<6
6 
   0!+/a=b c
0

সুতরাং, অন্য উত্তরগুলি যেমন বলে, সমস্যাটি সিনট্যাক্স। কতক করতে, সিনট্যাক্স সমাধান আছে অ্যারের দৃষ্টান্ত শেখার সম্ভবত ভারী খরচে পাওয়া গেছে।

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