これは、カスタムスコアリングシステムによるコードチャレンジであり、最低スコアが勝ちます。
前書き
多くのスマートフォンでは、2D仮想キーボード上で指をスワイプすることでテキストを入力できます。この技術は通常、推測された単語のリストを出力する予測アルゴリズムと組み合わされ、最も可能性の高いものから低いものへとソートされます。
この課題では:
- 26文字のサブセットに制限された1次元キーボードをスワイプします。
- 予測アルゴリズムはありません。各単語が「スワイプシーケンス」によって一意に識別されるようにします。
- 特定の単語リストの移動の合計数が最小になるようにキーボードを最適化する必要があります。
1次元でのスワイプ
以下は、すべての文字で辞書式にソートされた1Dキーボードです。
ABCDEFGHIJKLMNOPQRSTUVWXYZ
注意:モバイルから閲覧している場合、これは複数の行に表示される場合があります。単一の行と考えてください。
そのようなキーボードで単語 ' GOLF ' を入力するには、次のようにします。
- で始まる G
- 右にスワイプして O
- 左にスワイプして F
そのためLの間に位置しているOとF、私たちはそこに停止せずにスワイプに行きます。
それで、このキーボードの' GOLF 'のスワイプシーケンスはGOFです。
より一般的に:
- 最初と最後の文字は常に含まれます。
- 他の文字は、方向の変更が必要な場合にのみ含まれます。
繰り返される文字は、単一の文字と同じように扱われる必要があります。たとえば、上記のキーボードで:
- ' LOOP 'は次のようにエンコードされますLP(停止なしO)
- 「GOOFY」は次のようにエンコードされますGOFY(O方向が変更されたために含まれています-二重になっているためではありません)
キーボードの最適化
次の単語のリストを考えてみましょう:[' PROGRAMMING '、 ' PUZZLES '、 ' AND '、 ' CODE '、 ' GOLF ']。
これらの単語を入力するには16の異なる文字が必要なので、16文字のキーボードが必要です。次は、辞書式にソートされたものです。
ACDEFGILMNOPRSUZ
このキーボードを使用すると、単語は次のようにエンコードされます。
- プログラミング:PRGRAMING(9手)
- パズル:PZES(4手)
- AND:AND(3手)
- コード:CODE(4手)
- ゴルフ:GOF(3手)
これは、すべての単語に対して合計23の動きです。
ただし、このキーボードを使用すると、さらに改善できます。
CGODSELZNUIFRPAM
与えるもの:
- プログラミング:PGMG(4手)
- パズル:PS(2手)
- AND:AD(2手)
- コード:CE(2手)
- ゴルフ:GF(2手)
合計でわずか12の動きです。
キーボードスコアリング
低いほど良い。
チャレンジ
- 単語のリストを指定すると、コードはこのリストに有効なキーボードを出力する必要があります。各単語が一意のスワイプシーケンスを生成する場合、キーボードは有効と見なされます。
単語の11の独立したリストが与えられます。あなたのスコアは以下に等しくなります:
あなたはできるあなたのスコアを確認するには、このスクリプトを使用します。この
score()
関数は、最初のパラメーターとしてコード長を、2番目のパラメーターとして11個のキーボード文字列の配列を想定しています(大文字と小文字は区別されません)。最低スコアの提出が勝ちです。同点の場合、最初に提出された提出物が勝ちます。
追加のルール
- コードは確定的でなければなりません(つまり、指定された入力に対して常に同じ出力を返す必要があります)。
- A)タイムアウトしないテストリンク(TIOなど)を提供するか、B)回答の本文に生成されたキーボードを含める必要があります。
- 単語は大文字でも小文字でも構いません。混在するケースは禁止されています。
- 入力には、少なくとも1つのソリューションがあることが保証されています。
- すべての単語は、少なくとも2つの異なる文字で構成されています。
- コードは有効な入力に対して機能する必要があります。非公開の単語リストを使用してテストし、ハードコードされた結果に依存していないことを確認します。
- 私は、提出物が最初のテストケースに対して最適化されていないことを確認するために、いつでもテストスイートのサイズを増やす権利を留保します。
単語リスト
1) Sanity check #1 (only 4 valid solutions: HES, SEH, ESH or HSE)
SEE, SHE
2) Sanity check #2 (16 valid solutions, of which 4 are optimal: COLD, DOLC, DLOC or CLOD)
COLD, CLOD
3) Sanity check #3
ACCENTS, ACCESS
4) Warm-up
RATIO, NATION, NITRO, RIOT, IOTA, AIR, ART, RAT, TRIO, TRAIN
5) Pangram
THE, QUICK, BROWN, FOX, JUMPS, OVER, LAZY, DOG
6) Common prepositions
TO, OF, IN, FOR, ON, WITH, AT, BY, FROM, UP, ABOUT, INTO, OVER, AFTER
7) Common verbs
BE, HAVE, DO, SAY, GET, MAKE, GO, KNOW, TAKE, SEE, COME, THINK, LOOK, WANT, GIVE, USE, FIND, TELL, ASK, WORK, SEEM, FEEL, TRY, LEAVE, CALL
8) Common adjectives
GOOD, NEW, FIRST, LAST, LONG, GREAT, LITTLE, OWN, OTHER, OLD, RIGHT, BIG, HIGH, DIFFERENT, SMALL, LARGE, NEXT, EARLY, YOUNG, IMPORTANT, FEW, PUBLIC, BAD, SAME, ABLE
9) Common nouns
TIME, PERSON, YEAR, WAY, DAY, THING, MAN, WORLD, LIFE, HAND, PART, CHILD, EYE, WOMAN, PLACE, WORK, WEEK, CASE, POINT, GOVERNMENT, COMPANY, NUMBER, GROUP, PROBLEM, FACT
10) POTUS
ADAMS, ARTHUR, BUCHANAN, BUREN, BUSH, CARTER, CLEVELAND, CLINTON, COOLIDGE, EISENHOWER, FILLMORE, FORD, GARFIELD, GRANT, HARDING, HARRISON, HAYES, HOOVER, JACKSON, JEFFERSON, JOHNSON, KENNEDY, LINCOLN, MADISON, MCKINLEY, MONROE, NIXON, OBAMA, PIERCE, POLK, REAGAN, ROOSEVELT, TAFT, TAYLOR, TRUMAN, TRUMP, TYLER, WASHINGTON, WILSON
11) Transition metals
SCANDIUM, TITANIUM, VANADIUM, CHROMIUM, MANGANESE, IRON, COBALT, NICKEL, COPPER, ZINC, YTTRIUM, ZIRCONIUM, PLATINUM, GOLD, MERCURY, RUTHERFORDIUM, DUBNIUM, SEABORGIUM, BOHRIUM, HASSIUM, MEITNERIUM, UNUNBIUM, NIOBIUM, IRIDIUM, MOLYBDENUM, TECHNETIUM, RUTHENIUM, RHODIUM, PALLADIUM, SILVER, CADMIUM, HAFNIUM, TANTALUM, TUNGSTEN, RHENIUM, OSMIUM