トラック
/
SQLite
SQLite
/
演習
/
アナグラム
アナグラム

アナグラム

上級

はじめに

ガレージセールで、格安の素敵なヴィンテージ・タイプライターを見つけました! わくわくしながら家に帰り、紙を1枚入れて、さっそく打ち始めます。 ところが、出てきた文字を見てわくわくはしぼんでしまいます。単語がすべて文字化けしているのです! たとえば、"post"の代わりに"stop"、"stale"の代わりに"least"と印字されます。 慎重にもう一度試してみますが、今度は"spot"と"slate"が印字されます。 いろいろ試しているうちに、文字が印字される前にランダムな遅延が入り、それで順番がめちゃくちゃになることがわかりました。 こんなに安かった理由が、今ならわかります!

この癖を利用すればアナグラムを作れることに気づきます。アナグラムとは、ある単語の文字を並べ替えてできる別の単語のことです。 この発見に満足したあなたは、その日一日じゅう、何百ものアナグラムを作って過ごします。

説明

対象となる単語が1つと、候補となる単語が1つ以上与えられます。その中から、対象の単語のアナグラムになっている候補を探してください。

アナグラムとは、文字を並べ替えて別の単語を作ったものです。たとえば、"owns"は"snow"のアナグラムです。 ある単語が、それ自身のアナグラムに_なることはありません_。たとえば、"stop"は"stop"のアナグラムではありません。

対象の単語と候補の単語は、1つ以上のASCII英字(A-Zとa-z)でできています。 小文字と大文字は同じものとして扱われます。たとえば、"PoTS"は"sTOp"のアナグラムですが、"StoP"は"sTOp"のアナグラムではありません。 見つけ出す単語は候補の単語の中から選び、大文字・小文字は候補の単語と同じものを使います。

対象の単語が"stone"、候補の単語が"stone"、"tones"、"banana"、"tons"、"notes"、"Seton"のとき、見つけ出すアナグラムは"tones"、"notes"、"Seton"です。

  • candidates列には、JSONでエンコードされた文字列のリストが入ります。例:
    ["stone","tones","banana","tons","notes","Seton"]
    
  • result列にも、JSONでエンコードされた文字列のリストが入ります。

テーブルスキーマ

CREATE TABLE anagram (
  subject    TEXT NOT NULL,
  candidates TEXT NOT NULL,     -- json array of strings
  result     TEXT               -- json array of strings
);

JSONのドキュメント

JSON Functions And Operators

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
SQLite Exercism

アナグラムを始める準備はできましたか?

Exercismに登録すれば、81個の演習、そして本物の人間によるメンタリングとともに、SQLiteを学んでマスターできます。すべて無料です。