expl3 (LaTeX3 प्रोग्रामिंग लेयर), 65 बाइट्स
निम्नलिखित एक फ़ंक्शन को परिभाषित करता है जो टर्मिनल के परिणाम को प्रिंट करता है (दुर्भाग्य expl3
से बहुत वर्बोज़ फ़ंक्शन नाम हैं):
\def\1#1{\fp_show:n{1/(\clist_map_function:nN{#1}\2)}}\def\2{+1/}
एक संपूर्ण स्क्रिप्ट जो टर्मिनल से सभी परीक्षण मामलों के साथ-साथ प्रवेश करने के लिए सेटअप सहित चलाया जा सकता है expl3
:
\RequirePackage{expl3}\ExplSyntaxOn
\def\1#1{\fp_show:n{1/(\clist_map_function:nN{#1}\2)}}\def\2{+1/}
\1{1, 1}
\1{1, 1, 1}
\1{4, 6, 3}
\1{20, 14, 18, 8, 2, 12}
\1{10, 10, 20, 30, 40, 50, 60, 70, 80, 90}
\stop
यदि pdflatex <filename>
निम्न के साथ चलाया जाता है तो कंसोल आउटपुट है:
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./cg_resistance.tex
LaTeX2e <2018-12-01>
(/usr/local/texlive/2019/texmf-dist/tex/latex/unravel/unravel.sty
(/usr/local/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/local/texlive/2019/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def))
(/usr/local/texlive/2019/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)
(/usr/local/texlive/2019/texmf-dist/tex/generic/gtl/gtl.sty))
> 1/(\clist_map_function:nN {1,1}\2)=0.5.
<recently read> }
l.3 \1{1, 1}
?
> 1/(\clist_map_function:nN {1,1,1}\2)=0.3333333333333333.
<recently read> }
l.4 \1{1, 1, 1}
?
> 1/(\clist_map_function:nN {4,6,3}\2)=1.333333333333333.
<recently read> }
l.5 \1{4, 6, 3}
?
> 1/(\clist_map_function:nN {20,14,18,8,2,12}\2)=1.129538323621694.
<recently read> }
l.6 \1{20, 14, 18, 8, 2, 12}
?
> 1/(\clist_map_function:nN
{10,10,20,30,40,50,60,70,80,90}\2)=2.611669603067675.
<recently read> }
l.7 \1{10, 10, 20, 30, 40, 50, 60, 70, 80, 90}
?
)
No pages of output.
Transcript written on cg_resistance.log.
व्याख्या
\fp_show:n
: एक अस्थायी बिंदु अभिव्यक्ति के रूप में इसके तर्क का मूल्यांकन करता है और टर्मिनल पर परिणाम को प्रिंट करता है, उस प्रक्रिया के दौरान हर विस्तार योग्य मैक्रो का विस्तार होता है।
\clist_map_function:nN
: दो तर्क लेता है, एक अल्पविराम से अलग की गई सूची और एक फ़ंक्शन / मैक्रो, अगर \clist_map_function:nN { l1, l2, l3 } \foo
इसे बुलाया जाता है जैसे यह कुछ इस तरह फैलता है \foo{l1}\foo{l2}\foo{l3}
। हमारे मामले \foo
में मैक्रो के बजाय का \2
उपयोग किया जाता है, जो +1/
कि विस्तार करता है ताकि अभिव्यक्ति का विस्तार हो+1/{l1}+1/{l2}+1/{l3}