চার্চ বুলিয়ান্স


33

চার্চ বুলিয়ান

একটি চার্চ বুলিয়ান একটি ফাংশন যা xসত্য এবং yমিথ্যা জন্য ফাংশন দেয় যেখানে xফাংশনের প্রথম আর্গুমেন্ট এবং ফাংশনের yদ্বিতীয় যুক্তি। আরও ফাংশন এই ফাংশন যা প্রতিনিধিত্ব থেকে গঠিত হতে পারে and not or xorএবং impliesলজিক্যাল অপারেশন।

চ্যালেঞ্জ

চার্চ Booleans এবং আঁকো and not or xorএবং impliesআপনার পছন্দের একটি ভাষায় চার্চ দরজা। and orএবং xorদুটি ফাংশন নেওয়া উচিত (চার্চ বুলিয়ান প্রতিনিধিত্ব করে) এবং একটি ফাংশন ফিরে (অন্য চার্চ বুলিয়ান প্রতিনিধিত্ব করে)। তেমনিভাবে, notএটি গ্রহণ করা ফাংশনটি উল্টানো উচিত এবং impliesগেটটি বুলিয়ান সঞ্চালন করা উচিত যেখানে প্রথম যুক্তি impliesদ্বিতীয়টি যুক্তি যুক্ত করে।

স্কোরিং

চার্চ তৈরি করতে trueএবং falseআপনার ভাষায় and not or xorএবং impliesচার্চের গেটগুলি ফাংশনের নাম বাদ দিয়ে প্রয়োজনীয় সমস্ত কোডের মোট দৈর্ঘ্য । (উদাহরণস্বরূপ, false=lambda x,y:yপাইথনে 13 বাইট হবে)। আপনার নামগুলিতে এই গেটের বাইট মোটের দিকে 1 বাইট গণনা করে আপনার নামগুলিতে পরে তা পুনরায় ব্যবহার করতে পারেন।

সিউডো কোড উদাহরণ:

আপনার তৈরি করা ফাংশনগুলি আপনার কোডগুলিতে পরে কল করা উচিত।

true(x, y) -> x
false(x, y) -> y
and(true, true)(x, y) -> x
and(true, false)(x, y) -> y
# ... etc

2
আমাদের কি ফাংশন ইনপুটগুলি (বা নিকটস্থ বিকল্পগুলি) ব্ল্যাক-বক্স ফাংশন হিসাবে বিবেচনা করতে হবে, বা আমরা কোডটির মধ্যে পরিদর্শন করতে পারি? এবং লজিক্যাল অপারেশনের রিটার্ন মানগুলি অবশ্যই চার্চ বুলিয়ানদের হিসাবে সংজ্ঞায়িত একই ফাংশনগুলির হতে হবে, বা তারা একই জিনিস করে এমন অন্য কিছু হতে পারে?
অরক্ষিত স্ট্রিং

1
@ জোনাথান অ্যালান আমি এটি সম্পাদনা করেছি তাই এটি সঠিক ছিল। প্রম্পটটি এখন যেমন হওয়া উচিত তেমন।
রায়ান স্কেফার

2
আমরা কি যুক্তি হিসাবে তালিকা নিতে পারি (যেমন true([x, y]), and([true, true])([x, y]))?
ar4093

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

1
স্কোরিং বরং বিভ্রান্তিকর। জনগণকে বেনামে ফাংশন জমা দেওয়া দেওয়া ভাল না, তবে তারা যদি অন্য অংশে এটি ব্যবহার করেন তবে তাদের যথারীতি ঠিক যেমন অর্পণ করতে হবে
জো কিং

উত্তর:


14

বাইনারি ল্যাম্বদা ক্যালকুলাস , 13.875 12.875 বাইট (103 বিট)

জন ট্রম্পের বাইাইনারি ল্যাম্বদা ক্যালকুলাস ল্যাঙ্গুয়েজ (বিএলসি) মূলত ল্যাম্বদা ক্যালকুলাসের জন্য একটি দক্ষ সিরিয়ালাইজেশন ফর্ম্যাট। এটি এই কাজের জন্য একটি দুর্দান্ত ফিট, কারণ চার্চ নোটেশন এমনকি বিএলসিতে বুলিয়ানদের সাথে কাজ করার "আইডিয়োমেটিক" উপায়।

আমি কম্বিনেটরগুলির জন্য নিম্নলিখিত লাম্বদা ফাংশনগুলি ব্যবহার করেছি, যার কয়েকটি আমি হাস্কেল উত্তর থেকে অনুলিপি করে গল্ফ করেছি: যা প্রতিটি ক্ষেত্রে 20 %-হ্রাসের প্রমাণ সীমা সহ একটি বিস্তৃত অনুসন্ধানে পাওয়া গেছে। এগুলি সংক্ষিপ্ততম হওয়ার খুব ভাল সম্ভাবনা রয়েছে।

True:  (\a \b a)
False: (\a \b b)
Not:   (\a \b \c a c b)
And:   (\a \b b a b)
Or:    (\a a a)
Xor:   (\a \b b (a (\c \d d) b) a)
Impl:  (\a \b a b (\c \d c))

এগুলি নিম্নলিখিত (বাইনারি) বিএলসি কোড অনুক্রমগুলিতে অনুবাদ করে:

 bits |  name | BLC
------+-------+---------
    7 | True  | 0000 110
    6 | False | 0000 10
   19 | Not   | 0000 0001 0111 1010 110
   15 | And   | 0000 0101 1011 010
    8 | Or    | 0001 1010
   28 | Xor   | 0000 0101 1001 0111 0000 0101 0110
   20 | Impl  | 0000 0101 1101 0000 0110

উপরের ফাংশনগুলি মোট 111 বিট দীর্ঘ (13.875 বাইট) 103 বিট দীর্ঘ (12.875 বাইট)। কোনও প্রোগ্রামের অভ্যন্তরে ব্যবহার করতে তাদের বাইট সীমানায় সারিবদ্ধ হওয়ার দরকার নেই, তাই ভগ্নাংশ বাইটগুলি গণনা করার জন্য এটি বোধগম্য হয়।

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


1
আমি ব্ল্যাক জানি না, তবে কি And: (\a \b a b a)কাজ করবে ?
TSH

হ্যাঁ এটা কাজ করে. আমি আসলে আমার কোড সিকোয়েন্সগুলির জন্য এই সূত্রটি ব্যবহার করেছি। আমি কেবল সংশ্লিষ্ট ল্যাম্বদা ফাংশনটি আপডেট করতে ভুলে গেছি (এখন সংশোধন করা হয়েছে)। সমতুল্য ফাংশন বা: এর জন্য কাজ করে \a \b a a b। যদিও আমি বিএলসিতে ব্যবহার করেছি তার চেয়ে এটি বেশি দীর্ঘ।
পাভেল পোটোয়েক

25

হাস্কেল , 50 - 6 = 44 বাইট

-১ বাইট ধন্যবাদ খুলদ্র্যাসেথ না বারিয়াকে এবং -১ বাইট ধন্যবাদ ক্রিশ্চিয়ান সিভারসকে।

t=const
f=n t
n=flip
a=n n f
o=($t)
x=(n>>=)
i=o.n

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


2
সাইড নোট: আপনি নির্ধারণ করতে পারেন Showজন্য দৃষ্টান্ত constএবং const idসরাসরি গির্জা Booleans মুদ্রণ করুন। এটি অনলাইন চেষ্টা করুন!
নিমি


4
কেউ কেন ব্যবহার করছে না f=n t?
খ্রিস্টান সিভর্স

3
t=pureপরিবর্তে ব্যবহার করে আপনি একটি বাইট সংরক্ষণ করতে পারেন t=const
জোসেফ সিবিল-রিইনস্টেট মনিকা

4
@ জোসেফসিবল আমি প্রথমে চেষ্টা করেছিলাম। দুর্ভাগ্যবশত, t=pureযখন আমি আবেদন করতে চেষ্টা করার সময় একটি ত্রুটি কারণ হবে a, o, x, অথবা iএটি। এটি tঠিক করার ধরণটি কেবলমাত্র ব্যবহার না করে আরও বেশি বাইট ব্যয় করে t=const
নাইট্রডন

9

পাইথন 2 , (-3?)  101  95 বাইট

ডেভিড বেজলি আপনার হৃদয় খাওয়া!

চাস ব্রাউনকে ধন্যবাদ (পুনরাবৃত্তিটিকে :যোগদানের পাঠ্যে>> <<

exec'=lambda x,y=0:'.join('F y;T x;N x(F,T);A x(y,F);O x(T,y);X x(N(y),y);I O(y,N(x))'.split())

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

আমি এটা হতে পারে মনে 95 - 3কারণ আমি ফাংশন পুনরায় ব্যবহার না A, Xঅথবা I, কিন্তু আমি একটি একক ব্যবহার =অ্যাসাইনমেন্টের জন্য (সামনে lambda)। হতে পারে আমি কোনও অপসারণ করতে পারি না; আমি এমনকি 3.5 সরাতে হবে?


@ রায়ান শ্যাফার আমি কি তিনটি অপসারণ করতে পারি বা আমার ব্যবহারের মতো ব্যবহার execকরতে পারি না? আমি যে কোন পথে যেতে দেখছি - আমি এ, এক্স, বা আমি ব্যবহার করি না তবে কোডগুলি সেগুলি ছাড়া কাজ করে না। (সম্ভবত আমি 3.5 টি অপসারণ করতে পারি ?!)
জোনাথন অ্যালান


ধন্যবাদ @ চাস! জাল দিয়ে কেটে গেছে যে কোলন :) -1 বিটিডব্লিউয়ের পরিবর্তে ভাল কাজ
জনাথন অ্যালান

7

জাভাস্ক্রিপ্ট (নোড.জেএস) , 92 86 83 - 7 = 76 বাইট

t=p=>q=>p
f=t(q=>q)
n=p=>p(f)(t)
a=p=>n(p)(f)
o=p=>p(t)
x=p=>p(n)(f())
i=p=>n(p)(t)

এটি অনলাইন চেষ্টা করুন! লিঙ্কে প্রাথমিক পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। সম্পাদনা করুন: @ 9 টিএসের জন্য 6 9 বাইট সংরক্ষণ করা হয়েছে।


1
আপনি এই দাবি করতে পারবেন না মনে হয় -7 থেকে t, f, nব্যবহার করা হয়।
tsh

1
@tsh এটিই আমি স্কোরিং সিস্টেমটি বুঝতে পারি না; এটি সংজ্ঞায় নামটি স্পষ্টভাবে বাদ দেয়, যদিও ব্যবহারে নামটির জন্য ব্যয় হয় 1 বাইট।
নিল

আপনি ফাংশন নাম আপনার কোড দ্বারা বলা হয় (জন্য বাইট ছাড় দাবি করতে পারবেন না @Neil t, fএবং nআপনার ক্ষেত্রে)।
এসাগ্যালেন্ট

2
@ এসপ্ল্যান্ট নং এটি নামটির জন্য কোনও বাইট নেই এবং পরে এটি ব্যবহার করা হয় তখন 1 বাইট। 'টি fnaox i' কোনও বাইট না পরে 1 বাইট পরে ব্যবহার করা হয়। আমি পঠনযোগ্যতার উন্নতি করতে চেয়েছিলাম তবে এখন আমি বুঝতে পেরেছিলাম যে আমার কেবল এটি পুরো গল্ফ করা উচিত ছিল এবং এখনই এটি পরিবর্তন করতে খুব দেরী হয়েছে
রায়ান স্কেফার

@ রায়ানশাইফার এই নিয়মটি কোথায়? আমি এর আগে কখনও দেখিনি।

6

পাইথন 2 , 133 - 6 = 127 94 বাইট

exec"t!u;f!v;n!u(f,t);a!u(v,f);o!u(t,v);x!u(n(v),v);i!o(v,n(u))".replace('!','=lambda u,v=0:')

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

নির্লজ্জভাবে জোনাথন অ্যালানের উত্তরের পিছনে লুক্কায়িত ধারণা চুরি করছে ; যদিও কোনও বাইট কাটা হয়নি।


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

আমি বাজি রেখেছিলাম যে উত্তরটি হ্যাঁ হলেও এটি পাইথনে যথেষ্ট দীর্ঘ হবে।
অসম্পূর্ণ স্ট্রিং

আমি সংশোধন করে দাঁড়িয়েছি
সম্পর্কিত স্ট্রিং

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

@জনাব. এক্সকোডার: আপনার পর্যবেক্ষণ অনুসারে পরিবর্তিত।
চাস ব্রাউন

4

জে , 67 বাইট - 7 = 60

t=.[
f=.]
n=.~
a=.2 :'u v]'
o=.2 :'[u v'
x=.2 :'u~v u'
i=.2 :'v u['

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

মূল্যবান:

উচ্চতর ক্রিয়াকলাপগুলি কার্যক্ষম ভাষার চেয়ে জেতে আলাদাভাবে কাজ করে। 1 বা 2 বিদ্যমান ক্রিয়াগুলি থেকে একটি নতুন ক্রিয়া তৈরি করতে, আপনার কোনও হয় একটি বিশেষণ (1 এর ক্ষেত্রে) বা সংযোগ (2 এর ক্ষেত্রে) ব্যবহার করা দরকার।

সিন্ট্যাক্টিক্যালি, ক্রিয়াপদের পরে ক্রিয়াকলাপগুলি পরে ক্রিয়াকলাপগুলি আসে এবং তাদের মধ্যে সংযোগগুলি ঘটে go সুতরাং "নয়" একটি ক্রিয়াপদ থেকে fআপনাকে যা করতে f n, এবং "এবং" ক্রিয়া fএবং gআপনি, f a g


4

ওল্ফ্রাম ভাষা (গণিত) , 61-7 = 54 বাইট

t=#&
f=#2&
a=#2~#~f&
o=t~#~#2&
n=f~#~t&
x=n@#~#2~#&
i=#2~#~t&

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

আন-গল্ফড: উইকিপিডিয়া দ্বারা অনুপ্রাণিত ,

t[x_, y_] := x
f[x_, y_] := y
and[x_, y_] := x[y, f]
or[x_, y_] := x[t, y]
not[x_] := x[f, t]
xor[x_, y_] := y[not[x], x]
imply[x_, y_] := x[y, t]

খুব নিশ্চিত যে ফাংশন সংজ্ঞা পৃথক করতে নিউলাইনগুলি প্রয়োজনীয়। এছাড়াও আপনি tf এবং n কে অন্যান্য ফাংশন সংজ্ঞায় উল্লেখ করেছেন যাতে আপনি সেগুলি বাদ দিতে পারেন না, তাই 61-4 = 57।
জোনাথন অ্যালান

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

আমি "1 বাইট পরে" পড়েছি মানে অন্য ফাংশনের মধ্যে ব্যবহারের জন্য বাইটের দাম পড়বে। এটি অন্যরা কীভাবে স্কোর করেছে তার সাথে সামঞ্জস্য হয়।
জোনাথন অ্যালান

@ জোনাথান অ্যালান আমি অনুকরণের ক্ষেত্রে কম আগ্রহী এবং কোড গল্ফিং-এ আরও বেশি 😀
রোমান

4

আন্ডারলোড , 56 52 বাইট

(~!)(!)((~)~*):((!)~^)*(:^)(~(!)~^(~)~*)(()~(~)~^~*)

এটি অনলাইন চেষ্টা করুন!(প্রোগ্রামের অংশগুলি সনাক্তকারী একটি টেস্টুয়েট এবং পাঠ্য অন্তর্ভুক্ত)

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

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

ব্যাখ্যা

সত্য

(~!)
(  )  Define function:
 ~      Swap arguments
  !     Delete new first argument (original second argument)

এটি একদম সোজা; আমরা যে যুক্তিটি চাই না এবং যে যুক্তিটি আমরা চাই তা থেকে সেখানে ফিরে আসি, ফেরতের মান হিসাবে পরিবেশন করা।

মিথ্যা

(!)
( )   Define function:
 !      Delete first argument

এটি কারও আরও সরল।

না

((~)~*)
(     )  Define function:
    ~*     Modify first argument by pre-composing it with:
 (~)         Swap arguments

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

এবং

:((!)~^)*
 (     )   Define function:
     ~^      Execute its first argument with:
  (!)          false
               {and implicitly, our second argument}
        *  Edit the newly defined function by pre-composing it with:
:            {the most recently defined function}, without destroying it

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

এখানে সংজ্ঞাটি and x y = (not x) false y। অন্য কথায়, যদি not x, তবে আমরা ফিরে আসি false; অন্যথায়, আমরা ফিরে y

অথবা

(:^)
(  )  Define function:
 :      Copy the first argument
  ^     Execute the copy, with arguments
          {implicitly, the original first argument}
          {and implicitly, our second argument}

@ নাইট্রডন মন্তব্যগুলিতে উল্লেখ করেছেন যেগুলি or x y = x x yসাধারণত তুলনায় খুব কম or x y = x true yএবং এটি আন্ডারলোডেও সঠিক হতে পারে। যে একটি নির্বিকার বাস্তবায়ন হবে(:~^)এটির , তবে আমরা এটি উল্লেখ করে একটি অতিরিক্ত বাইট গল্ফ করতে পারি যে আমরা আসল প্রথম যুক্তি বা এটির অনুলিপি চালনা করি না কেন, ফলাফল উভয়ভাবেই একই।

আন্ডারলোড আসলে স্বাভাবিক অর্থে কারিঙ সমর্থন করে না, তবে এর মতো সংজ্ঞাগুলি এটি দেখতে এটির মতো করে তোলে! (কৌশলটি হ'ল নন-সেবনকারী যুক্তিগুলি কেবল চারপাশে স্থির থাকে, তাই আপনি যে ফাংশনটি কল করছেন এটি তাদের নিজস্ব আর্গুমেন্ট হিসাবে ব্যাখ্যা করবে))

বোঝা

(~(!)~^(~)~*)
(           )  Define function:
 ~               Swap arguments
     ~^          Execute the new first (original second) argument, with argument:
  (!)              false
                   {and implicitly, our second argument}
       (~)~*     Run "not" on the result

এখানে ব্যবহৃত সংজ্ঞাটি হ'ল implies x y = not (y false x)। যদি y সত্য হয় তবে এটি সরল করে not false, অর্থাৎ true। যদি y মিথ্যা হয়, এটি এটিকে সহজতর করে not x, এভাবে আমাদের সত্যের টেবিলটি দেয়।

notএক্ষেত্রে , আমরা আবার ব্যবহার করছি , এবার কোডটি উল্লেখ করার পরিবর্তে এটি পুনরায় লিখে। এটি কেবল (~)~*চারপাশে প্রথম বন্ধনী ছাড়াই সরাসরি লেখা হয়েছে , সুতরাং এটি সংজ্ঞার পরিবর্তে বলা হয়ে থাকে।

XOR

(()~(~)~^~*)
(          )  Define function:
   ~   ~^       Execute the first argument, with arguments:
    (~)           "swap arguments"
 ()               identity function
         ~*     Precompose the second argument with {the result}

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

প্রথম আর্গুমেন্টটি সত্য হলে, আমরা দ্বিতীয় আর্গুমেন্টের একটি সম্পাদিত সংস্করণ তৈরি করি যা এটি চালানোর আগে তার যুক্তিগুলিকে অদলবদল করে, অর্থাত্ "অদলবদল যুক্তি" দিয়ে প্রাক-কম্পোজ করে not। সুতরাং একটি সত্য প্রথম যুক্তি মানে আমরা notদ্বিতীয় যুক্তি ফিরে আসি। অন্যদিকে, একটি মিথ্যা প্রথম যুক্তি মানে আমরা পরিচয় ফাংশনটি রচনা করি, অর্থাত্ কিছুই করি না। ফলাফল একটি বাস্তবায়ন হয় xor


or x y = x x yকিছু বাইট ওভার সাশ্রয় or x y = x true y
নাইট্রডন

আন্ডার লোড প্রায়শই স্ব-স্বজ্ঞাত হয় যখন এটি পুনরায় ব্যবহৃত ভেরিয়েবলগুলির সাথে আক্ষরিক পরিবর্তনের ক্ষেত্রে আসে তবে এই ক্ষেত্রে, রূপান্তরটি প্রত্যাশার চেয়ে আরও বেশি বাইট সংরক্ষণ করার পরিবর্তে কম হয়। উন্নতির জন্য ধন্যবাদ!
ais523 21


3

জাভা 8, স্কোর: 360 358 319 271 233 (240-7) বাইট

interface J<O>{O f(O x,O y,J...j);}J t=(x,y,j)->x;J f=(x,y,j)->y;J n=(x,y,j)->j[0].f(y,x);J a=(x,y,j)->j[0].f(j[1].f(x,y),y);J o=(x,y,j)->j[0].f(x,j[1].f(x,y));J x=(x,y,j)->j[0].f(j[1].f(y,x),j[1].f(x,y));J i=(x,y,j)->j[0].f(j[1].f(x,y),x);

এই .. বিশেষ করে সম্পন্ন করার জন্য চেয়ে আমি ভেবেছিলাম আমি যখন এটা শুরু, trickier ছিল implies। যাইহোক, এটি কাজ করে .. সম্ভবত কিছুটা এখানে এবং সেখানে গল্ফ করা যেতে পারে। সম্পাদনা: ঠিক আছে, ফাংশনগুলি পুনরায় ব্যবহার না করে জাভাটির জন্য বাইট-কাউন্টের ক্ষেত্রে একই পদ্ধতির সদৃশ করা অনেক সস্তা And এবং আমি কোনও ফাংশনও ব্যবহার না করার জন্য পূর্ণ -7 বোনাস পেয়েছি।

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

ব্যাখ্যা:

// Create an interface J to create lambdas with 2 Object and 0 or more amount of optional
// (varargs) J lambda-interfaces, which returns an Object:
interface J<O>{O f(O x,O y,J...j);}

// True: with parameters `x` and `y`, always return `x`
J t=(x,y,j)->x;
// False: with parameters `x` and `y`, always return `y`
J f=(x,y,j)->y;

// Not: with parameters `x`, `y`, and `j` (either `t` or `f`), return: j(y, x)
J n=(x,y,j)->j[0].f(y,x);

// And: with parameters `x`, `y`, and two times `j` (either `t` or `f`), return:
//      j1(j2(x,y), y);
J a=(x,y,j)->j[0].f(j[1].f(x,y),y);

// Or: with parameters `x`, `y`, and two times `j` (either `t` or `f`), return:
//     j1(x, j2(x,y))
J o=(x,y,j)->j[0].f(x,j[1].f(x,y));

// Xor: with parameters `x`, `y`, and two times `j` (either `t` or `f`), return:
//      j1(j2(y,x), j2(x,y))
J x=(x,y,j)->j[0].f(j[1].f(y,x),j[1].f(x,y));

// Implies: with parameters `x`, `y`, and two times `j` (either `t` or `f`), return:
//          j1(j2(x,y), x)
J i=(x,y,j)->j[0].f(j[1].f(x,y),x);

2

সি ++ 17, 207−49 = 158 195 - 58 = 137 বাইট

লাইন ব্রেকগুলি অপ্রয়োজনীয় (প্রথম দুটি ব্যতীত)।

#define A auto
#define D(v,p)A v=[](A x,A y){return p;};
D(true_,x)
D(false_,y)
A not_=[](A f){return f(false_,true_);};
D(and_,x(y,false_))
D(or_,x(true_,y))
D(xor_,x(not_(y),y))
D(implies,x(y,true_))

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

ইউনিট পরীক্ষিত যেমন জোর দিয়ে:

static_assert('L' == true_('L', 'R'));
static_assert('R' == not_(true_)('L', 'R'));
static_assert('L' == and_(true_, true_)('L', 'R'));
static_assert('L' == or_(true_, true_)('L', 'R'));
static_assert('R' == xor_(true_, true_)('L', 'R'));
static_assert('L' == implies(true_, true_)('L', 'R'));

আপডেট: পূর্বে আমি ছিল

A not_=[](A f){return[f](A x,A y){return f(y,x);};};

তবে রোমানের উত্তর সংক্ষিপ্ত সংস্করণের দিকে ইঙ্গিত করেছিল। লক্ষ্য করুন যে এখন not_(std::plus<>)দুর্গঠিত, যেখানে আগে এটি সমান ছিল std::plus<>; তবে যেহেতু std::plus<>"একটি চার্চ বুলিয়ান প্রতিনিধিত্ব করে না", আমি মনে করি নিয়ম অনুসারে হয় আচরণ ঠিক আছে।


"প্রথমটি ব্যতীত অন্য" কে "প্রথম দুটি ব্যতীত" আপডেট করা উচিত নয়?
এলএফ

@ এলএফ: একেবারে সঠিক। আপডেট করা হয়েছে। :)
কুক্সপ্লসোন

2

ফোর্থ (গফোর) , 133 বাইট - 7 = 126 122

: j execute ;
: t drop ;
: f nip ;
: n ['] f ['] t rot j ;
: a dup j ;
: o over j ;
: x 2dup a n -rot o a ;
: m over n -rot a o ;

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

-4 বাইটস কুইক্সপ্লসোনকে ধন্যবাদ

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

কোড ব্যাখ্যা

\ Helper function to save some bytes
: j        \ define a new word
  execute  \ execute the word at the provided address
;          \ end word definition

\ True
: t        \ define a new word
  drop     \ drop the second argument
;          \ end the word

\ False
: f        \ define a new word
  nip      \ drop the first argument
;          \ end the word

\ Not - The "hardest" one because we have to reference true and false directly
: n        \ define a new word
  ['] f    \ get address of false
  ['] t    \ get the address of true
  rot      \ stick the input boolean back on the top of the stack
  j        \ call the input boolean, which will select the boolean to return
;          \ end the word

\ And 
: a        \ define a new word
  dup      \ duplicate the 2nd input value
  j        \ call the 2nd input on the first and second input
;          \ end the word

\ Or
: o        \ define a new word
  over     \ duplicate the 1st input value
  j        \ call the 1st input on the first and second input
;          \ end the word

\ Xor
: x        \ define a new word
  2dup     \ duplicate both of the inputs
  a n      \ call and, then not the result (nand)
  -rot     \ move the result behind the copied inputs
  o a      \ call or on the original inputs, then call and on the two results
;          \ end the word

\ Implies
: m        \ define a new word
  over     \ duplicate the 1st input value
  n        \ call not on the 1st input value
  -rot     \ move results below inputs
  a o      \ call and on the two inputs, then call or on the two results
;          \ end the word

1
আপনি দীর্ঘ শব্দটি executeতিনবার পুনরাবৃত্তি করেন । শর্টহ্যান্ড সংজ্ঞায়িত করা : j execute ;আপনাকে 4 বাইট সাশ্রয় করবে।
কুইকপ্লসোন

1

এসকেআই-ক্যালকুলাস + সি কম্বিনেটর, 36 বাইট

true=K
false=SK
not=C
and=CC(SK)
or=CIK
xor=C(CIC)I
implies=CCK

আমি আসলে এমন কোনও দোভাষীর কথা জানি না যা আপনাকে আগের সংস্থাগুলির পরিপ্রেক্ষিতে অতিরিক্ত সংযোজনকারী সংজ্ঞায়িত করতে দেয়, তাই পছন্দসই সংযুক্তকারীগুলি যেমন আউটপুটগুলিতে আটকানো দিয়ে, http://ski.aditsu.net/ ব্যবহার করে এটি পরীক্ষা করে দেখতে হয়েছিল that বোঝায় না ।CCKK(SK)pqqKSK


1

জুলিয়া 1.0 , 36 বাইট

(b::Bool)(x,y)=b ? x : y;i(x,y)=!x|y

আমি জানি না যে এটি গণনা করা হয়েছে, আমি প্রকৃতপক্ষে কল করার জন্য দেশীয় Boolপ্রকারটি মাত্রাতিরিক্ত চাপছি, তাই আমি বেশিরভাগ যুক্তি গেটগুলি বিনা মূল্যে পাই। দুর্ভাগ্যক্রমে, জুলিয়ার একটি impliesগেট নেই, তাই আমাকে নিজের ফাংশনটি লিখতে হয়েছিল।

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


আমার মনে হয় আপনার এখনও অতিরিক্ত লোড অপারেটরদের আপনার জমা দেওয়ার অন্তর্ভুক্ত করা দরকার ... তবে স্কোরিং এগুলি গণনা করে না, কারণ তারা কেবল নাম? সুতরাং এটি নতুন লাইনের থেকে 6 বাইট হবে ? স্কোরিং এই চ্যালেঞ্জের সাথে কীভাবে কাজ করে আমি খুব বেশি নিশ্চিত নই
জো কিং

এটি কীভাবে কাজ করে আমি 100% নিশ্চিত নই, তবে কোডটি অন্তর্ভুক্ত করে যা আক্ষরিক অর্থে কিছুই করে না তা আমার কাছে কোনও ধারণা রাখে না।
ব্যবহারকারী 3263164

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


1

সি ++ 17, 202−49 = 153 193 - 58 = 135 বাইট

যাইহোক যাইহোক 2-অ্যারি ফাংশন হিসাবে কী গণনা করা হয়েছে তার মন্তব্য-আলোচনায় অনুপ্রাণিত হয়ে, এখানে একটি তরকারী আমার আগের সি ++ 17 সমাধানের সংস্করণ। এটি প্রকৃতপক্ষে সংক্ষিপ্ত কারণ আমরা সংজ্ঞা দিতে একই ম্যাক্রো ব্যবহার করতে পারিnot_ অন্য সমস্ত কার্যকারিতা সংজ্ঞায়িত করতে পারি!

#define D(v,p)auto v=[](auto x){return[=](auto y){return p;};};
D(true_,x)
D(false_,y)
D(not_,x(false_)(true_)(y))
D(and_,x(y)(false_))
D(or_,x(true_)(y))
D(xor_,x(not_(y))(y))
D(implies,x(y)(true_))

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

এটির মতো পরীক্ষার জন্য পরীক্ষিত হয়

static_assert('R' == and_(true_)(false_)('L')('R'));
static_assert('L' == or_(true_)(false_)('L')('R'));

লক্ষ্য করুন or_ কার্যকরভাবে হিসাবে সংজ্ঞায়িত করা হয়

auto or_=[](auto x){return[=](auto y){return x(true_)(y);};};

আমরা সংজ্ঞা দিতে পারি or_ আরও "সংক্ষেপে" হিসাবে

auto or_=[](auto x){return x(true_);};

তবে এতে আমাদের ব্যয় করতে হবে কারণ আমরা Dআর ম্যাক্রো ব্যবহার করতে পারব না।


যেহেতু সি ++ কেস-সংবেদনশীল তাই ব্যবহার Trueএবং Falseতার পরিবর্তে true_এবং false_কীভাবে? এবং অন্যান্য অপারেটরদের জন্য একই। এটি 12 বাইট সংরক্ষণ করবে
জি স্লাইপেন

@ জি.স্লাইপেন: ওপি-র স্কোরিং অ্যালগরিদম ইতিমধ্যে বিবেচনায় নিয়েছে যে সনাক্তকারীরা কার্যকরভাবে একটি চরিত্র দীর্ঘ। উদ্ধৃতি: "আপনার ভাষাতে চার্চকে সত্য ও মিথ্যা করার জন্য প্রয়োজনীয় সমস্ত কোডের মোট দৈর্ঘ্য এবং ফাংশনটির নাম বাদ দিয়ে চার্চ গেটগুলি বোঝায় ( 13 বাইট হবে) আপনি এই নামগুলি পরে আপনার কোডটিতে পুনরায় ব্যবহার করতে পারেন তাদের সাথে এই গেটের বাইট মোটের দিকে 1 বাইট গণনা করা যেতে পারে ""
কুইকপ্লসোন

আহ, আমি এটা মিস করেছি।
জি স্লাইপেন

0

এপিএল (ডিজাইমা / এপিএল) , 47 বাইট এসবিসিএস

জোনার জে সমাধানের উপর ভিত্তি করে ।

trueএবং falseইনফিক্স ফাংশন, notএকটি প্রত্যয় অপারেটর এবং বাকীগুলি ইনফিক্স অপারেটর।

true←⊣
false←⊢
and←{⍺(⍶⍹false)⍵}
not←⍨
or←{⍺(true⍶⍹)⍵}
xor←{⍺(⍶not⍹⍶)⍵}
implies←{⍺(⍹⍶true)⍵}

ওপি হিসাবে, এটি প্রতিটি লাইনের শেষ থেকে অন্তর্ভুক্ত সবকিছুকে গণনা করে এবং প্রতিটি কলকে একক বাইট হিসাবে পূর্বের সংজ্ঞা হিসাবে গণনা করে।

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

সত্য এবং মিথ্যা হল বাম এবং ডান পরিচয় ফাংশন।

not কেবল এটির অপারেন্ড ফাংশনটির আর্গুমেন্টগুলি অদলবদল করে।

বাকিরা সিদ্ধান্ত গাছ কার্যকর করে:

andডানহ্যান্ড ফাংশনটি ব্যবহার করে ডানহাতে ফাংশনটির ফলাফলটি সত্য হিসাবে নির্বাচন করতে ব্যবহৃত হয় , অন্যথায় falseফাংশনের ফলাফল ।

orযদি সত্য হয় trueতা নির্বাচন করতে বাম হাতের ফাংশন ব্যবহার করে , অন্যথায় ডানহ্যান্ড ফাংশনের ফলাফল

xorডানহ্যান্ড ফাংশনটি ব্যবহার করে বামহস্ত ফাংশনের অবহেলিত ফলাফলটি ⍶notযদি সত্য হয় অন্যথায় বামহস্ত ফাংশনের ফলাফল নির্বাচন করতে select

impliesডানহ্যান্ড ফাংশনের ফলাফল যদি সত্য হয় অন্যথায় ফাংশনের ফলাফল বাছাই করতে বাম হাতের ফাংশন trueব্যবহার করে।


0

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

¿S£↓♣└²≡é♫Jíg░EèΩRΦ♂°┤rà╝¶πï╡^O|Θà

এটি চালান এবং এটি স্ট্যাক্সএল.এক্সজে ডিবাগ করুন!

স্ট্যাকের একগুচ্ছ ব্লক পুশ করে। প্রতিটি ব্লক স্ট্যাকের উপরে তার শেষ যুক্তিটি প্রত্যাশা করে, তারপরে বাকীগুলি দ্বারা বিপরীত ক্রম অনুসরণ করে।

প্যাকযুক্ত (41 বাইট):

{sd}Y{d}{y{d}a!}X{ya!}{b!}{cx!sa!}{sx!b!}

প্রতিটি জোড়া { }ব্লক হয়। আমি এক্স এবং ওয়াই দুটি রেজিস্টর ধরে রাখতে ব্যবহার করেছি trueএবং notপরে আমি সহজেই তাদের অ্যাক্সেস করতে পারি। দুর্ভাগ্যক্রমে, falseকেবল কোনও অনিঃপত্তি হতে পারে না, কারণ এটি স্ট্যাকটি বিশৃঙ্খল হয়ে যায় এবং একক এক্সওআর কেস কেটে যায়।

টেস্ট স্যুট, মন্তব্য

false
{sd}    stack:   x y
 s      swap:    y x
  d     discard: y

true
{d}    stack:   x y
 d     discard: x

not
{y{d}a!}    stack:  p
 y{d}       push:   p f t
     a      rotate: f t p
      !     apply:  p(f,t)

and
{ya!}    stack:  p q
 y       push:   p q f
  a      rotate: q f p
   !     apply:  p(q,f)

or
{b!}    stack:  p q
 b      copies: p q p q
  !     apply:  p q(q,p)

xor
{cx!sa!}    stack:  p q
 c          copy:   p q q
  x!        not:    p q nq
    s       swap:   p nq q
     a      rotate: nq q p
      !     apply:  p(nq,q)

implies
{sx!b!}    stack:  p q
 s         swap:   q p
  x!       not:    q np
    b      copies: q np q np
     !     apply:  q np(np,q)

0

বেফুঞ্জ -98 , 105 77 65 বাইট

ফাংশন ছাড়াই ভাষায় "ফাংশন" ধারণার সাথে আরও বাজানো ... এখানে চার্চ বুলিয়ানগুলির একটি বেফঞ্জ -98 সংস্করণ রয়েছে!

বেফুঞ্জ -৯৮ এর এই সীমাবদ্ধ উপভাষায় একটি প্রোগ্রাম "লাইন" বা "ফাংশন" এর একটি ধারাবাহিক সমন্বয়ে গঠিত যার প্রতিটিটি >কলাম x = 0-এ একটি (ডানদিকে যান) নির্দেশিকা দিয়ে শুরু হয় । প্রতিটি "ফাংশন" তার লাইন নম্বর (y- স্থানাঙ্ক) দিয়ে সনাক্ত করা যায়। ফাংশনগুলি বেফুঞ্জের স্ট্যাকের মাধ্যমে ইনপুট নিতে পারে যথারীতি ।

লাইন 0 বিশেষ, কারণ (0,0) হ'ল প্রারম্ভিক আইপি। লাইন এলকে কার্যকর করে এমন একটি প্রোগ্রাম তৈরি করতে, কেবল 0 লাইনে নির্দেশিকা রাখুন, যখন কার্যকর করা হয়, তখন নির্দেশ পয়েন্টারটি (x = L, y = 0) এ উড়ে দিন।

ম্যাজিকটি লাইন 1 এ ঘটে Line লাইন 1, যখন মৃত্যুদন্ড কার্যকর করা Lহয় তখন স্ট্যাক থেকে একটি নম্বর পপ করে এবং লাইন সংখ্যায় লাফ দেয় L। (এই লাইনটি আগে ছিল > >>0{{2u2}2}$-073*-\x, যা কোনও লাইনে "নিখুঁত লাফিয়ে" যেতে পারে; তবে আমি কেবল বুঝতে পেরেছি যেহেতু আমি জানি যে এই লাইনটি 1 লাইনটিতে আটকানো হয়েছে, তাই আমরা "আপেক্ষিক জাম্প" করতে পারিL-1 অনেক কম কোডের এক হ্যাকে লাইন ।)

লাইন 2 চার্চ প্রতিনিধিত্ব করে FALSE। মৃত্যুদন্ড কার্যকর করা হলে, এটি দুটি সংখ্যা tএবং fস্ট্যাক থেকে পপ করে এবং তারপরে লাইন সংখ্যায় উড়ে যায় f

লাইন 3 চার্চ প্রতিনিধিত্ব করে TRUE । মৃত্যুদন্ড কার্যকর করা হলে, এটি দুটি সংখ্যা tএবং fস্ট্যাক থেকে পপ করে এবং তারপরে লাইন সংখ্যায় উড়ে যায় t

চার্চের প্রতিনিধিত্বকারী লাইন innov XOR, উদ্ভাবনী। মৃত্যুদন্ড কার্যকর করা হলে, এটি দুটি সংখ্যা aএবং bস্ট্যাক থেকে পপ করে এবং তারপরে aস্ট্যাক ইনপুট দিয়ে লাইনে চলে যায় NOT EXEC b। সুতরাং, যদি aচার্চের প্রতিনিধিত্ব করে TRUEতবে ফলাফলটি a NOT EXEC bহবে NOT b; এবং যদিa চার্চ প্রতিনিধিত্ব করে FALSE, ফলাফল a NOT EXEC bহবে EXEC b


এখানে পরীক্ষার জোতা সহ অদম্য সংস্করণ। 0 লাইনে, আপনার ইনপুট দিয়ে স্ট্যাক সেট আপ করুন। উদাহরণস্বরূপ, 338মানেIMPLIES TRUE TRUE । নিশ্চিত করুন যে xবন্ধটি ঠিক (x, y) = (0,15) এ উপস্থিত হয়েছে বা অন্য কোনও কিছুই কার্যকর হবে না! এছাড়াও নিশ্চিত করুন যে আপনার স্ট্যাক সেটআপটি শুরু হচ্ছে ba, যাতে প্রোগ্রামটি কিছু আউটপুট দিয়ে আসলে শেষ হয়ে যায়।

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

>  ba 334  0f-1x
> >>1-0a-\x             Line 1: EXEC(x)(...) = goto x
> $^< <            <    Line 2: FALSE(t)(f)(...) = EXEC(f)(...)
> \$^                   Line 3: TRUE(t)(f)(...) = EXEC(t)(...)
> 3\^                   Line 4: OR(x)(y)(...) = EXEC(x)(TRUE)(y)(...)
> 3\2\^                 Line 5: NOT(x)(...) = EXEC(x)(FALSE)(TRUE)(...)
> 1\5\^                 Line 6: XOR(x)(y)(...) = EXEC(x)(NOT)(EXEC)(...)
> 2>24{\1u\1u\03-u}^    Line 7: AND(x)(y)(...) = EXEC(x)(y)(FALSE)(...)
> 3^                    Line 8: IMPLIES(x)(y)(...) = EXEC(x)(y)(TRUE)(...)

> "EURT",,,,@
> "ESLAF",,,,,@

যার সংস্করণটি আমি বাইট করেছি তা এখানে।

>>>1-0a-\x
>$^<< }u-30\<
>\$^
>3\^\
>3\2^
>1\5^
>2>24{\1u\1u^
>3^

লক্ষ্য করুন যে এই উপভাষায় কোনও ফাংশন সংজ্ঞায়িত করার জন্য আপনি এর নামটি মোটেও উল্লেখ করবেন না; এর "নাম" এর উত্সের অবস্থান দ্বারা নির্ধারিত হয়। একটি ফাংশন কল করতে, আপনি এর "নাম" উল্লেখ করবেন না; উদাহরণস্বরূপ, XOR( 6) এর শর্তাবলী সংজ্ঞায়িত করা হয় NOTএবংEXEC ( 5এবং 1) এর ক্ষেত্রে। তবে আমার সমস্ত "ফাংশন নেম" প্রতিনিধিত্ব করতে ইতিমধ্যে কেবল একটি বাইট নেয়। সুতরাং এই সমাধানটি কোনও স্কোরিং সমন্বয় পায় না।

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