23
Moby Dickを書きます
これは、ハーマンメルビルのMoby-Dickのテキストを含む1.2Mb ASCIIテキストファイルです。または、クジラ。あなたの仕事は、このファイルに一度に1文字ずつ与えられるプログラムまたは関数(またはクラスなど-以下を参照)を書くことであり、各ステップで次の文字を推測する必要があります。 これはコードチャレンジです。あなたのスコアは 2*L + E ここLで、送信のサイズはバイト単位で、E誤って推測した文字数です。最も低いスコアが勝ちます。 さらなる詳細 送信するのは、複数回呼び出されるか、呼び出されるか、データを送信するプログラムまたは関数(など)です。(正確には1215235回。)n 番目に呼び出されると、orのn 番目の文字が与えられ、(n + 1)番目の文字に対する推測を出力する必要があります。スコアの構成要素は、誤って推測した文字の総数です。whale.txtwhale2.txtE ほとんどの送信では、呼び出しと呼び出しの間に状態を保存する必要があります。これにより、呼び出し回数と以前の入力が何であったかを追跡できます。これを行うには、外部ファイルに書き込むstaticか、グローバル変数を使用するか、関数ではなくクラスを送信するか、状態モナドを使用するか、その他の言語で機能するものを使用します。送信には、最初の呼び出しの前に状態を初期化するために必要なコードを含める必要があります。 プログラムは決定的に実行する必要があるため、同じ入力が与えられると常に同じ推測が行われます(したがって、常に同じスコアが取得されます)。 回答には、提出物だけでなくE、スコアの一部を計算するために使用したコードも含める必要があります。これは提出物と同じ言語で書かれている必要はなく、そのバイト数にカウントされません。読みやすくすることをお勧めします。 提出物とこのスコア計算プログラムの間のインターフェースに関しては、プログラムが常に次の入力バイトを受け取る前に1バイトの出力を与える限り、何でも問題ありません。(たとえば、すべての入力を含む文字列を渡すだけで、すべての出力を含む文字列を取得することはできません。) 実際にテストプログラムを実行し、エントリを提出する前にスコアを計算/検証する必要があります。提出物のスコアが検証するには遅すぎる場合、原則としてそのスコアが何であるかを知っていても、競争する資格がありません。 Lスコアの構成要素は、コードゴルフチャレンジの通常のルールに従って計算されます。提出物に複数のファイルが含まれる場合は、その場合のスコアリングとディレクトリ構造に関する規則に注意してください。コードで使用するデータはすべてLスコアに含める必要があります。 あなたは、既存のライブラリをインポートすることがありますが、他の外部ファイルをロードしないかもしれない、とあなたのコードがアクセスすることはできませんwhale.txtかをwhale2.txt上記以外の方法でファイルします。事前学習済みのニューラルネットワークやその他の統計データのソースをロードすることはできません。(ニューラルネットワークを使用しても構いませんが、提出物に体重データを含めて、バイトカウントにカウントする必要があります。)何らかの理由で、言語またはライブラリにMoby Dickのテキストの一部またはすべてを提供する機能が含まれている場合、その機能を使用することはできません。それ以外に、言語またはその標準ライブラリの一部である限り、テキスト処理、予測、または圧縮に関連する機能を含む、他の任意の組み込み機能またはライブラリ機能を使用できます。統計データのソースを含む、よりエキゾチックで特殊なルーチンの場合、それらを自分で実装し、バイトカウントに含める必要があります。 一部の提出物には、それ自体がコードによって生成されるコンポーネントが含まれる可能性があります。その場合は、それらを生成するために使用されたコードを回答に含めて、その仕組みを説明してください。(このコードが送信を実行するために必要でない限り、バイトカウントには含まれません。) 歴史的な理由から、ファイルには2つのバージョンがあり、いずれかを回答に使用できます。ではwhale2.txt改行は段落の最後にのみ表示されますので(上記のリンク)テキストは、ラップされていません。オリジナルでwhale.txtは、テキストは74文字の幅に折り返されているため、各行の終わりとテキストを予測する必要があります。これは挑戦をより厄介にしますのでwhale2.txt、新しい答えのために推奨されます。両方のファイルは同じサイズで、1215236バイトです。 要約すると、すべての回答には次の事項を含める必要があります。 あなたの提出自体。(コードと、それが使用するデータファイル-大きい場合、これらはリンクになります。) コードの仕組みの説明。I / Oメソッドと、次の文字を予測する方法を説明してください。あなたのアルゴリズムの説明は重要であり、良い説明は私から賞金を得るでしょう。 スコアの評価に使用したコード。(これが以前の回答と同じ場合は、リンクするだけです。) 提出物の生成に使用したコードとそのコードの説明。これには、パラメーターの最適化、データファイルの生成などに使用したコードが含まれます(これはバイトカウントにはカウントされませんが、回答に含める必要があります)。 リーダーボード コードスニペットを表示 var QUESTION_ID=152856,OVERRIDE_USER=21034;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var …