ノートパソコンでのタイピングの次の革命は、SwiftKeyによって2014年4月1日にリリースされました。しかし、私は最初にスワイプするナノクローンを書く人になりたいのですが、スワイプテキストからリアルテキストライブラリへの良いスワイプを見つけることができず、それらを待つことができないので、私はここで尋ねています。
仕事
スワイプテキストを取り込んで、同等の実テキストを出力するプログラムを作成します。例:
Input: hgrerhjklo
Output: hello
ユーザーが行う場合:
他の例:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
ルール
- プログラムは、stdinまたはargvでスワイプされた「単語」を1つ受け取ります。
- スワイプ入力の最初と最後の文字は、実際の単語の最初と最後の文字と同じです
- ユーザーが合理的に直線を作成すると想定できますが、サンプルデータを使用してこれを確認できます(サンプルデータを作成し、最終テストデータを作成します)
- 入力があいまいな場合は、どちらかの出力を選択できますが、テストデータからすべてのあいまいさを排除しようとします
- この単語はこの単語リストに含まれます(ただし、スワイプされます)。単語リストは現在のディレクトリにあり、読み取ることができます(改行区切り、名前付き
wordlist
、拡張子なし)。 - スワイプには小文字のアルファベットのみが含まれます
- ユーザーがキーで一時停止すると、スワイプに重複した文字が含まれる場合があります
- プログラムは標準出力に出力する必要があります(大文字と小文字は区別されません)
- プログラム
0
は戻りコードとして戻らなければなりません - 実行コマンド、コンパイルコマンド(必要な場合)、名前、使用する入力パスを指定する必要があります
- 標準的な抜け穴が適用されます(ただし、助けにはならない場合があります)
- 非組み込みライブラリは許可されていません
- 確定的、非ゴルフ/難読化ソリューションが望ましい
- ファイルの書き込み、ネットワーキングなどはありません
- コードは1秒以内に実行する必要があります(コードは単語ごとに1回実行されます)
- スコアリングの実行は、4つの仮想コード(2つの実際のコード)を備えたIntel i7 Haswellプロセッサーで実行されるため、必要な場合はスレッドを使用できます。
- 5000バイトの最大コード長
- 使用する言語には、Linux(Arch Linux、それが重要な場合)で利用可能な無料(試用版ではない)バージョンが必要です。
受賞基準
- 勝者は、最も正確なソリューションです(提供されたテストリストを使用して、制御プログラムによってスコア付けされます)。
- 人気はタイブレーカーです
- スコア表は数日ごとに更新されます
- タイムアウトとクラッシュは失敗としてカウントされます
- 人気に応じて、このチャレンジは2週間以上続きます
- 最終的なスコアリングでは、ランダムに選択された異なる単語リスト(同じ単語リストからの同じ長さ)を使用します
その他
- 制御プログラムを使用してプログラムをテストできます
- せっかちで、プログラムをすばやく更新/追加したい場合は、https://github.com/matsjoyce/codegolf-swipe-type/blob/masterで問題を開始するか、リクエストをプルしてください。
- エントリはhttps://github.com/matsjoyce/codegolf-swipe-type/blob/master/entriesで管理されています
- 各プログラム実行のログは、https://github.com/matsjoyce/codegolf-swipe-type/blob/master/logsで管理されています
- https://github.com/matsjoyce/codegolf-swipe-type/blob/master/log.logのメインログ
- 各キーの位置は
keypos.csv
、と呼ばれる現在のディレクトリ内のcsvファイルとして提供され、xおよびyの値はQ
(https://github.com/matsjoyce/codegolf-swipe-type/blob/master/を参照してください) keypos.csv) - 各キーは1.5 x 1.5 cm(keypos.csvと同じ単位)
現在のスコアボード
Three Pass Optimizer:Errors: 0/250 Fails: 7/250 Passes: 243/250 Timeouts: 0/250
Corner Sim: Errors: 0/250 Fails: 9/250 Passes: 241/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 17/250 Passes: 233/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 19/250 Passes: 231/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 63/250 Passes: 187/250 Timeouts: 0/250
Corner Sim: Errors: 0/250 Fails: 10/250 Passes: 240/250 Timeouts: 0/250
Three Pass Optimizer:Errors: 2/250 Fails: 14/250 Passes: 234/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 16/250 Passes: 234/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 17/250 Passes: 233/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 67/250 Passes: 183/250 Timeouts: 0/250
ファイナルラン
Corner Sim: Errors: 0/250 Fails: 14/250 Passes: 236/250 Timeouts: 0/250
Three Pass Optimizer:Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 20/250 Passes: 230/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 23/250 Passes: 227/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 30/250 Passes: 220/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 55/250 Passes: 195/250 Timeouts: 0/250
みんなとhgfdsasdertyuiopoiuuy swertyuiopoijnhgによくやった!
l
、倍になりません。