LaTeX सत्य तालिकाओं


11

एक प्रोग्राम या एक फ़ंक्शन लिखें जो एक लॉजिक फ़ंक्शन से आउटपुट की सूची को स्वीकार करता है और अपनी सत्य तालिका के लिए LaTeX कोड को आउटपुट करता है।

इनपुट को लोअरकेस अक्षर के रूप में लेबल किया जाना चाहिए a-z, और आउटपुट को लेबल किया जाना चाहिए F। इनपुट की सूची की लंबाई हमेशा से कम होगी 2^25, जिसका अर्थ है कि इनपुट की संख्या हमेशा 25 से कम होगी, इसलिए आप इनपुट नामों के लिए लोअरकेस वर्णमाला के अक्षरों का उपयोग कर सकते हैं।

इनपुट

कई nइनपुट और 2^nबाइनरी संख्या की लंबाई की सूची जो एक तार्किक फ़ंक्शन के आउटपुट का प्रतिनिधित्व करती है।

उत्पादन

LaTeX कोड जो उस फ़ंक्शन के लिए सत्य तालिका बनाता है। इनपुट और आउटपुट मान को पंक्तियों में केंद्रित किया जाना चाहिए। टेबल हेडर और उसके मूल्यों के बीच और इनपुट और आउटपुट के बीच एक रेखा होनी चाहिए, इसलिए कोड नीचे के समान होना चाहिए।

\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}

जो जब LaTeX में प्रदर्शित होता है, तो निम्न सत्य तालिका दिखाता है

सच्ची तालिका

सामान्य नियम


3
क्या इस चुनौती के लिए ठीक उसी आउटपुट या किसी भी आउटपुट की आवश्यकता है जो TeX में एक ही चीज का उत्पादन कर सकता है?
tsh

2
कोई भी आउटपुट जो TeX में एक ही चीज का उत्पादन करता है
drobilc

2
कुछ ऐसा है जो मुझे यहाँ पर नहीं पता है कि TeX को अच्छी तरह से नहीं पता है कि टेबल को लिखने के लिए अन्य छोटे तरीके हो सकते हैं जैसे कि टेक्स कोड, या यहाँ तक कि किसी अन्य तरीके से (पैकेज?) तालिका का निर्माण करने के लिए। जो भी भाषा मैं उपयोग करता हूं, TeX गोल्फ चुनौती का हिस्सा है। क्या सुविधा के लिए TeX के लिए एक ऑनलाइन दुभाषिया है, और शायद असंदिग्ध बनाने के लिए कि सटीक कार्यान्वयन क्या है?
xnor 11

1
युक्ति: TeX कोड सभी रिक्त स्थान और हटाए गए नए लिंक के साथ काम करता है।
xnor

1
जो कोई यह नहीं जानता कि इसे लाटेक्स में कैसे करना है, ऊपर दिए गए उदाहरण आउटपुट का पालन करें। यदि n = 5, के cccccबजाय सरल रखा गया है cc, लेकिन |cअकेला छोड़ दें ... और हां, इस तालिका में, सभी रिक्त स्थान और newlines वैकल्पिक हैं, लेकिन मैं रिक्त लाइनों से बचूंगा।
हेमडाल

जवाबों:


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 एक सम्मिलित करने के लिए क्षमा करता है ¦।)


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और इस LaTeX गोल्फ टिप के अनुसार \endtabularकम \begin{tabular}और उपयोग किया जाता है । 2 कॉलम को परिभाषित करने के लिए एक आशुलिपि है।\end{tabular}*2c


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 है)। मैं xnor से कुछ चालें चोरी कर सकते हैं; पी

प्रबंधित करने के लिए अब चर में कुछ चीजें बनाकर कम किया जा सकता है, जिसे मैंने अभी देखा है xnor ने भी किया था: P

और वहाँ हम जाते हैं, -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)

इसे ऑनलाइन आज़माएं!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.