Expl3 신택스 연습할 겸 LaTeX으로 짜봄
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\cs_set:Npn \lev_fn:nn #1 #2{
\int_new:N \l_lenA_int
\int_new:N \l_lenB_int
\int_set:Nn \l_lenA_int {\tl_count:n{#1}+1}
\int_set:Nn \l_lenB_int {\tl_count:n{#2}+1}
\intarray_new:Nn \l_dp_intarray {\l_lenA_int * \l_lenB_int}
\int_step_inline:nn {\l_lenB_int} {
\setDP:nnn{1}{##1}{##1-1}
}
\int_step_inline:nn {\l_lenA_int} {
\setDP:nnn{##1}{1}{##1-1}
}
\tl_new:N \l_i_tl
\tl_new:N \l_j_tl
\str_new:N \l_a_str
\str_new:N \l_b_str
\int_step_variable:nnNn {2}{\l_lenA_int} \l_i_tl {
\int_step_variable:nnNn {2}{\l_lenB_int} \l_j_tl {
\str_set:Nx \l_a_str {\str_item:nn {#1} {\l_i_tl-1}}
\str_set:Nx \l_b_str {\str_item:nn {#2} {\l_j_tl-1}}
\str_if_eq:NNTF {\l_a_str} {\l_b_str} {
\setDP:nnn{\l_i_tl}{\l_j_tl}{\getDP:nn{\l_i_tl-1}{\l_j_tl-1}}
} {
\setDP:nnn{\l_i_tl}{\l_j_tl}{
\int_min:nn{
\int_min:nn{
\getDP:nn{\l_i_tl-1}{\l_j_tl-1}
}{
\getDP:nn{\l_i_tl}{\l_j_tl-1}
}
}{
\getDP:nn{\l_i_tl-1}{\l_j_tl}
} + 1
}
}
}
}
\intarray_item:Nn \l_dp_intarray {\l_lenA_int * \l_lenB_int}
}
\cs_set:Npn \getDP:nn #1 #2 {
\intarray_item:Nn \l_dp_intarray {\l_lenB_int * (#1-1) + #2}
}
\cs_set:Npn \setDP:nnn #1 #2 #3{
\intarray_gset:Nnn \l_dp_intarray {\l_lenB_int * (#1-1) + #2} {#3}
}
\NewDocumentCommand \lev{mm} {
\lev_fn:nn {#1}{#2}
}
\ExplSyntaxOff
\begin{document}
Distance of kitten and sitting: \lev{kitten}{sitting}
\end{document}
이거 라텍스라고 읽는거 맞죠?
레이텍
와 라택스에서 코딩이 되는구나 그냥 수식 입력기++ 인줄 알았는데