এটা সত্যি? জেলিকে জিজ্ঞাসা করুন!


32

পটভূমি

অক্টাভের (এবং এক্সটেনশনের মাধ্যমে, এমএটিএল) সত্যবাদী / মিথ্যা ম্যাট্রিক্সের খুব সুবিধাজনক ব্যাখ্যা দ্বারা অনুপ্রাণিত হয়ে জেলি Ȧ (অক্টটাভ-স্টাইল সমস্ত ) পরমাণু পেয়েছে ।

Ȧ ইনপুট এবং আয় যেমন একটি অ্যারে লাগে 1 যদি অ্যারের অ খালি এবং নম্বর ধারণ করে না 0 (পূর্ণসংখ্যা, ভাসা, বা জটিল) ট্রী কাঠামো যে কোন জায়গায় ; অন্যথায়, এটি 0 প্রদান করে

উদাহরণস্বরূপ, অ্যারে [[]] সত্যবাদী কারণ এটি খালি নয় এবং এতে কোনও শূন্য নেই, তবে [[0]] মিথ্যা কারণ এটি অন্তঃস্থরের স্তরে 0 রয়েছে ।

কার্য

আপনার পছন্দের একটি প্রোগ্রামিং ভাষায় , একটি সম্পূর্ণ প্রোগ্রাম বা এমন একটি ফাংশন লিখুন যা সম্ভবত খালি, সম্ভবত জাজযুক্ত পূর্ণসংখ্যার ইনপুট হিসাবে প্রিন্ট করে এবং সত্যবাদী বা মিথ্যা মান দেয় যা নির্দেশ করে যে Ȧ যথাক্রমে 1 বা 0 ফিরে আসবে কিনা ।

আপনার জমা অবশ্যই নিম্নলিখিত বিধি মেনে চলতে হবে।

  • সত্য এবং মিথ্যা মানগুলি অবশ্যই সমস্ত ইনপুটগুলির জন্য অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে , যেমন, সমস্ত অ্যারে যার জন্য Ȧ ফেরত 1 একই সত্যবাদী মানকে মানচিত্র করতে হবে এবং সমস্ত অ্যারে যার জন্য Ȧ প্রত্যাবর্তন করে 0 অবশ্যই একই নকল মানটিতে মানচিত্র তৈরি করতে হবে।

  • যেহেতু সম্পূর্ণ প্রোগ্রামগুলি কেবল ইনপুট হিসাবে অ্যারের স্ট্রিং উপস্থাপনা নিতে পারে তাই এটি অনুমোদিত। যাইহোক, আপনাকে অবশ্যই আপনার ভাষাটির ক্যানোকিকাল উপস্থাপনাটি ব্যবহার করতে হবে, যেমন ফেরত reprবা অনুরূপ।

    বিশেষত আপনি ধরে নিতে পারবেন না যে অ্যারের প্রথম উপাদানটি একটি স্পেসের আগে হবে।

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

  • যদি আপনার ভাষায় জেগড অ্যারে উপস্থাপনের বিভিন্ন উপায় থাকে (উদাহরণস্বরূপ, তালিকাগুলি এবং টিপলস), তবে আপনাকে কেবল সেগুলির মধ্যে একটিকে সমর্থন করতে হবে।

  • আপনার ভাষার যদি অন্তর্নির্মিত থাকে যা নিজেই এই চ্যালেঞ্জটির বৈধ জমা রয়েছে, আপনি এটি আপনার উত্তরে ব্যবহার করতে পারবেন না । অন্য সমস্ত বিল্ট-ইন অনুমোদিত।

  • একের থেকে অন্যের চেয়ে উল্লেখযোগ্য পরিমাণে ছোট হওয়া সত্ত্বেও অ্যারে এবং স্ট্রিং ম্যানিপুলেশন ব্যবহার করে উত্তর পোস্ট করতে আপনাকে উত্সাহ দেওয়া হচ্ছে।

  • সমস্ত স্ট্যান্ডার্ড বিধি প্রযোজ্য।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয় হোক!

সত্যবাদী পরীক্ষার কেস

[1]
[10]
[[]]
[[[[1]]]]
[[], [1], [1, 2]]
[[1], [1, [2]], [1, [2, [3]]]]
[[8], [8, [9]], [8, [9, [10]]]]

মিথ্যা পরীক্ষার মামলা

[]
[0]
[0, -1]
[-1, 0]
[[[[0]]]]
[[0], [1, 2], [3, 4, 5]]
[[8], [8, [9]], [8, [9, [1, 0]]]]
[-1, 0, 0, 0]

পরীক্ষার কেসের উপর ভিত্তি করে, আপনি গাছের কাঠামোর যে কোনও জায়গায় "0 সংখ্যাটি" বোঝাতে চান? আমি এটি অনুমান করেছি তার অর্থ এটি নয়।
xnor

হ্যাঁ, যে কোনও জায়গায়। আমি তা পরিষ্কার করার চেষ্টা করব।
ডেনিস

"আপনার স্ট্রিং উপস্থাপনার কোনও নির্দিষ্ট বিন্যাস থাকবে তা আপনি ধরে নিতে পারবেন না" এর অর্থ কী?
দাদা

2
এগুলি জ্যাজেড অ্যারে নয় - ঝাঁকুনিযুক্ত অ্যারেগুলির সমস্ত সংখ্যা একই গভীরতার সাথে থাকতে পারে, কারণ কেবল আকারের আকার ভিন্ন হয়, উপাদান ধরণের নয়।
janrjan জোহানসেন

2
@ কিওয়ার্টি রাইট, "সর্বাধিক" ভাষা যেখানে "সবকিছু" একটি Object... আমার প্রিয় হাস্কেল, যেখানে তা নেই। সি তেও কমপক্ষে এমন কোনও উপায়ে নয় যা আপনাকে নিরাপদে অ্যারে এবং ইনটগুলি মিশ্রিত করতে দেয়। এই দুটি ভাষাই জ্যাজেড অ্যারেগুলিতে পুরোপুরি সক্ষম, তবে এখনও এই সমস্যার জন্য এগুলি ব্যবহার করতে পারে না।
janrjan জোহানসেন

উত্তর:


38

জেলি, 3 বাইট

ṭFẠ

F ইনপুট তালিকা সমতল।

মূল ইনপুট তালিকায় একটি উপাদান হিসাবে উপস্থিত থাকে, যা মিথ্যা এবং যদি খালি থাকে কেবল।

তারপরে সমতল তালিকার কোনও উপাদান বা মূল তালিকা নিজেই মিথ্যা কিনা তা পরীক্ষা করে দেখুন।


(আসল উত্তর)

FẠ^Ṇ

ডেনিসকে তার সাথে মেলে এমন সমাধান খুঁজে পাওয়ার জন্য উত্সাহ দেওয়ার জন্য ধন্যবাদ।

FẠইনপুটটিতে কোনও গভীরতায় মিথ্যা মান থাকলে 0 প্রদান করে, অন্যথায় 1. Ȧখালি তালিকাগুলি বাদে এটিই হয় ।

ইনপুটটি মিথ্যা মান হিসাবে 1 প্রদান করে, অন্যথায় 0 টি একমাত্র মিথ্যা তালিকা খালি তালিকা।

দু'জনকে এক্সওর-ইনগান করে উত্তর দেয়।


F;WẠ

এটি ডেনিসের মতো একই আত্মায় রয়েছে F;LẠ, তবে Lতালিকাটি শূন্য থাকা অবস্থায় তালিকায় শূন্য রাখার পরিবর্তে Wএটি খালি তালিকাটি নিজের মধ্যে (উত্পাদনকারী [[]]) রাখার জন্য ব্যবহার করে, এতে একটি মিথ্যা উপাদান রয়েছে।


30
আমার নিজের চ্যালেঞ্জ এবং নিজের ভাষায় ছড়িয়ে পড়েছে ... ভাল!
ডেনিস

15

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

A`\b0
^...

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

প্রথমে আমরা ইনপুটটি সরান যদি এতে শূন্য থাকে। আমরা স্ট্রিংয়ের শুরু থেকে কমপক্ষে তিনটি অক্ষর মিলিয়ে দেখার চেষ্টা করি (এটি নিশ্চিত করার জন্য যে ইনপুটটি আগের পর্যায়ে মুছে ফেলা হয়নি, বা কেবল তার []সাথে শুরু হয়েছিল)।


12

রুবি, 25 24 23 18 16 বাইট

p$_!~/\D0|^..$/

-nকমান্ড লাইনে পতাকাটির প্রয়োজন (+1 বাইট, -e-> -ne)।

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

এটি একটি সম্পূর্ণ প্রোগ্রাম যা রুডি এর ক্যানোনিকাল অ্যারে বিন্যাসে এসটিডিআইএন এবং আউটপুটগুলিতে trueবা এসটিডিআউটে ইনপুট নেয় false

 $_              # line of input that was read automatically (-n)
   !~/        /  # does not match the regex...
      \D0        #   a non-digit followed by a 0
         |       #   or...
          ^..$   #   a 2-length string (which must be [], the empty array)
p                # output the result

23 বাইট ফাংশন সংস্করণ:

->a{"#{a}"!~/\D0|^..$/}

এটি এমন একটি তদন্ত যা একটি যুক্তি নেয়, অ্যারে পরীক্ষা করার জন্য।

ধন্যবাদ মার্টিন Ender একটি বাইট জন্য এবং Ventero দুই বাইট জন্য!


আপনি পতাকার সাথে একসাথে p$_!~/\D0|^..$/(বা p ! ~/\D0|^..$/, হ্যাঁ উল্লেখযোগ্য সাদা অংশ) ব্যবহার করে আরও দুটি বাইট সংরক্ষণ করতে পারেন save -n
ভেন্টোরো

8

জেলি , 4 বাইট

FẠ_Ṇ

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

Ȧ0যদি ইনপুটটি খালি থাকে বা এতে একটি থাকে তবে ফলন হয় 0, অন্যথায় এটি 1

FẠ0যদি সমতল ইনপুটটিতে একটি থাকে তবে ফলন হয় 0কেবল খালি অ্যারের প্রান্তের কেস রেখে (যেহেতু ইনপুটটি অ্যারে হিসাবে নিশ্চিত হয়)।

মোনাড নয় এমন একটি ভেক্টরাইজিং লজিকাল, এবং তাই 0কোনও খালি নয় খালি তালিকা এবং খালি তালিকার জন্য ফিরে আসে 1। এটি FẠব্যবহারের ফলাফল থেকে সহজেই বিয়োগ করা যেতে পারে _


এক নিচে, আরও একবার যেতে হবে।
ডেনিস

@ ডেনিস এটা ঠিক না FẠạṆ?
এরিক দি আউটগল্ফার

পুনঃটুইট করেছেন আমার মনে থাকা উত্তরটি খালি অ্যারের প্রান্তের ক্ষেত্রে ভিন্ন আচরণ করে এবং অ-অ্যারেগুলির জন্য পৃথক ফলাফল আনতে পারে।
ডেনিস

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

চ্যালেঞ্জের অনুমানগুলি মেনে চলতে @ এরিকিউটগলফার বি অবশ্যই সি এর সমান হবে, তবে ইনপুটটি অ্যারে হওয়ার নিশ্চয়তা হওয়ায় ডি কিছু হতে পারে।
ডেনিস

8

05 এ বি 1 ই , 9 8 বাইট

-1 বাইট ধন্যবাদ এমিগনাকে

)Q¹˜0å~_

ব্যাখ্যা:

)Q        Is the length of the input 0?
  ~    _  ... NOR ... (just for you, Dennis) 
   ¹˜     Input deep flattened
     0å   Contains 0

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


ব্যর্থ বলে মনে হচ্ছে [[]]
ডেনিস

0 এএবি 111 সত্যই সত্য?
ডেনিস

সমস্ত অ্যারে যার জন্য Ȧ 1 প্রদান করে একই তাত্ত্বিক মানটিতে মানচিত্র তৈরি করতে হবে এবং যে সমস্ত অ্যারে 0 প্রদান করে একই মানসিক মান (জোর দেওয়া খনি) তে অবশ্যই মানচিত্র তৈরি করতে হবে
ডেনিস

1
@ ডেনিস অলাইট, সেখানে একটি যৌক্তিক অবহেলা বাইট মধ্যে chucked।
Okx

1
ওহ, শুধু আমার জন্য : পি
ডেনিস

7

গণিত, 17 বাইট

#!={}&&#~FreeQ~0&

FreeQ0আমাদের জন্য চেক করে, কিন্তু অবশ্যই এটি ইনপুটটির Trueজন্য ফিরে আসবে {}, সুতরাং আমাদের সেই মামলাটি আলাদাভাবে চেক করা উচিত।


7

এপিএল (ডায়ালগ), 21 12 7 বাইট

কাঁটাচামচ ব্যবহার করে অ্যাডমকে গল্ফড 5 বাইট

⍬∘≡⍱0∊∊

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

ডায়ালাগে এটি আমার প্রথম চেষ্টা। গল্ফিং টিপস স্বাগত!

ব্যাখ্যা

⍬∘≡                   Fork; Is the argument a null set
   ⍱                  Nor
    0∊∊               0 belongs to the enlisted form of the argument
                      For example, (1 (2 (3 (0)))) would become
                      1 2 3 0 using the ∊ monad
                      Then we check if zero belongs to this vector

+1 নোট করুন যে আপনি দুটি পরীক্ষার ফলাফল সংযুক্ত করছেন। এটি একটি কাঁটাচামচ জন্য উপযুক্ত। ⍬∘≡বাম পরীক্ষা (ফাঁকা-সেট সীমাবদ্ধ-তে অভিন্ন), এবং 0∊∊ডান পরীক্ষা (নিজেই একটি কাঁটাচামচ; শূন্য সদস্য-তালিকাভুক্ত-ফর্ম)। এটি একসঙ্গে রাখুন:: ⍬∘≡⍱0∊∊এটি অনলাইন চেষ্টা করুন!
অ্যাডম

এছাড়াও, আপনি "এপিএল (ডায়ালগ)" নামটি ব্যবহার করতে পারেন যাতে লোকেরা এটি ব্যবহার করছেন তা খুঁজে পেতে পারেন।
অ্যাডাম

@ অ্যাডম টিপসের জন্য ধন্যবাদ!
ক্রিটসি লিথোস

6

অপারেশন ফ্ল্যাশপয়েন্ট স্ক্রিপ্টিং ভাষা, 1998 বাইট

A={f={private["_i","_r"];_r=1;_i=0;while{_i<count _this}do{o=_this select _i;if(o in [o])then{if(o==0)then{_r=0}}else{_r=o call f};_i=_i+1};_r};if(count _this==0)then{0}else{_this call f}}

সাথে কল করুন:

[3,6,4,[4,6],[3,6,[],[2,4,[0],3]]] call A

বা সাথে:

hint format["%1", [3,6,4,[4,6],[3,6,[],[2,4,[0],3]]] call A]

ব্যাখ্যা:

গেমের স্ক্রিপ্টিং ভাষায় কোড সহ যে কোনও স্ট্রিং বলা যেতে পারে। কোঁকড়া ধনুর্বন্ধনী {}বন্ধন একটি স্ট্রিং এর শুরু এবং শেষ বোঝায়। (উদ্ধৃতি চিহ্ন খুব কাজ করে, কিন্তু যখন তারা নেস্টেড যে নোংরা পায়।) সুতরাং, A={...}পরিবর্তনশীল করার জন্য একটি স্ট্রিং নির্ধারণ A, এবং পরিবর্তনশীল তারপর একটি ফাংশন মত বলা যেতে পারে: <argument> call A। মূলত যে কোনও স্ট্রিং কোডের ব্লক হিসাবে বিবেচনা করা যেতে পারে।

তারপরে, "ফাংশন" এর ভিতরে A, আমরা অন্য ফাংশনটি সংজ্ঞায়িত করি fprivateদুটি ভেরিয়েবল _iএবং _rস্থানীয় কাজ করার জন্য ঘোষণা করে f। একটি স্থানীয় ভেরিয়েবলের নাম একটি আন্ডারস্কোর দিয়ে শুরু করতে হবে।

while {} do {}একটি লুপ, যেখানে প্রথম স্ট্রিংয়ে (দ্বারা চিহ্নিত {}) লুপের শর্তের জন্য কোড এবং দ্বিতীয়টি লুপের দেহের জন্য রয়েছে।

_thiscallফাংশন দিয়ে পাস করা যুক্তি হয়। _thisযে কোনও ধরণের হতে পারে তবে এখানে আমরা ধরে নিই এটি একটি অ্যারে।

লুপে, o=_this select _iঅ্যারের _i: তম উপাদানটি অ্যাক্সেস করে এবং এটিকে ভেরিয়েবলের জন্য বরাদ্দ করে oif (o in [o])এটি oঅন্য অ্যারে কিনা তা নির্ধারণের জন্য একটি কৌশল । যদি oএকটি সংখ্যা (অথবা একটি অ্যারের ছাড়া আর কিছু) হয়, o in [o]নির্ণয় করা হবে true, কারণ inফাংশন একটি মান ম্যাচিং খুঁজে বের করে oঅ্যারে থেকে [o]। যদি oঅ্যারে হয় তবে এক্সপ্রেশনটি ফলন হয় false, কারণ inঅ্যারেগুলি তুলনা করতে অস্বীকৃতি জানায়।

যদি oঅ্যারে না হয় তবে আমরা এটি শূন্যের সমান কিনা তা পরীক্ষা করে দেখি এবং এটি যদি হয় তবে আমরা ভেরিয়েবলটি সেট করব _rযা আমরা রিটার্ন মান হিসাবে ব্যবহার করব শূন্যে। অন্যথায়, যদি oএকটি অ্যারে হয়, আমরা আর্গুমেন্ট হিসাবে নতুন অ্যারের সাথে _rপুনরাবৃত্ত কলের রিটার্ন মানকে বরাদ্দ করি ।fo

লুপের পরে, ফাংশন শেষে f, আমরা এক্সপ্রেশনটি মূল্যায়ন করি _rযা এর মান দেয় _r, এবং এটি মূল্যায়নের জন্য সর্বশেষ প্রকাশ হিসাবে, ফাংশনটির কলটি এটিই বলে f

এখন যেহেতু আমরা সংজ্ঞায়িত করেছি f( fভিতরে থাকা দরকার নয় A, তবে আমরা Aকিছু বাইট সংরক্ষণ করতে না চাইলে এর স্থানীয় ভেরিয়েবল / ফাংশন (আসলে কোনও পার্থক্য নেই) হিসাবে ঘোষণা করতে পারতাম ), আসুন ফিরে আসি A। এর ইনপুট অ্যারেটি খালি আছে কিনা তা if (count _this == 0)যাচাই করে Aএবং যদি এটি হয় তবে A0 প্রদান করে Otherwise অন্যথায় ফাংশনটি fডাকা হয় এবং তার ফেরতের মানটি ফেরতের মান হবে A

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


কিসের অপেক্ষা?! অপারেশন ফ্ল্যাশপয়েন্ট?
ব্রেইন গাইড 13

কিভাবে? কি??? কনফিউজড
ক্রিস্টোফার

@DownChristopher একটি ব্যাখ্যা যুক্ত করেছে Added
স্টেডিবক্স

1
আন্ডারবিগুড়ি ইয়েপ, কেন নয়? গেমের স্ক্রিপ্টিং ভাষা প্রশ্নের সাথে লিঙ্কিত মেটা পোস্টে দেওয়া প্রোগ্রামিং ভাষার সংজ্ঞাটি ফিট করে।
স্টেডিবক্স

1
@ স্টেডিবক্স আমি জিনিসটির অস্তিত্ব সম্পর্কে বিভ্রান্ত, তার বৈধতা নয় !!
ব্রেইন গাইড

5

পার্ল 5 , 15 বাইট

ডোরকনব্বের রুবি উত্তরের মতো একই কৌশলটি ব্যবহার করে 2 বাইট সংরক্ষণ করেছেন ।

কোড + -pপতাকা 14 বাইট

$_=!/\b0|^..$/

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

/.../নিশ্চিত করে যে অ্যারে খালি না থাকে (এটা কোন শৃঙ্খলার ম্যাচ হবে কিন্তু []
/\b0/যদি একটি মাত্র ম্যাচ হবে 0অ্যারের মধ্যে। ( \bনিশ্চিত করে যে 0অন্য একটি নম্বর কিন্তু একটি পূর্ণ সংখ্যা) এর অংশ নয়।


5

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

f x=or[elem c"[,"|c:'0':_<-scanr(:)[]x]<(x<"[]")

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

পরীক্ষার কেস এবং কৌশলটির জন্য লিনকে ধন্যবাদ x<"[]"

বাহ্যিক বৈষম্যকে (x<"[]")সত্য (মজাদার তালিকা) এবং or[elem c"[,"|c:'0':_<-scanr(:)[]x]মিথ্যা (কোনও শূন্য নয়) হওয়া দরকার।

এর অক্ষর 0একটি নিম্নলিখিত হিসাবে সনাক্ত করা হয় ,বা [মত একটি সংখ্যা বিরোধিতা 20। এক্সপ্রেশনটি scanr(:)[]xসমস্ত উপকরণ তৈরি করে lএবং c:'0':_<-তাদের দ্বিতীয় চরিত্রটি ক্যাপচার করে '0'। তারপর, elem c"[,"চেক প্রথম অক্ষর কিনা ,বা [

আমি এখানে ধরে নিলাম যে হাস্কেল-স্টাইলের তালিকার কোনও স্থান নেই, তবে যদি তা হয় তবে ','কেবল এটি দ্বারা প্রতিস্থাপন করা যেতে পারে ' '

এখানে আরও সরাসরি 48-বাইট পদ্ধতি রয়েছে যদিও এটি হ্যাসকেলে সত্যবাদী / ফালসি নয় এমন 0এবং এর উত্পাদন করে 1

f"[]"=0
f(c:'0':_)|elem c"[,"=0
f(_:t)=f t
f _=1

5

জেলি , 4 বাইট

F;LẠ

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

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

F;LẠ  Main link. Argument: A (array)

F     Flatten A.
  L   Yield A's length.
 ;    Concatenate.
   Ạ  All; Tell if all elements of the resulting 1D array are truthy.

মনে রাখবেন যে Ạ পরমাণু পাইথনের মতো আচরণ করে allএবং এটি নিষিদ্ধের থেকে পৃথক Ȧ


8
শীর্ষস্থানীয়: এটি কেবল 4-বাইট সমাধান জেলি নয়, সুস্পষ্টভাবে বাদ দিয়ে L;FẠ। আর কে খুঁজে পাবে?
ডেনিস

4

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

a=>a.length&&+!~`,${a}`.search`,0`

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


আপনি সম্ভবত !!a[0]পরিবর্তে ব্যবহার করতে পারেন a.length। (আপনাকে a[0]শূন্য হওয়ার বিষয়ে চিন্তা করার দরকার নেই কারণ অবশ্যই এই ক্ষেত্রে ফল অবশ্যই মিথ্যা হতে পারে।)
নীল

কিছু মনে করবেন না, আমি দেখেছি কিওয়ার্টি ইতিমধ্যে সেখানে গিয়েছে।
নীল

4

জুলিয়া, 45 বাইট

a(x)=all(a,x);a(x::Int)=x!=0;g(x)=x!=[]&&a(x)

এটি একটি ফাংশন তৈরি করে gনির্দেশ করে যে কিনা Ȧ একটি recursive ফাংশন কল করে 1 অথবা 0 হবে a। উপযুক্ত করার জন্য a, আমরা একাধিক প্রেরণ ব্যবহার করি:

# A method for scalar values
a(x::Int) = x != 0

# A recursive fallback for arrays
a(x) = all(a, x)

ফাংশনটি allএকটি ফাংশন যুক্তি গ্রহণ করে, তাই আমরা ইনপুটটির aপ্রতিটি উপাদানকে ডাকছি। তারপরে আমরা কেবল জমা দেওয়ার জন্য ফাংশনটি সংজ্ঞায়িত করি

g(x) = x != [] && a(x)

মূলত আমাদের কেবল প্রয়োজন aতবে সঠিকভাবে পরিচালনা করার জন্য একটি চেক []

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


আপনি ফাংশন a(x)বা g(x)তার !xপরিবর্তে সংজ্ঞায়িত করতে পারেন ?
সাইয়েস

4

গ্রিম , 16 14 11 বাইট

জগারবকে 5 টি বাইট সংরক্ষণের জন্য ধন্যবাদ

e`s\0v#|!..

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

eগ্রিমকে পুরো ইনপুট এবং মুদ্রণের চেষ্টা করতে এবং ম্যাচ করতে বলে The0 বা 1কিনা সম্ভব উপর নির্ভর করে।

|!কার্যকরভাবে, একটি "তন্ন তন্ন" অপারেটর কারণ x|!yজন্য সাধারণভাবে সংক্ষেপে হয় (x|y)!। সুতরাং আমরা নিশ্চিত করে নিই যে ইনপুটটিতে কোনও চিহ্নের আগে শূন্য নেই বা কেবল দুটি অক্ষরের স্ট্রিং রয়েছে ([] )।

দ্বিতীয়ার্ধ সম্পর্কে একটি নোট: P#একটি আয়তক্ষেত্রের সাথে মেলে যাতে কমপক্ষে একটি ম্যাচ থাকে P। তবে, আমাদের ক্ষেত্রে Pউভয়ই থাকে sএবং \0তাই এর জন্য সাধারণত বন্ধনীগুলির প্রয়োজন হয়: (s\0)#(কারণ এর নজির #খুব বেশি)। তবে গ্রিমের খুব সুন্দর একটি বৈশিষ্ট্য রয়েছে যেখানে আপনি ^এবং এর সাথে অপারেটরগুলির নজিরটি সংশোধন করতে পারেন v। সুতরাং v#আমরা ব্যবহার করে আমাদের #প্রাধান্যটি হ্রাস করি যাতে এটি অন্য কোনও অপারেটরের (কমন্ডেশন সহ) এর চেয়ে কম থাকে, যা আমাদের প্রথম বন্ধনীতে একটি বাইট সংরক্ষণ করতে দেয়।


3

পিপ , 12 বাইট

#Va&`\b0`NIa

পিপের পুনরায় আকারে যেমন অ্যারে কমান্ড-লাইন আর্গুমেন্ট হিসাবে নেয় [1;[2;3]]। রিটার্নস 1truthy জন্য, 0falsey জন্য। এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

              a is 1st cmdline arg (implicit)
 Va            Eval a (converting from a string to a list)
#              Take the length (0 if empty, nonzero if nonempty)
   &          Logical AND
    `\b0`      Regex pattern: word boundary followed by 0 (avoids things like 10)
         NIa   Not in a (0 if `\b0` matches in a, 1 if it doesn't)
              Autoprint

বোনাস উত্তর, 12 বাইট

পরিবর্তে একটি তালিকা এখানে নিয়ে আসে এমন একটি ফাংশন:

#_>0=0N_Js^s

#_            Len(arg)
  >0          is greater than 0
    =         which also equals the following (comparison operators chain like Python's):
     0N       Count of 0's in
       _Js^s  arg, joined on space and then split on space (a hacky way to flatten)

Tio


3

রাদা , 59 44 বাইট

f a{[1]if{g(a)[[]!=a]}}g a{[a!=0];try a|g _}

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

fঅন্যান্য স্ট্রিম থেকে ইনপুটটিকে একটি তালিকা হিসাবে গ্রহণ করে যা অন্যান্য তালিকা এবং পূর্ণসংখ্যার সমন্বিত থাকতে পারে। সত্যবাদী এবং অন্যথায় কিছু না 1হলে এটি ফিরে আসে a। সহায়ক ফাংশনটি শূন্য রয়েছে gকিনা তা পরীক্ষা করে a

ব্যাখ্যা:

f a{[1]if{g(a)[[]!=a]}}
f a{                  } /* Function declaration */
          g(a)          /* Call g -> pushes some booleans to the stream */
              [[]!=a]   /* Push value []!=a to the stream */
       if{           }  /* If all booleans in the stream are true: */
    [1]                 /*   Push 1 to the stream */
                        /* Otherwise return nothing */

g a{[a!=0];try a|g _}   /* Helper function */
g a{                }   /* Function declaration */
    [a!=0];             /* Push value a!=0 to the output stream */
           try          /* Ignore errors in the following if a is not a list */
               a        /* Push values in a to the stream */
                |g _    /* Pull values from the stream and */
                        /*   call g for each of them */
                        /*   (pushes boolean values to the output stream) */

একটি সমাধান যা রেজেক্সগুলির ব্যবহার করে খুব সম্ভবত সংক্ষিপ্ত হতে পারে।

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



3

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

import Data.List
(%)=isInfixOf
f x=not(",0"%x||"[0"%x)&&x<"[]"

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

এটি একটি ফাংশন String -> Bool। Haskell, এর তালিকা অসমসত্ত্ব, তাই সেখানে কোন বিল্ট-ইন মত তালিকা প্রতিনিধিত্ব করতে উপায় [0, [0]]


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

2
আমি প্রশ্ন মন্তব্যে quibbling করছি হিসাবে, Haskell, নেই খাঁজকাটা অ্যারে (এবং তালিকা) থাকতে - এটা শুধু যে এটা সত্যিই যথেষ্ট কি এই প্রশ্নের প্রয়োজন তা নয়।
janrjan জোহানসেন

3

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

lambda a:(a>[])^(' 0'in`a`or'[0'in`a`)

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

-6 বেনফ্র্যাঙ্কেলকে ধন্যবাদ


পূর্ববর্তী সংস্করণ, তালিকা স্ট্রিং repr, 68 বাইট রূপান্তর না করে:

lambda a:(len(a)and g(a))*1
g=lambda b:all(map(g,b))if b>[]else b!=0

এটি একটি মিথ্যা ইতিবাচক দেয় []। নিম্নলিখিত 6 টি বাইট সাশ্রয় করে এবং এতে সফল হয় []:lambda a:bool(a)^(' 0'in`a`or'[0'in`a`)
বেন ফ্রাঙ্কেল

2

ম্যাটল্যাব, 49 বাইট

যেমন ম্যাটল্যাব (পাশাপাশি অষ্টাভ) এই ধরণের নেস্টেড অ্যারেগুলিকে অনুমতি দেয় না, আমরা এটি একটি স্ট্রিং হিসাবে ব্যাখ্যা করি।

প্রথমে আমরা সমস্ত অ-অঙ্কের অক্ষরকে একটি স্থান দিয়ে প্রতিস্থাপন করি। তারপরে আমরা str2numএটিকে একটি (1 ডি) অ্যারে রূপান্তর করতে ব্যবহার করি , যার ভিত্তিতে আমরা প্রয়োগ করতে পারি all(যা অনুমোদিত, কারণ এটি এই কাজটি নিজে থেকে পুরোপুরি সমাধান করে না))

s=input('');s(s<45|s>57)=32;disp(all(str2num(s)))

2

উদাহরণস্বরূপ, 7 + 3 = 10 বাইট

\<0|^.]

-vফলাফলটি উল্টাতে প্রয়োজনীয় পতাকাটির জন্য +3 বাইট ।

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

(এখন এমন একটি সংস্করণ ব্যবহার করছে যার জন্য অ্যাকাউন্ট নেই 01 এবং অনুরূপ, কারণ wordশ্বরের শব্দটি ঠিক আছে)

আসল বাশ / গ্রেপ এন্ট্রি:

grep -Ev '\<0+\>|^.]'

খুঁজে বের করে 0গুলি যে কোন জায়গায় (শব্দ সীমানা চেক ব্যবহার \<এবং \>মত ছাড় জিনিষ 10বা a1, অথবা একটি পুরো স্ট্রিং ম্যাচিং)[] , তারপর ম্যাচ inverts।

ভাঙ্গন:

grep
     -E \    # extended regular expression syntax
     -v \    # invert match
     \<0+\>  # a number of 0s with alphanumeric boundaries on both sides
     |^.\]   # or ']' as the second character (implies '[]')

প্রতারণা নয়, কেবল ভাল গল্ফিং। :) বিটিডাব্লু, গ্রেপ আদিমতার পরীক্ষার জন্য সক্ষম, তাই এটি পিপিসিজির হিসাবে যতটা সমস্যা থাকে তেমন একটি প্রোগ্রামিং ভাষা language \<0\|^.]প্লাস -v11 বাইট সমাধান হিসাবে গণনা করা হবে।
ডেনিস

1
@ ডেনিস দুর্দান্ত, ধন্যবাদ! (আমি অতিরিক্ত বাইট সংরক্ষণ করার egrepপরিবর্তে স্যুইচ করেছি grep; ভাষার নাম বাইট-কাউন্টের সাথে গণনা করা হয় না!)
ডেভ

2

জাভাস্ক্রিপ্ট ES6, 24 টি অক্ষর

অ্যারে, রিটার্ন 1বা 0:

a=>!!a[0]&!/\b0/.test(a)

টেস্ট:

f=a=>!!a[0]&!/\b0/.test(a)

console.log([
  [1],
  [10],
  [[]],
  [[[[1]]]],
  [[], [1], [1, 2]],
  [[1], [1, [2]], [1, [2, [3]]]],
  [[8], [8, [9]], [8, [9, [10]]]],
].every(x => f(x)===1))

console.log([
  [],
  [0],
  [0, -1],
  [-1, 0],
  [[[[0]]]],
  [[0], [1, 2], [3, 4, 5]],
  [[8], [8, [9]], [8, [9, [1, 0]]]],
].every(x => f(x)===0))


যেহেতু ফেরতের মান সত্যবাদী / মিথ্যা হতে পারে, তাই আপনি ড্রপ করতে পারেন !!(তবে আপনাকে অবশ্যই এতে পরিবর্তন &করতে হবে &&)। একটি বাইট সংরক্ষণ করুন।
ব্রায়ান ম্যাকচ্যাটন

@ ব্রায়ানএমসিচাটন, বাইনারি নেই বলে নেই &। ক্ষেত্রে &&ছাড়া !!সামঞ্জস্যপূর্ণ আউটপুট ভাঙ্গা হবে: undefinedজন্য [], 0জন্য [0]এবং [0,1,2]এবং falseঅন্যদের জন্য।
কিওয়ারটি

এই চ্যালেঞ্জে সামঞ্জস্যপূর্ণ আউটপুট কীভাবে খারাপ তা আমি দেখতে পাচ্ছি না। স্যুইচ করার সাথে আমার বক্তব্যটি &&হ'ল যেহেতু আপনি আমার প্রথম পরামর্শটি গ্রহণ করেন তবে আপনার প্রয়োজন হবে 2 & 1 == 0
ব্রায়ান ম্যাকচ্যাচন

@ ব্রায়ানম্যাচ্যাচটন, প্রশ্নের প্রথম বিষয়: "সত্যবাদী এবং মিথ্যা মানগুলি অবশ্যই সমস্ত ইনপুটগুলির জন্য অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে, যার জন্য, সমস্ত অ্যারে যার জন্য Ȧ প্রত্যাবর্তন 1 একই সত্যবাদী মানকে মানচিত্র করতে হবে, এবং সমস্ত অ্যারে যার জন্য 0 প্রদান করবে মানচিত্র অবশ্যই আবশ্যক একই মিথ্যা মান। "
কিওয়ারটি

আহ, আমি তাড়াতাড়ি স্কিমেড করেছি। কিছু মনে করো না.
ব্রায়ান ম্যাকচ্যাচন

2

Å å ı ¥ ® Ï Ø ¿ , 12 4 বাইট

i0Bu

ব্যাখ্যা

i            › Take input as a list and automatically flatten it. If empty, push 0.
 0           › Push 0 to the stack
  B          › Pop 0 and push the number of times it appears
   u         › convert top value to its boolean 

ফলাফল যদি আউটপুট করা দরকার ...

i0Buo        › same as above; o outputs the top value on the stack

পূর্ববর্তী সমাধান

স্ট্যাক ভিত্তিক ভাষাগুলি আউটপুট রূপ হিসাবে স্ট্যাকের উপর মান রেখে যেতে পারে তা বুঝতে পেরে আমি এটি পোস্ট করেছি

i0B¿0oP?!¿o?

ব্যাখ্যা

i            › Take input as a list and automatically flatten it. If empty, push 0.
 0           › Push 0 to the stack
  B          › Pop 0 and push the number of times it appears
   ¿         › If the top value is true ...
    0        › Push 0
     o       › Output the top value on the stack
      P      › Pop the top value from the stack
       ?     › End if statement
        !    › Boolean opposite of top value
         ¿   › If the top value is true ...
          o  › Output the top value
           ? › End if statement

2

হাস্কেল, 45

লিন এবং এক্সনর যেমন মন্তব্য করেছিলেন, হাস্কেল ভিন্ন ভিন্ন-নেস্টেড তালিকার সাথে আসে না। তবে এগুলিকে কাস্টম ডেটা টাইপ হিসাবে যুক্ত করা এবং ফাংশনটি সেই ধরণের কাজ করতে দেওয়া সহজ এবং এটি (urgh!) স্ট্রিংগুলিতে অপারেটিংয়ের চেয়ে অনেক বেশি পছন্দনীয় ।

data L=L Int|T[L]
f(L n)=n/=0
f(T l)=all f l

[1, [2]]সিনট্যাক্স সহ আক্ষরিক হিসাবে যেমন তালিকা লিখতে সক্ষম হতে আপনার কিছু টাইপক্লাস ফুও দরকার। সম্পূর্ণ পরীক্ষার কেস:

{-# LANGUAGE OverloadedLists, TypeFamilies #-}
import GHC.Exts (IsList(..))

instance Num L where
  fromInteger = L . fromInteger
  negate (L n) = L $ negate n
instance IsList L where
  type Item L = L
  fromList = T
main = mapM_ (print . f) (
                    [ [1]
                    , [[[[0]]]]
                    , [[8], [8, [9]], [8, [9, [1, 0]]]]
                    ] :: [L])

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


2

Vim, 23 বাইট

:g/0\|^..$/d
:s/.\+/1/<CR>

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

মিথ্যা, বা 1সত্যের জন্য একটি খালি স্ট্রিং আউটপুট দেয় । আমি যদি খালি স্ট্রিং আউটপুট করতে পারি বা [] মিথ্যা (যা উভয়ই ভিমের মধ্যে মিথ্যা মানগুলি হয়) তবে এটি সংক্ষিপ্ত হতে পারে ।



1

লিথপ , 74 বাইট

(def f #L::((foldl(flatten L)(?(>(length L)0)1 0)#N,A::((?(== N 0)0 A)))))

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

ঠিক আছে, এটি আমার প্রত্যাশার চেয়ে দীর্ঘতর হয়েছে। []কেস আমাকে হোঁচট খেয়েছি এবং কয়েক বাইট যোগ করা হয়েছে। এটি কেবল তালিকাটি সমতল করে এবং এর উপরে একটি ভাঁজ ফেলে এবং এটি যদি 0 খুঁজে পায় তবে এটি সঞ্চয়ের 0 তে সেট করে।


1

রুবি , 24 22 বাইট

->a{a[0]&&a*?!!~/\b0/}

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

হ্যাঁ আমি জানি রুবিতে এর থেকে আরও ভাল সমাধান আছে তবে আমি স্ট্রিংয়ের পরিবর্তে ইনপুটটিতে অ্যারে নিয়ে যাওয়া একজনকে খুঁজে পেতে চেয়েছিলাম।


1

টিনাইলিস্প , 70 64 বাইট

(load library
(d _(q((X)(i(c()X)(all(map _ X))X
(q((L)(i L(_ L)0

শেষ লাইনটি একটি নামবিহীন ল্যাম্বডা ফাংশন যা একটি তালিকা নেয় এবং 1"সত্য-আন্ডার-Ȧ" এবং 0মিথ্যা জন্য প্রত্যাবর্তন করে। এটি অনলাইন চেষ্টা করুন!

Ungolfed

(load library)

(def _Ȧ
 (lambda (val)
  (if (equal? (type val) List)
   (all (map _Ȧ val))
   val)))

(def Ȧ
 (lambda (ls)
  (if ls
   (_Ȧ ls)
   0)))

রিকার্সিভ হেল্পার ফাংশন বেশিরভাগ কাজ করে। যদি তার যুক্তি একটি তালিকা থাকে তবে আমরা map এর উপাদানগুলিতে ফিরে যাই এবং 1যদি তারা allসত্যবাদী হয় তবে যদি তা মিথ্যা হয় তবে ফিরে 0আসি। (সুবিধামত, খালি তালিকা দেওয়া হলে allফিরে আসে 1)) অন্যথায়, আর্গুমেন্টটি অবশ্যই পূর্ণসংখ্যা হয়; আমরা এটি যেমনটি ফিরিয়ে দিই ( 0মিথ্যা এবং অন্যান্য সমস্ত সংখ্যার টিনাইলিস্পে সত্যবাদী)।

Ȧতালিকাটি অমানবিক কিনা তা প্রধান ফাংশনটি পরীক্ষা করে। যদি তাই হয়, এটি কল ; যদি না হয়, এটি ফিরে আসে 0

গল্ফযুক্ত সংস্করণটি কিছু অপরিবর্তিত আচরণের সুবিধা গ্রহণ করে: একটি পূর্ণসংখ্যা বা তালিকা (e(type X)List)কিনা তা পরীক্ষা করার পরিবর্তে Xএটি করে (c()X), যা consখালি তালিকাটি (প্রিপেন্ড) করার চেষ্টা করে X। যদি Xএকটি তালিকা হয় তবে এটি ফলাফলহীন কোনও তালিকার ফলস্বরূপ, যা সত্য। যদি Xএকটি পূর্ণসংখ্যা হয়, টিনাইলিস্প একটি ত্রুটি বার্তা আউটপুট দেয় এবং একটি খালি তালিকা দেয়, যা মিথ্যা। স্ট্যাডারকে যেহেতু উপেক্ষা করা হচ্ছে, এই পদ্ধতির বিষয়টি বৈধ।


0

পিএইচপি, 63 54 বাইট

@ ইউজার 63956 দ্বারা 9 টি বাইট সংরক্ষণ করা হয়েছে 95

function a($a){return$a&&!strpos(print_r($a,1)," 0");}

ইনপুট হিসাবে একটি অ্যারে লাগে; রিটার্ন trueবা false: $aখালি না
থাকলে print_rআউটপুটে কোনও 0মান রয়েছে কিনা তা পরীক্ষা করুন ।

অ্যারের সমাধান, 83 বাইট

function b($a,$r=0){$r|=$a;foreach($a as$v)$r|=is_array($v)?b($v,1):!!$v;return$r;}

পুনরাবৃত্ত ফাংশন রিটার্ন 1বা 0

ভাঙ্গন

function b($a,$r=0)
{
    $r|=$a;         # if $a is not empty, set $r (no effect in recursion)
    foreach($a as$v)    # loop through elements:    
        $r&=is_array($v)    # 2. if test failed, clear $r
            ?b($v,1)        # 1. if array, recurse
            :!!$v;          #    else test element <>0
    return$r;           # return $r
}

1
আপনার সাথে একটি কয়েক বাইট সংরক্ষণ করতে পারবেন strpos(print_r($a,1)," 0")পরিবর্তে preg_match(...)
ব্যবহারকারী 63956

@ ব্যবহারকারী 63956 ... এবং এটি 0-সূচকের সমস্যাও সমাধান করে। আমি দ্বিতীয় print_rপ্যারামিটার সম্পর্কে অবগত ছিলাম না । গ্রেট!
তিতাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.