🧰 UtlKit

テキスト逆順:31 文字の一行は文字モードで "?yadot uoy era woH !dlroW olleH" へ、単語モードで "today? you are How World! Hello" へ

"Hello World! How are you today?" を入力すると、テキスト逆順は文字モードで "?yadot uoy era woH !dlroW olleH"、単語モードで "today? you are How World! Hello" を返し、行モードは行の順だけを入れ替える、すべてブラウザ内で完結する。

テキスト逆順に "Hello World! How are you today?" を入力すると、モードによって 3 つの異なる答えが返る。文字モードは 31 文字の一行を "?yadot uoy era woH !dlroW olleH" へ返し、単語モードは 6 つの単語の中身を変えず順だけを入れ替えて "today? you are How World! Hello" を返し、行モードは行の中身は触れず行の順だけを入れ替える。3 つの結果はすべてブラウザ内で計算され、サーバーへの要求は無い。

文字モードはコードポイントを反転し、バイトではない

文字モードは最後のコードポイントから最初のコードポイントへ読み、書き直すので、単語の中の文字も動く。"Hello World! How are you today?" は "?yadot uoy era woH !dlroW olleH" として戻り、疑問符が最初へ、Hello の大文字 H が最後へ。切り分けはバイトではなくコードポイントで行われるので、絵文字は 1 単位のまま残る。"ab🚀cd" は "dc🚀ba" を返し、ロケットは 2 組の文字の間にそのまま残る。同じ入力を文字カウントに入力すると 6 文字と報じられる。カウントは内部の 16 ビット単位を数えるため、ロケットは 2 を占め、見える記号は 5 つだからだ。

単語モードは単語を入れ替え、空白を正規化する

単語を保持するのは単語モードだ。空白の連続で入力を書き分け、空の片を捨て、単語の列を逆順にして 1 つの空白で貼り直すので、6 語の一行は "today? you are How World! Hello" を返す。貼り直しの過程で空白も整う。"hello" の後に空白 3 つ、続いて "world" なら、戻るのは "world hello" で空白 1 つ、前後の余白は無い。空白が不規則な塊がある場合、空白クリーナーは同じ「1 つの空白に圧縮」ルールを一度で文書全体へ適用するが、こちらの単語モードは順を入れ替える過程でのみ正規化する。

行モードは行の順だけを入れ替える

行モードは各行の中身は保持し、順序だけを変える。"apple"、"banana"、"cherry" の 3 行の塊は "cherry"、"banana"、"apple" として戻り、ログ行の塊は最新が最初へ、内部の 1 文字も触れない。比較の使い道が文字列類似度の位置だ。元の塊と行逆順の双子の塊を渡すと、2 つの読みがどれだけ近いかの点数を出し、これが回文チェックの数値形、1 行を反転して答えが問いと等しいかを問うのと同じ手だ。

2 回反転すれば元に戻る

文字モードは自分自身の取り消しだ。"?yadot uoy era woH !dlroW olleH" をもう一度ツールに送ると "Hello World! How are you today?" が戻り、31 文字が元の順序で 1 つのズレも無い。列を 2 回反転するのは恒等だからだ。単語モードも往復するが、1 回目の正規化までだ。往きの過程で 3 つの空白が 1 つに圧縮されたら、帰りの過程では 1 つのままだ。変えては元に戻すという対の性質が、エンコーダも同じに感じられる理由だ。URLエンコーダ/デコーダも対で働き、先にエンコードしてデコードし、デコード出力は入力と等しくなければその対は破れる。

テキストのパイプラインにおける反転の位置

反転は組める中で最も安い符号化、ビットを 1 つも使わない純粋な入れ替えで、実際にビットを使う符号化器と同じパイプラインに挟まる。テキスト⇄バイナリ変換のガイドは隣接の方向、各文字を 8 ビットコードへ変換し "Hi" が 01001000 01101001 と読めることを扱い、同じ往復の論理が適用される。コードを解けばそれを生んだ文字列へ帰らなければならない。反転はこの仲間の中でコストゼロのメンバー、逆操作が操作そのもの、パイプラインが内容を保持するかをテストする時にスクリプトを書く人が最初に手を伸ばす理由がまさにそこだ。

反転から分析へ

反転の目的は、ほぼ決して反転後のテキストそのものではなく、比較が示すものだ。回文、順序チェック、目を逃らせたものを見つけるために塊を逆から読む習慣、どれも比較の仕事で、テキストカウントのガイドはその比較の反対側にある数字の出どころ、そのまま書かれた塊の単語数、文字の分解、上位 10 文字だ。入れ替えはどれも変えない。単語出現頻度が一目で示す。反転文と原文はどちらも同じ 6 単語、hello、world、how、are、you、today に正規化され、各 1 回出現、入れ替えは単語もカウントも変えないためだ。

関連ツール

よくある質問

テキスト逆順は何をするのか?

3 つの選択式モードでテキストを反転する。"Hello World! How are you today?" を入力すると、文字モードは "?yadot uoy era woH !dlroW olleH" を返し、単語モードは "today? you are How World! Hello" を返し、行モードは行の中身を変えず行の順だけを入れ替える。すべてブラウザ内で、ページ上で計算され、サーバーへの要求は無い。

文字モード、単語モード、行モードの違いは?

文字モードは各コードポイントを動かすので、単語内の各文字も動く。"Hello" は "olleH" になる。単語モードは各単語を保持し順序だけを入れ替え、1 つの空白で貼り直す過程で空白の連続は 1 つに圧縮される。行モードは行の順だけを変え、単一行はそのまま返る。文字モードの切り分けはバイトではなくコードポイントで行われるので、絵文字は 1 単位のまま動く。

反転済みのテキストをもう一度反転できるか?

できる。文字モードは自分自身の取り消しだ。"?yadot uoy era woH !dlroW olleH" をもう一度ツールに送ると "Hello World! How are you today?" が戻り、31 文字は元の順序で 1 つのズレも無い。単語モードも往復するが、1 回目の正規化までだ。往きの過程で 3 つの空白が 1 つに圧縮されたら、帰りの過程では 1 つのまま返る。だから往復が正確になるのは、入力側が最初から 1 つの空白だった場合だ。

絵文字は半分に分かれるか?

分かれない。文字モードはバイトではなくコードポイントで入力を切るので、"ab🚀cd" のロケットはそのまま動き、ツールは "dc🚀ba" を返す。文字カウントが確認だ。同じ入力に 6 と報じるのは、カウントが内部の 16 ビット単位を追うためで、ロケットは 2 を占め、見える記号は 5 つだから。同じ 5 個の記号に対する 2 種の数え方だ。

私のテキストはどこかに送信されますか?

されない。入力テキストと選択したモードはブラウザ内で、ページ上に留まり、サーバーへの要求は無い。タブを閉じればテキストは消える;保存も記録も共有も無い。

関連記事