সত্য টেবিল: আপনার দাদুর কম্পিউটার


13

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


সমস্যা

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

ইনপুট

ইনপুটটি একটি স্ট্রিং হবে (যেমন ডেটা স্ট্রাকচার) যুক্তিতে সত্যের টেবিলটি তৈরি করতে যুক্তি বিবৃতি থাকবে। উদাহরণ স্বরূপ:

p ∧ q

এর অর্থ p and q(লজিকাল কনজাকশন) এবং আউটপুট আসবে:

 p  q  p ∧ q
 T  T    T
 T  F    F
 F  T    F
 F  F    F            

ব্যবধানটি লক্ষ্য করুন: কলামের আইটেমটি শিরোলেখের কেন্দ্রে রয়েছে

চরিত্র

অক্ষরগুলির মাধ্যমে স্কোর করুন, বাইট নয় লজিকের তুলনা অক্ষরগুলি বিশেষ এবং সর্বদা তারা দেখতে কেমন তা নয়। এই অক্ষরগুলি ব্যবহার করুন:

লজিকাল সংমিশ্রণ (এবং): ইউ + 2227

লজিকাল বিভাজন (ওআর): ইউ + 2228

লজিক্যাল নেগেশন (নয়) ~বা ¬ইউ + 7 ই এবং ইউ + এসি যথাক্রমে


বোনাসেস

এই সমস্ত বোনাস alচ্ছিক, তবে আপনার স্কোর পয়েন্ট ছুঁড়ে ফেলবে। যে কোনও চয়ন করুন।

যৌক্তিক নেগ্রেশন

লজিক্যাল নেগ্রেশন সত্য টেবিলে একটি অযাচিত অপারেটর। এটি !বেশিরভাগ সি-ভিত্তিক ভাষার সমতুল্য । এটি false=> trueএবং vise বিপরীত করে তোলে । এটি একটি ¬ বা ~ (আপনার উভয়কে সমর্থন করতে হবে) দিয়ে চিহ্নিত হয়। এটি সমর্থন করা আপনার স্কোরের 10% ছুঁড়ে ফেলবে। তবে আপনাকে অবশ্যই এর ফলাফলগুলি দেখানোর জন্য একটি অতিরিক্ত কলাম যুক্ত করতে হবে: উদাহরণস্বরূপ:

~p ∧ q

আউটপুট হবে:

p  ~p  q  ~p ∧ q
T  F   T     F
T  F   F     F
F  T   T     T
F  T   F     F

বেশ মুদ্রণ

সাধারণ টেবিল সংকেত বিরক্তিকর। এর সুন্দর করা যাক! সুন্দর মুদ্রণের ফর্ম্যাটটি p ∧ qনিম্নরূপ:

+---+---+-------+
| p | q | p ∧ q |
+---+---+-------+
| T | T |   T   |
+---+---+-------+
| T | F |   F   |
+---+---+-------+
| F | T |   F   |
+---+---+-------+
| F | F |   F   |
+---+---+-------+

সুন্দর মুদ্রণের জন্য বিশেষ বিবরণ:

  • প্রতিটি ঘরে একটি করে 1 স্পেস প্যাডিং রয়েছে
  • ঘরের মানগুলি এখনও কেন্দ্রিক

আপনি যদি খুব সুন্দরভাবে আপনার টেবিলগুলি আপনার কোড থেকে মুদ্রণ করেন এবং তারপরে 0.6 দিয়ে গুণ করুন। এই বোনাসের জন্য এই ফাংশনটি ব্যবহার করুন:

score = 0.6 * code

উদাহরণ

p ∧ q:

p  q  p ∧ q
T  T    T
T  F    F
F  T    F
F  F    F

p ∨ q:

p  q  p ∨ q
T  T    T
T  F    T
F  T    T
F  F    F

~p ∧ q:

p  ~p  q  ~p ∧ q
T   F  T     F
T   F  F     F
F   T  T     T
F   T  F     F

~p ∨ q:

p  ~p  q  ~p ∧ q
T   F  T     T
T   F  F     F
F   T  T     T
F   T  F     T

বিধি

  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য
  • বাহ্যিক সংস্থান নেই
  • আপনি যদি নিয়মগুলি ভঙ্গ করতে চলেছেন তবে চালাক হন;)

সংক্ষিপ্ততম কোড (অক্ষরগুলিতে) জিতেছে। শুভকামনা!


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

2
যেহেতু এটি অ-এসসিআইআই অক্ষর ব্যবহার করে, কোডের দৈর্ঘ্যটি অক্ষর বা বাইটে গণনা করা হয় কিনা তা নির্দিষ্ট করে বলা ভাল। যদি এটি বাইট হয় তবে ইউনিকোডের অক্ষরগুলি কয়টি বাইট ব্যবহার করে তা জানতে সহায়ক হবে।
রেটো কোরাডি

সহজতর করা :). score = 0.6 * (code - 15)=.6 * code - 9
mınxomaτ

পুনঃটুইট করেছেন অক্ষর দ্বারা স্কোর, বাইট নয়
মেয়রমন্টি

@ রিটোকোরাডি আমার জ্যামিতির শিক্ষক আমাকে যা বলেছেন তা যদি সঠিক হয় তবে আপনি আর কখনও p qএবং rসত্যের টেবিলে দেখতে পারবেন না ;)
মেয়রমন্তি

উত্তর:


6

জাভাস্ক্রিপ্ট (ES6), 141

সাধারণ ফাংশন, কোনও বোনাস নেই, 141 অক্ষর। (140 uft8, 1 ইউনিকোড প্রশস্ত)

কমপ্লেক্স ফাংশন হ্যান্ডলিং ~ বা ¬, 254 অক্ষর (253 ইউএফ, 1 ইউনিকোড প্রশস্ত), স্কোর 229

এর alertপরিবর্তে 6 বাইট ব্যবহার করে সংরক্ষণ করতে পারা যায় console.logতবে alertবিশেষত টেবিলগুলি প্রদর্শন করা অনুপযুক্ত।

নীচে স্নিপেটটি একটি ইকামাস্ক্রিপ্ট comp অনুবর্তী ব্রাউজারে চালিত পরীক্ষা করুন (ফায়ারফক্সের সাথে পরীক্ষা করা হয়েছে Chrome ক্রোম সমর্থন করে না বলে ক্রোমে কাজ করবে না ...Also এছাড়াও, বোনাস সংস্করণটি splitফায়ারফক্স নির্দিষ্ট করে এর এক্সটেনশন ব্যবহার করে )।

/* TEST: redirect console.log into the snippet body */ console.log=x=>O.innerHTML+=x+'\n'

// Simple
F=s=>{[a,o,b]=[...s],z='  ',r=a+z+b+z+a+` ${o} ${b}
`;for(w='FT',n=4;n--;r+=w[c]+z+w[e]+z+z+w[o<'∧'?c|e:c&e]+`
`)c=n&1,e=n>>1;console.log(r)}

// Simple, more readable
f=s=>{
   [a,o,b]=[...s]
   r=a+'  '+b+'  '+a+` ${o} ${b}\n`
   for(w='FT',n=4; n--; )
   {
     c = n&1, e = n>>1, x=o<'∧' ? c|e : c&e
     r += w[c]+'  '+w[e]+'    '+w[x]+'\n'
   }
   console.log(r)
}

// 10% Bonus
B=s=>{[a,o,b]=s.split(/([∧∨])/),t=a>'z',u=b>'z',z='  ',r=(t?a[1]+z:'')+a+z+(u?b[1]+z:'')+b+z+a+` ${o} ${b}
`;for(s=v=>'FT'[v]+z,n=4;n--;r+=s(c)+(t?s(d)+' ':'')+s(e)+(u?s(f)+' ':'')+(t?'   ':z)+s(o<'∧'?d|f:d&f)+`
`)c=n&1,d=c^t,e=n>>1,f=e^u;console.log(r)}

Test1 = ['q∨p','q∧p']
Test2 = Test1.concat([
  '~q∨p','q∨~p','~q∨~p','~q∧p','q∧~p','~q∧~p',
  '¬q∨p','q∨¬p','¬q∨¬p','¬q∧p','q∧¬p','¬q∧¬p'
])


console.log('SIMPLE')
Test1.forEach(t=>F(t));

console.log('BONUS')
Test2.forEach(t=>B(t));
<pre id=O></pre>


1
+1, আমি জাভাস্ক্রিপ্ট পছন্দ করি এবং এই সমাধানটি উত্তোলনের দাবিদার।
অর্জুন

জাভাস্ক্রিপ্ট আমার মাতৃভাষা, তবে আমি এটি আমার প্রভাবিত হতে দেব না! : ডি গুড জব!
মেয়রমন্টি

6

মিডিয়াউইকি টেমপ্লেট - 2347 টি অক্ষর

মিডিয়াউইকের একটি বিল্ট টেম্পলেট ফাংশন রয়েছে যা {{#expr}}লজিক্যাল এক্সপ্রেশনগুলি পরিচালনা করতে পারে। মিডিয়াউইকি টেমপ্লেটগুলির জন্য এটি অবশ্যই সঠিক চ্যালেঞ্জ! ভেরিয়েবল, লুপ এবং একটি পঠনযোগ্য সিনট্যাক্সের মতো বৈশিষ্ট্যগুলি যদিও কিছুটা সাহায্য করতে পারে। এছাড়াও, Expr ফাংশনটির জন্য কোনও অপারেটর নেই বলে এটিকে কিছুটা জটিল করে তুলেছে।

{{#sub:{{#replace:{{#replace:{{{1}}}|~|}}|¬|}}|0|1}} {{#sub:{{{1}}}|{{#expr:{{#len:{{{1}}}}}-1}}|{{#len:{{{1}}}}}}} {{{1}}}<br>T T &nbsp;{{#if:{{#pos:{{#sub:{{#replace:{{{1}}}|~|¬}}|0|1}}|¬}}|&nbsp;|}} {{#replace:{{#replace:{{#expr:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{{1}}}|~|¬}}|{{#sub:{{#replace:{{#replace:{{{1}}}|~|}}|¬|}}|0|1}}|{{#if:{{#pos:{{#replace:{{{1}}}|~|¬}}|¬{{#sub:{{#replace:{{#replace:{{{1}}}|~|}}|¬|}}|0|1}}}}|0|1}}}}|{{#sub:{{{1}}}|{{#expr:{{#len:{{{1}}}}}-1}}|{{#len:{{{1}}}}}}}|{{#if:{{#pos:{{#replace:{{{1}}}|~|¬}}|¬{{#sub:{{{1}}}|{{#expr:{{#len:{{{1}}}}}-1}}|{{#len:{{{1}}}}}}}}}|0|1}}|0|1}}|¬|}}|∧|and}}|∨|or}}}}|1|T}}|0|F}}<br>T F &nbsp;{{#if:{{#pos:{{#sub:{{#replace:{{{1}}}|~|¬}}|0|1}}|¬}}|&nbsp;|}} {{#replace:{{#replace:{{#expr:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{{1}}}|~|¬}}|{{#sub:{{#replace:{{#replace:{{{1}}}|~|}}|¬|}}|0|1}}|{{#if:{{#pos:{{#replace:{{{1}}}|~|¬}}|¬{{#sub:{{#replace:{{#replace:{{{1}}}|~|}}|¬|}}|0|1}}}}|0|1}}}}|{{#sub:{{{1}}}|{{#expr:{{#len:{{{1}}}}}-1}}|{{#len:{{{1}}}}}}}|{{#if:{{#pos:{{#replace:{{{1}}}|~|¬}}|¬{{#sub:{{{1}}}|{{#expr:{{#len:{{{1}}}}}-1}}|{{#len:{{{1}}}}}}}}}|1|0}}|1|0}}|¬|}}|∧|and}}|∨|or}}}}|1|T}}|0|F}}<br>F T &nbsp;{{#if:{{#pos:{{#sub:{{#replace:{{{1}}}|~|¬}}|0|1}}|¬}}|&nbsp;|}} {{#replace:{{#replace:{{#expr:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{{1}}}|~|¬}}|{{#sub:{{#replace:{{#replace:{{{1}}}|~|}}|¬|}}|0|1}}|{{#if:{{#pos:{{#replace:{{{1}}}|~|¬}}|¬{{#sub:{{#replace:{{#replace:{{{1}}}|~|}}|¬|}}|0|1}}}}|1|0}}}}|{{#sub:{{{1}}}|{{#expr:{{#len:{{{1}}}}}-1}}|{{#len:{{{1}}}}}}}|{{#if:{{#pos:{{#replace:{{{1}}}|~|¬}}|¬{{#sub:{{{1}}}|{{#expr:{{#len:{{{1}}}}}-1}}|{{#len:{{{1}}}}}}}}}|0|1}}|0|1}}|¬|}}|∧|and}}|∨|or}}}}|1|T}}|0|F}}<br>F F &nbsp;{{#if:{{#pos:{{#sub:{{#replace:{{{1}}}|~|¬}}|0|1}}|¬}}|&nbsp;|}} {{#replace:{{#replace:{{#expr:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{{1}}}|~|¬}}|{{#sub:{{#replace:{{#replace:{{{1}}}|~|}}|¬|}}|0|1}}|{{#if:{{#pos:{{#replace:{{{1}}}|~|¬}}|¬{{#sub:{{#replace:{{#replace:{{{1}}}|~|}}|¬|}}|0|1}}}}|1|0}}}}|{{#sub:{{{1}}}|{{#expr:{{#len:{{{1}}}}}-1}}|{{#len:{{{1}}}}}}}|{{#if:{{#pos:{{#replace:{{{1}}}|~|¬}}|¬{{#sub:{{{1}}}|{{#expr:{{#len:{{{1}}}}}-1}}|{{#len:{{{1}}}}}}}}}|1|0}}|1|0}}|¬|}}|∧|and}}|∨|or}}}}|1|T}}|0|F}}

টেস্ট:

{{TemplateName|¬X ∧ ~Y}}

{{TemplateName|p ∨ q}}

ফলাফল:

X Y ¬X ∧ ~Y
T T    F
T F    F
F T    F
F F    T

p q p ∨ q
T T   T
T F   T
F T   T
F F   F

আমি মিডিয়াউইকি> = 1.18 ধরে নিচ্ছি, যেখানে পার্সারফিউশনগুলি এক্সটেনশানগুলি সফ্টওয়্যারটির সাথে একত্রিত হয়েছে।


2
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম। মিডিয়াউইকি ব্যবহার করা এমন কিছু নয় যা আমি ভেবে দেখতাম; +1 টি। তবে ¬/ ~অপারেটরের অতিরিক্ত কলামের আচরণ অনুপস্থিত; আপনি যদি এটি যুক্ত করেন তবে আপনি 10%বোনাসের জন্য যোগ্যতা অর্জন করবেন ।
wizzwizz4

আমি কেবল বুঝতে পেরেছি, যদি না আমি নেস্টেড টেম্পলেটগুলি ব্যবহার করতে পারি (তবে এটি নিয়মগুলি কিছুটা প্রসারিত হতে পারে?), সঠিকভাবে সেই কলামটি যুক্ত করে চরিত্রের সংখ্যা বাড়িয়ে তুলবে ... :)
লিও

কোন ক্ষেত্রে, আপনার সম্ভবত প্রত্যাখ্যান সমর্থন সরিয়ে নেওয়া উচিত, কারণ আপনি এটির জন্য কোনও বোনাস পাচ্ছেন না।
wizzwizz4

হ্যাঁ, এটি খতিয়ে দেখা হবে। আমি মনে করি না যদিও এটি চূড়ান্ত র‌্যাঙ্কিংয়ে খুব বেশি প্রভাব ফেলবে ...: ডি
লিও

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

4

পাইথন - ২৮৮ টি অক্ষর (+১০ জরিমানার কারণ আমি কাজ করতে ইউনিকোড পেতে পারি না: সি)

কোনও বোনাস নেই। এটি আমার প্রথম কোডগল্ফ উত্তর।

def f(i):
    i=i.split(" ")
    print i[0],i[2],
    for f in i[0:3]: print f,
    print ""
    for t in["TT","TF","FT","FF"]:
        p,q=t[0],t[1]
        y = t[0]+" "+t[1]
        if i[1]=="^": r=(False,True)[p==q]
        if i[1]=="v": r=(False,True)[p!=q]
        if r: y+="   T"
        else: y+="   F"
        print y

i ইনপুট হয়।

সম্পাদনা: কয়েকটি স্পেস সরানো হয়েছে এবং এটি এখন ইনপুট হিসাবে ফাংশন আরোগুলি ব্যবহার করে।


1
পিপি ও সিজি তে স্বাগতম! প্রশ্ন অনুসারে নিয়মাবলী অনুসরণ করে আপনার কোড রয়েছে তা নিশ্চিত করুন। বিধি স্পেসিফিকেশন হিসাবে, আপনার কোড একটি ফাংশন, পূর্ণ প্রোগ্রাম বা কোড বিট হতে হবে। এটি বোঝায় যে ইনপুটটি STDIN বা ফাংশন আর্গুমেন্ট (বা সমতুল্য) হ্যাপি কোডিং হতে হবে!
মেয়রমন্টি

3

ডায়ালগ এপিএল , 58 48 টি অক্ষর

প্রয়োজনীয় ⎕IO←0, যা অনেক সিস্টেমে ডিফল্ট। যুক্তি হিসাবে স্ট্রিং লাগে।

{('p q ',⍵)⍪'FT '[p,q,⍪⍎⍵]\⍨324⊤⍨9⍴≢p q←↓2 2⊤⌽⍳4}

কোনও বোনাস নেই, তবে প্লাস সাইডে, কোনও অপারেটর কাজ করে।

⍳4 প্রথম চারটি সূচক (0 1 2 3)

 বিপরীত (3 2 1 0)

2 2⊤ দু-বিট বুলিয়ান টেবিল

 তালিকার দ্বি-উপাদান তালিকায় বিভক্ত (উচ্চ-বিট, কম বিট)

p q← যেমন দোকান পি এবং কুই

 তাদের ট্যালি (2) *

9⍴ দৈর্ঘ্য 9 (2 2 2 2 2 2 2 2 2) এ চক্রাকারে পুনরায় আকার দিন

324⊤⍨ এনকোড 324 সুতরাং, 12-বিট বাইনারি হিসাবে (1 0 1 0 0 0 1 1 0 0)

\⍨ প্রসারিত করতে এটি ব্যবহার করুন (প্রতিটি 0 এর জন্য একটি স্থান সন্নিবেশ করুন) ...

'FT '[... ] স্ট্রিং "এফটি", সূচিকৃত

⍎⍵ মৃত্যুদন্ড কার্যকর হওয়া আর্গুমেন্ট ( p এবং q এর মান এখন বৈধ )

এটি একটি কলাম ম্যাট্রিক্সে তৈরি করুন

q,কিউ (1 1 0 0)  সমন্বিত একটি কলাম প্রস্তুত করুন

q,পি (1 0 1 0)  সমন্বিত একটি কলাম প্রস্তুত করুন

(... এর )⍪ উপরে একটি সারি প্রবেশ করান

 যুক্তি

'p q ', "পি কিউ" স্ট্রিং দিয়ে চাপ দেওয়া


* দয়া করে এই সমস্যাটি তারকাচিহ্নিত করুন যদি আপনি এর মতো ≢না দেখেন ̸≡


2

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

কোনও বোনাস নেই।

s->(S=split(s);P=println;p=S[1];q=S[3];a=[&,|][(S[2]=="∨")+1];c="  ";P(p,c,q,c,s);for t=["TT","TF","FT","FF"] P(t[1],c,t[2],c^2,"FT"[a(t[1]>'F',t[2]>'F')+1])end)

Ungolfed:

function f(s::String)
    # Split the input on spaces
    S = split(s)

    # Separate out the pieces of the statement
    p = S[1]
    q = S[3]
    a = [&, |][(S[2] == "∨") + 1]

    # Print the header
    println(p, "  ", q, "  ", s)

    # Create the table entries in a loop
    for t = ["TT", "TF", "FT", "FF"]
        println(t[1], "  ", t[2], "    ", "FT"[a(t[1] > 'F', t[2] > 'F') + 1])
    end
end

1

গণিত, 129 বাইট

Golfed:

t=InputString[];s=Append[StringCases[t,LetterCharacter],t];Grid[Prepend[Map[If[#,"T","F"]&,BooleanTable[ToExpression[s]],{2}],s]]

Ungolfed:

(*Take input*)
t=InputString[];
(* Find all occurrences of letters and append the final statement.*)
s=Append[StringCases[t,LetterCharacter],t];
(* Evaluate the list as expressions and create a boolean table of True/False values, then display as a table. *)
(* To satisfy the output conditions, we must convert each True/False to T/F *)
Grid[Prepend[Map[If[#,"T","F"]&,BooleanTable[ToExpression[s]],{2}],s]]

কোনও গণিত বিশেষজ্ঞ নয়, তবে প্রত্যক্ষ চরিত্রের তুলনা করার চেয়ে আমি এটি বরং মার্জিত বলে মনে করি found

আমার কাছে একটি সমাধান ছিল যা প্রত্যাখ্যানের জন্য কাজ করেছিল তবে স্কোর হ্রাস হ্রাসের চেয়ে এটি বেশি দীর্ঘ ছিল।

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

সুন্দর মুদ্রণ সহ, 171 * 0.6 = 102.6 বাইট

t=InputString[];s=Append[StringCases[t,LetterCharacter],t];Grid[Prepend[Map[If[#,"T","F"]&,BooleanTable[ToExpression[s]],{2}],s],Spacings->1,Frame->All,FrameStyle->Dashed]

1

Python3, 145 139 120 119 বাইট

কোনও বোনাস নেই (শেষে বোনাস সহ)

 def f(s):
 a,m,b=s.split(" ");print(a,b,s);F,T,c=0,1,"FT"
 for p in c:
  for q in c:print(p,q," ",c[eval(p+"+*"[m=="∧"]+q)>0])

ইউনিকোড সমর্থন বাক্সের বাইরে পাইথন 3 প্রয়োজন Ne

DJgamer98 পাইথন কোডের ভিত্তিতে, তার টেবিলটি নির্ধারণ করা ঠিক নয়।

সম্পাদনা 1: পৃথক ভেরিয়েবলে বিভক্ত করা এবং অপারেটরের স্ট্রিং ভেরিয়েবল বাদ দেওয়া

সম্পাদনা 2: (আব) উভয় ভেরিয়েবল এবং স্ট্রিং অক্ষর হিসাবে এফ এবং টি ব্যবহার করে

সম্পাদনা 3: NoOneIsHere এর জন্য একটি স্পেস সংরক্ষণ করা হচ্ছে

বোনাস সহ, 215 * 0.6 = 129

def f(s):
 r="+---"*3+"----+"
 a,m,b=s.split(" ");F,T,c=0,1,"FT"
 print("%s\n| %s | %s | %s |\n%s"%(r,a,b,s,r));
 for p in c:
  for q in c: print("| %s | %s |   %s   |\n%s"%(p,q,c[eval(p+"+*"[m=="∧"]+q)>0],r));

পিপিসিজিতে আপনাকে স্বাগতম! পরে স্থানটি সরিয়ে আপনি একটি বাইট সংরক্ষণ করতে পারেন q in c:
NoOneIsHere

সম্পাদনা 2: এটি অপব্যবহার নয়। এখানে দেখুন , যেখানে আমি ফাইলের সামগ্রীর প্রথম অক্ষরটি ফাইলের নাম হিসাবে ব্যবহার করি!
অ্যাডাম

1

সি / সি ++ 302 বাইট

অবহেলা পরিচালনা করার জন্য 335 টি অক্ষর কম 10%। অসম্পূর্ণ ফর্ম্যাট করা তবে জমা দেওয়ার আগে শেষ হওয়ার পরে কী প্রভাব পড়ে তা দেখছি।

সি / সি ++ হিসাবে চিহ্নিত হয়েছে কারণ আমার জিসিসি এবং জি ++ এটিকে অনুগ্রহপূর্বক গ্রহণ করে এবং এটি আমার কাছে সি ++ এর চেয়ে অনেক বেশি সি পছন্দ করে।

#include <stdio.h>
void T(char*S) { int (*P)(char*,...)=printf;char*v[2]={"F","T"};for(int m=4;m--;){P("|");char*s=S;int x=m&1;X:P(" %s |",v[x]);if(*++s!=' '){x=x^1;goto X;}char*o=++s;s+=3;int y=(m>>1)&1;Y:P(" %s |",v[y]);if(*++s){y=y^1;goto Y;}int g;for(g=o-S+1;g--;)P(" ");P(*++o==39?v[x&y]:v[x|y]);for(g=s-o;g--;)P(" ");P("|\n");}}

আমি নিশ্চিত যে সম্ভবত কয়েকটি টুইট আছে যা প্রয়োগ করা যেতে পারে। আসলে নোটগুলি পরিচালনা করা 10% বোনাস অপসারণের চেয়েও বেশি যোগ করে।

এটি ধরে নিয়েছে যে ইনপুট ফর্ম্যাটটি যেমন বলা হয়েছে, যেমন 2 ইনপুট মান (পি এবং কিউ), প্রিফিক্স এবং অন্য কিছু ছাড়া বা না, এবং সমস্ত টোকেনগুলি একক স্পেস দ্বারা বিস্মৃত হয়।

Ungolfed:

void ungolfed(char* S)
{
   int (*P)(char*,...) = printf;         // useful lookup stuff
   char* v[2] = {"F","T"};

   for(int m = 4; m--;) {                // loop over all 2 bit bit patterns (truth table inputs)

      P("|");                            // start of line format
      char* s=S;                         // iterator to start of equation for each bit pattern

      int x = m&1;                       // input 1 (aka. p which I called x here to be awkward)
X:    P(" %s |",v[x]);                   // input 1 output and format

      if(*++s!=' ') {                    // if next character is not a space then input must be prefixed with the not character
         x=x^1;                          // so negate the input
         goto X;                         // and redo input 1 output
      }

      char* o = ++s;                     // remember where the operator is
      s+=3;                              // and skip it and following space

      int y = (m>>1)&1;                  // input 2 (aka. q which I called y obviously) processing as for input 1
Y:    P(" %s |",v[y]);

      if(*++s) {
         y=y^1;
         goto Y;
      }

      int g;

      for(g=o-S+1;g--;) P(" ");         // pre-result value padding

      P(*++o==39?v[x&y]:v[x|y]);      // result

      for(g=s-o;g--;) P(" ");           // post-result value padding and format
      P("|\n");
   }
}

এবং পরীক্ষা:

int main()
{
   T("p \x22\x27 q");  // p & q
   puts("");

   T("p \x22\x28 q");  // p | q
   puts("");

   T("\x7ep \x22\x27 q");  // ~p & q
   puts("");

   T("\xacp \x22\x28 q");  // ~p | q
   puts("");

   T("p \x22\x28 \xacq");  // p | ~q
   puts("");

   return 0;
}

0

গণিত, 128 টি অক্ষর

TraditionalForm@Grid[({#}~Join~BooleanTable[#,Cases[b,_Symbol,{0,∞}]]&/@Cases[b=ToExpression@#,_,{0,∞}]/.{0<1->"T",0>1->"F"})]&

U+F3C7প্রতিনিধিত্ব করে এমন ব্যক্তিগত ব্যবহারের চরিত্র \[Transpose]

ভাগ্যক্রমে আমাদের জন্য গাণিতিক গল্ফাররা, এবং ইতিমধ্যে উপস্থাপন করে Andএবং Orতাই, আমাদের যা করতে হবে তা হ'ল ইনপুট স্ট্রিংটিকে ম্যাথমেটিকা ​​এক্সপ্রেশনে রূপান্তর করা এবং আমরা এটিতে প্রতীকী যৌক্তিক ক্রিয়াকলাপ করতে পারি।

দ্রষ্টব্য যে এই সমাধানটি Not( ¬), Implies( ), Equivalent( ), Xor( ), Nand( ), Xor( ), এবং Nor( ) হ্যান্ডেল করবে তবে এটি বোনাস পায় না কারণ ~pম্যাথমেটিকায় একটি সিনট্যাক্স ত্রুটি। সাধরণ।

এখানে চিত্র বর্ণনা লিখুন

ব্যাখ্যা

b=ToExpression@#

ইনপুট স্ট্রিংটিকে ম্যাথমেটিকা ​​এক্সপ্রেশনে রূপান্তর করে এবং এতে সঞ্চয় করে b

Cases[b=ToExpression@#,_,{0,∞}]

এটি ইনপুটটির প্রতিটি সম্ভাব্য সুপ্রেসপ্রেশন একটি তালিকা। প্রত্যেকে তার নিজস্ব কলাম পাবে।

Cases[b,_Symbol,{0,∞}]

এটি ইনপুটটিতে উপস্থিত সমস্ত ভেরিয়েবলের একটি তালিকা।

BooleanTable[#,Cases[b,_Symbol,{0,∞}]]&

খাঁটি ফাংশন যা ইনপুট এক্সপ্রেশন নেয় #এবং ভেরিয়েবলের জন্য সত্য মানের সমস্ত সম্ভাবনার সংমিশ্রণের জন্য সত্য মানের একটি তালিকা দেয় returns

{#}~Join~BooleanTable[...]

এই তালিকায় প্রকাশটি নিজেই প্রস্তুত করে।

.../@Cases[b=ToExpression@#,_,{0,∞}]

এই ফাংশনটি ইনপুটটির প্রতিটি সুপ্রপ্রেসে প্রয়োগ করে।

.../.{0<1->"T",0>1->"F"}

তারপরে সত্য ( 0<1) টি "টি" দিয়ে এবং মিথ্যা ( 0>1) "এফ" দিয়ে প্রতিস্থাপন করুন ।

(...)

সারি এবং কলামগুলি বিনিময় করুন।

Grid[...]

ফল হিসাবে একটি হিসাবে প্রদর্শিত হবে Grid

TraditionalForm@Grid[...]

Traditionalতিহ্যবাহী Gridরূপে রূপান্তর করুন যাতে এটি অভিনব প্রতীকগুলি ব্যবহার করে।

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