逆から読んでも①
文字列を逆順にしたいです。
\makeatletter \def\inverse#1{\@inverse #1\@nil} \def\@inverse#1#2\@nil{% \def\blank{}% \def\endhantei{#2}% \ifx\blank\endhantei #1\else\@inverse #2\@nil #1\fi } \makeatother
原理
\inverse{あいう}
\@inverse あいう\@nil
(#1 <- あ, #2 <- いう)
\@inverse いう\@nil あ
(#1 <- い, #2 <- う)
\@inverse う\@nil いあ
(#1 <- う, #2 <- )
ういあ
結果
入力:
\inverse{ぺ}
出力:ぺ
入力:
\inverse{しんぶんし}
出力:しんぶんし
入力:
\inverse{ぺりをでぃすたす}
出力:すたすぃでをりぺ
クイズ
入力:
\inverse{ぺりを でぃすたす}
の出力は何になるでしょう?(「を」と「で」の間は半角スペースです)
答
出力:すたすぃでをりぺ
「をりぺでぃすたす」でも「すたすぃで␣をりぺ」でもありません。(␣は半角スペースの意)
制御綴直後の空白が吸収されるためです。これの解決は(全く考えていないが直感的には)ちょっと大変そうなのでまた今度……
ぺりをだねぇ