ল্যাটেক্স সত্যের টেবিল


11

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

ইনপুটগুলি ছোট হাতের অক্ষর হিসাবে লেবেল করা উচিত a-z, এবং আউটপুট হিসাবে লেবেল করা উচিত F। ইনপুটগুলির তালিকার দৈর্ঘ্য সর্বদা এর চেয়ে কম হবে 2^25, যার অর্থ ইনপুটগুলির সংখ্যা সর্বদা 25 এর চেয়ে কম থাকবে, সুতরাং আপনি ইনপুট নামের জন্য ছোট হাতের বর্ণমালা থেকে অক্ষর ব্যবহার করতে পারেন।

ইনপুট

বাইনারি সংখ্যার nদৈর্ঘ্যের একটি ইনপুট এবং 2^nতালিকাগুলি যা যৌক্তিক ফাংশনের ফলাফলকে উপস্থাপন করে।

আউটপুট

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

\begin{tabular}{c * <NUMBER OF INPUTS>|c}
<INPUTS>&F\\
\hline
<INPUT VECTOR i>&<OUTPUT>\\
\end{tabular}

উদাহরণ

ইনপুট:

2
[0, 0, 0, 1]

আউটপুট:

\begin{tabular}{cc|c}
a & b & F \\
\hline
0 & 0 & 0 \\
0 & 1 & 0 \\
1 & 0 & 0 \\
1 & 1 & 1 \\
\end{tabular}

যা ল্যাটেক্সে প্রদর্শিত হলে নিম্নলিখিত সত্যের সারণীটি দেখায়

সঠিক তালিকা

সপ্তাহের দিন


3
এই চ্যালেঞ্জটির কি ঠিক একই আউটপুট বা কোনও আউটপুট প্রয়োজন যা টেক্সে একই জিনিস তৈরি করতে পারে?
tsh

2
কোনও আউটপুট যা টেক্সে একই জিনিস উত্পাদন করে
drobilc

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

1
টিপ: টেক্স কোডটি সমস্ত স্থান এবং নতুন লাইনগুলি সরিয়ে নিয়ে কাজ করছে বলে মনে হচ্ছে।
xnor

1
যে কেউ লাটেক্সে এটি কীভাবে করতে জানেন না, তিনি উপরের উদাহরণ আউটপুটটি অনুসরণ করুন। যদি এন = 5, এর cccccপরিবর্তে সরল রাখুন ccতবে |cএকা ছেড়ে যান ... এবং হ্যাঁ, এই টেবিলটিতে সমস্ত স্থান এবং নিউলাইনগুলি areচ্ছিক তবে আমি ফাঁকা লাইনগুলি এড়াতে চাই।
হিমডল

উত্তর:


10

কাঠকয়লা , 70 বাইট

≔tabularζ\ζ{*θc|c}⸿⪫✂β⁰Iθ¹&⁰&F\\⸿\hline⸿Eη⁺⪫⁺⮌EIθI﹪÷κX²λ²⟦ι⟧&¦\\⁰\endζ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

≔tabularζ

সদৃশ এড়ানোর জন্য এই স্ট্রিংটি একটি ভেরিয়েবলে সংরক্ষণ করুন।

\ζ{*θc|c}⸿

প্রাথমিক \tabular{*2c|c}লাইনটি মুদ্রণ করুন (2 বা প্রথম ইনপুটটির qযে কোনও মান রয়েছে)।

⪫✂β⁰Iθ¹&⁰&F\\⸿\hline⸿

qপূর্বনির্ধারিত পরিবর্তনশীল থেকে প্রথম অক্ষর পান bএবং &তাদের মধ্যে গুলি সন্নিবেশ করান , তারপরে যুক্ত করুন &F\\এবং \hlineপরবর্তী লাইনেও মুদ্রণ করুন।

Eη⁺⪫⁺⮌EIθI﹪÷κX²λ²⟦ι⟧&¦\\

দ্বিতীয় ইনপুটটিতে অক্ষরগুলির উপর লুপ করুন। প্রত্যেকটির জন্য, এর সূচক দৈর্ঘ্যের সাথে বাইনারি রূপান্তরিত হয় q, চরিত্রটি সংক্ষিপ্ত হয়, ফলাফলটি &এস এর সাথে \\যুক্ত হয় এবং সংযুক্ত করা হয়। ফলস্বরূপ স্ট্রিংগুলি স্পষ্টভাবে পৃথক লাইনে মুদ্রিত হয়।

⁰\endζ

মুদ্রণ করুন \endtabular। ( যেমন deverbosifier forgots একটি সন্নিবেশ করতে শুধু একটি বিভাজক হয় ¦।)


3
এটি চিত্তাকর্ষক যে চারকোল বর্তমানে বিজয়ী, প্রদত্ত যে এই চ্যালেঞ্জটি আসলে এটির জন্য ডিজাইন করা হয়নি।
এরিক দি আউটগল্ফার

6

পাইথন 2 , 153 বাইট

lambda n,l:r'\tabular{*%dc|c}%s&F\\\hline%s\endtabular'%(n,q(map(chr,range(97,97+n))),r'\\'.join(q(bin(2**n+i)[3:]+x)for i,x in enumerate(l)))
q='&'.join

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

আউটপুট পছন্দ

\tabular{*2c|c}a&b&F\\\hline0&0&0\\0&1&0\\1&0&0\\1&1&1\endtabular

\tabularএবং \endtabularখাটো হিসাবে ব্যবহৃত হয় \begin{tabular}এবং \end{tabular}অনুযায়ী, এই লেটেক্ গলফ ডগা*2c2 কলাম নির্ধারণ করতে একটি সাঁটে লেখার হয়।


5

হাস্কেল, 164 155 বাইট

s%f=((:"&")=<<s)++f:"\\\\"
n#r=unlines$("\\tabular{"++('c'<$[1..n])++"|c}"):take n['a'..]%'F':"\\hline":zipWith(%)(mapM id$"01"<$[1..n])r++["\\endtabular"]

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

unlines                               -- take a list of strings and join it with NL.
                                      -- the strings are:
   "\\tabular{"++('c'<$[1..n])++"|c}" -- tabular definition with n times 'c'
   take n['a'..]%'F'                  -- table header
   "\\hline"                          -- hline
   zipWith(%)(mapM id$"01"<$[1..n])r  -- table content
   ["\\endtabular"]                   -- end of tabular definition

Table header and content are built via function '%'

s%f=                                  -- take a string 's' and a char 'f'
    ((:"&")=<<s)                      -- append a "&" to each char in 's'
    ++f:"\\\\"                        -- and append 'f' and two backslashes

Table header:

take n['a'..] % 'F'                   -- s: the first n letters from the alphabet
                                      -- f: char 'F'
Table content:

zipWith(%)                            -- apply '%' pairwise to
    mapM id$"01"<$[1..n]              -- all combinations of '0' and '1' of length n
    r                                 -- and the string 'r' 

সম্পাদনা করুন: এর \tabularপরিবর্তে \begin{tabular}( @ xnor এর উত্তর থেকে চুরি )।


3

পাইথন 2 , 192 168 166 বাইট

lambda n,l:r'\begin{tabular}{*%dc|c}%s\end{tabular}'%(n,r'\\'.join(map('&'.join,[map(chr,range(97,97+n))+[r'F\\\hline']]+[bin(2**n+i)[3:]+l[n]for i in range(2**n)])))

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

সুন্দর মুদ্রিত সংস্করণ:

পাইথন 2 , 234 229 218 209 205 203 বাইট

n,l=input()
print'\\begin{tabular}{'+'c'*n+'|c}\n'+' & '.join(chr(i+97)for i in range(n)+[-27]),'\\\\\n\hline'
i=0
for r in l:print' & '.join(bin(i)[2:].rjust(n,'0')+`r`),r'\\';i+=1
print'\\end{tabular}'

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


2

প্রোটন , 142 বাইট

n=>x=>"\\tabular*#{n}c|c#{j(map(chr,97..97+n))}&F\\\\\hline"+'\\\\'.join(j(bin(i)[2to].zfill(n)+x[i])for i:0..len(x))+"\\endtabular"j="&".join

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

আউটপুটটি গল্ফড ল্যাটেক্স আকারে রয়েছে; xnor যে কৌশল জন্য ধন্যবাদ!

এটি xnor এর পাইথন উত্তরের চেয়ে সংক্ষিপ্ততর হয়ে উঠতে সক্ষম হওয়া উচিত কারণ প্রোটনের তাত্ত্বিকভাবে পাইথন লোলের কাছে কখনই হেরে যাওয়া উচিত নয় (বাস্তবে আমি খারাপ xD)। আমি এক্সনোর থেকে কিছু কৌশল চুরি করতে পারি; পি

ভেরিয়েবলে কিছু জিনিস তৈরি করে এখন সংক্ষিপ্ত হতে পরিচালিত, যা আমি সবেমাত্র এক্সএনওরও লক্ষ্য করেছি: পি

এবং আমরা কিছু প্রোটন গল্ফিং ট্রিকস ব্যবহার করে -6 বাইট যেতে পারি।


1

আর , 196 187 171 বাইট

function(m,n){cat("\\tabular{*",n,"c|c}")
write(c(letters[1:n],"F\\\\\\hline",rbind(t(rev(expand.grid(rep(list(0:1),n)))),paste0(m,"\\\\")),"\\endtabular"),1,n+1,sep="&")}

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

চারকোল উত্তরের অনুরূপ আউটপুট । এই উত্তরexpand.grid থেকে ।

রেকর্ডের জন্য, xtableএপিমনাম প্যাকেজটি ব্যবহার করা খুব কম নয় , কারণ প্যাকেজটি ছাড়াও, নির্দিষ্টকরণের সাথে মেলে তুলতে প্রচুর বিকল্প নির্দিষ্ট করতে হবে:

আর , 187 বাইট

function(m,n){u=rbind(apply(expand.grid(rep(list(0:1),n)),1,rev),m)
rownames(u)=c(letters[1:n],"F")
print(xtable(t(u),dig=0,align=c(rep("c",n+1),"|c}")),hl=0,include.r=F)}
library(xtable)

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

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