タグ付けされた質問 「code-challenge」

コードチャレンジは、他のスコアリングタグ(コードゴルフなど)ではカバーされない客観的な勝ち基準でプログラミングパズルを解くクリエイティブな方法の競争です。

3
Brainfuckのビット演算子
あなたの仕事は、以下の二項演算子のそれぞれに対して1つのBrainfuckプログラムを作成することです。各プログラムは、入力から1つまたは2つの8ビット数(AおよびB)を取得し、指定された操作を計算する必要があります。 A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A 5つすべてを実装する必要はありません。スコアは次の方法で計算されます。 #totalCharacters + {4000 * #problemsNotCompleted} したがって、有効なスコアはゼロ(最高)から20,000(何も完了していない)までです。 結果を保存する場所や、入力を保存するかどうかは気にしません。8ビットセル、および必要なだけの空のセルを右側にのみ想定します。 最適なメモリ位置に番号がすでにあると仮定することができるので、IO操作を心配する必要はありません。
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

10
歌のコーディング-選択したプログラミング言語で音楽の歌詞を表現する[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックコードゴルフスタックExchange用。 5年前に閉鎖されました。 読んだときに曲の歌詞となる、選択した言語でプログラムを作成します。これは、必要があり、エラーなしでコンパイルして実行することができ、有効なプログラムであること。画面にすべての歌詞を技術的に印刷することもできますが、スタイルを使用し、可能な限り文字列リテラルを避けることをお勧めします。 これ自体は難しいことを考えると、歌詞で読みやすくなることを考慮しない定型コードの1つのセクションを書くことができます。ただし、コードのブロックが始まると、それは歌の歌詞として読み取る必要があり、歌が終了するまで中断することはできません。コメントを使用して、ソングコードの開始と終了を示すことができます。コードを読むように歌詞自体も指定してください。書かれたものから遠く離れない限り、あなたはあなたの解釈に「リベラル」であることができます、さもなければそれはあなたにポイントを要します。 部分的な歌の歌詞は許可されますが、歌全体に言葉を付けると二重のポイントが得られます。審査は3つのカテゴリに分けられます。 10ポイント-独創性 10ポイント-歌の難易度 20ポイント-コードでのその歌の表現。 提出ごとに、以下のコメントでスコアをお伝えします。回答を編集する場合は、コメントインジケータを教えてください。それに応じて再評価します。ただし、公平にするために、各再評価では合計スコアから2ポイントが差し引かれます。 例は次のとおりです。 public class Song { public String play() { // Song begin try { if(this instanceof TheRealLife || this instanceof JustFantasy) { throw new InALandSlide(); } } catch (InALandSlide e) { } return "No \"FromReality\""; // Song end } …

4
忙しい脳ビーバー
できるだけ多くのステップを実行しますが、無限ループしない256文字以下のBrainfuckプログラムを作成します。プログラムは入力を受け付けません。 すなわち: 右側に無数のセルがあると仮定します。 A <左端のセルに何もしません。 A -セル値がゼロセットセルです255。 命令は+-<>.すべて、実行時に1つのステップとしてカウントされます。 とき[かが]検出され、それが一歩としてカウントされます。ただし、条件が真であり、制御フローがジャンプする場合、対応する]または再びステップとしてカウントされ[ません。 最も多くのステップを踏むソリューションが勝ちです。 ソリューションにある種のパターンがある場合、同様の長さのプログラムnがとるステップ数の関数を与えることは歓迎されますが、必須ではありません。 指示を数えるために、この修正されたインタープリターを使用できます: 例: ++[-] 検出された命令は++[-]-]であり、プログラムは7ステップ実行されました。

2
BlackJack KOTHコンテスト
ブラックジャック 元のKOTHチャレンジに取り組んでいたので、別のチャレンジを思いつきました。私にとって、これらのAIチャレンジの楽しみは、非常にシンプルなゲームを微妙にプレイする比較的シンプルなボットを改良することです。カードゲームの確率的性質のため、ブラックジャックはTPDと同様に興味深いKOTHゲームになる可能性があると思います。 すべてのルールは、このウェブサイトのBlackJack with shoesの説明に基づいています カードとデッキに関する規則 ボットは4人の競技者と1人のディーラーのテーブルでプレーします 1つの靴(シャッフルデッキ)は、すべてのプレイヤーとディーラーによって共有されます使い果たされるまで、その時点で新しいランダムにシャッフルされたデッキが追加され、プレイが続行されます。ボットは(この時点では)この新しいデッキの追加について通知されません。この機能の欠如が十分な苦痛/トラブルを引き起こす場合、そのような通知は追加されるかもしれません。 ラウンドごとに10のバイインがあり、カードは無料です パーフェクト/理想的なハンドのスコアは21です すべてのフェイスカードの値は10です すべての数字カードはその価値があります エースは11または1の価値があります。これは、ボットではなくフレームワークによって自動的に処理されます。 あたりとしてのルール、すべてのプレイヤーのカードがフェイスアップを配らと表示されています。ディーラーのカードの1つは裏向きで、もう1つは表向きです。 得点 エースを11として使用する21を超えるスコアは、エースの値を1に強制的に下げます。 21を超えるスコアは、ボットを「バスト」する21のしきい値より下に強制することはできません。 ディーラー ディーラーは彼がバストするまで引きます、または17 点を超えた時点で、彼は立つことを強制されます ベットとチップ 各ラウンドの開始時に、バイイン10のは、そう、最低があり、充電されている株式 10のは、最小賭け 1のNOTE -賭けは賭けの引数の絶対値であるので、気にしないでください負の賭けをしようとしています。 バイインを買う余裕のないボットはコンテストから除外されます 賭けをするとき、ボットは持っているチップよりも多く賭けることはできません 賭けが可能であれば、賭けたチップはボットから即座に取り除かれ、賭け金に追加されます ベットに勝つと、ボットに2xチップがベットされます。ただし、ボットのチップからベットが差し引かれるため、ボットは偶数になり、ベットの1倍になります。 ボットはディーラーのスコアよりもスコアが大きい場合にのみベットに勝ちます ゲームプレイ内訳 片手 ゲームが開始されると、各プレーヤーは1枚のカードを繰り返し配られ、チップから10ドルのバイイン料金/最小ベットが差し引かれます。 ディーラーが描く 2回目のパスが行われ、別のカードがすべてのプレイヤーに配られます。 ディーラーが描く 次に、(それらが配られたのと同じ順序で)各ボットは、「プログラマインタフェース」セクションで説明したように実行されなければならない行動を起こすか、立っています。ベットは動きと見なされます。ベットがボットのさらなる移動能力に影響しないことに注意してください。ベットしてからカードを引くことは非常に可能であり、複数のカードを引いて、立っている前にそれらをベットすることもできます。 すべてのボットが破壊または立ち上がると、ディーラーは17のしきい値までプレイします ボットのスコアはディーラーのスコアと比較され、ベットは勝ち負けになります ワンラウンド 5つのハンドを構成すると見なされます。ハンド間では、競技者のリストがソートされてプレーヤーが削除され、さらに処理されて、すべてのボットが同じ数のハンドをプレイするようにします(エントリ数が4つのボットテーブル間で均等に分割されないという事実の規定) )。 プログラマーのインターフェースと法的動き CardSharkファイルに記載されているとおり: # DOCUMENTATION # INPUT SPECIFICATION # …

1
自分の言語でPCREを実装します。
注:これを自分で試した後、すぐにこれがどのような間違いであるかを認識しました。そのため、ルールを少し変更しています。 最低限必要な機能: 文字クラス(.、\w、\W、など) 乗算器(+、*、及び?) 単純なキャプチャグループ あなたの課題は、次の条件に従って、選択した言語でPCREを実装することです。 あなたはないかもしれないであなたの言語のネイティブ正規表現機能を使用どのような方法。サードパーティのRegExライブラリも使用できません。 エントリには、PCRE仕様をできるだけ実装する必要があります。できるだけ。 プログラムは、入力として2行を受け入れる必要があります。 正規表現 照合する文字列入力 あなたのプログラムは、その出力で示す必要があります: RegExが入力文字列のどこかに一致したかどうか キャプチャグループの結果 勝者は、仕様の多くを実装するエントリでなければなりません。できるだけ。同点の場合、勝者は私が判断した最も創造的なエントリーとなります。 編集:いくつかのことを明確にするために、入力と予想される出力の例をいくつか示します。 入力: ^ \ s *(\ w +)$ こんにちは 出力: 一致:はい グループ1:「こんにちは」 入力: (\ w +)@(\ w +)(?:\。com | \ .net) sam@test.net 出力: 一致:はい グループ1:「サム」 グループ2:「テスト」

5
バイナリツリーを解放する
したがって、コンピューターサイエンスの基本的な概念を読む前に。 バイナリツリーは、動的に割り当てられた構造です(通常、順序付けられたストレージに使用されます)。 その性質のため、バイナリツリーの走査は通常再帰的です。 これは、ループの2つの方法がある場合、(ループを介した)線形トラバーサルが自然ではないためです。 再帰的:これは、それ自体を呼び出す関数を意味します。 昔ながらの言語では、メモリ管理には手動のメモリ管理が必要です。 マニュアル:自分でやらなければならないことを意味します。 手動でメモリ管理を行う場合、実際にツリーの各メンバーを解放するように、基礎となるシステムに依頼する必要があります。 無料:メモリをグローバルpoosに回復し、再利用できるようにします。メモリが不足することはありません。 解放:これは、関数free()を呼び出して、回復したいポインターを渡すことによって行われます。 ポインター:仮想スティックのようなものです。最後はメモリです。メモリを要求すると、メモリのあるポインタ(仮想スティック)が与えられます。完了したら、ポインター(仮想スティック)を返します。 再帰的な解決策: freeTree(Node* node) { freeTree(node->left); freeTree(node->right); free(node); } 問題は、再帰は同じ関数を繰り返し呼び出していることを意味するということです。これによりスタックが大きくなります。スタックを大きくすると、より多くのメモリが使用されます。ツリーを解放する理由は、より多くのメモリを使用してメモリを戻す必要があるためです(メモリの両方のビットを取り戻す場合でも)。 最後に質問: したがって、問題の中心は、上記の再帰バージョンを線形ソリューションに変換することです(したがって、メモリを使用する必要はありません)。 ノードタイプを指定します typedef struct Node Node; struct Node { Node* left; Node* right; }; これらのノードのツリーを解放する関数を作成します。 制限事項: 再帰を使用できません(間接的にも) 追跡用のダイナミックスペースを割り当てることができません。 O(n)ソリューションがあることに注意してください 勝者: 最高の複雑さ。 タイブレーク1:最初の送信 タイブレイク2:キャラクターの最小数。

2
圧縮率が最も低い画像を作成する
「写真は千の言葉に値する」-それで、古いことわざは言う。平均的な単語の長さは約4文字なので、写真は4kBの情報を伝えます。しかし、情報ではなく、どのくらいのエントロピーが絵で伝えることができますか? あなたの仕事は、可能な限り最高のエントロピーで、サイズがちょうど4,000バイトのイメージを生成することです。選択した任意の言語、ライブラリ、または画像形式を使用でき、ここに画像をアップロードする限り、コンソールまたはファイルに出力できます。 得点 スコアは、DEFLATEアルゴリズムとデフォルト設定(具体的にはcommand)を使用して、GNU tarバージョン1.28およびgzipバージョン1.6で画像を圧縮した場合の圧縮率(4000÷圧縮サイズ)ですtar -czvf out.tar.gz image。最小の圧縮率が優先されます。

4
Pythonの128バイト以内で可能な限り低いパイリントスコアを取得する
pylintには、コードに与えるスコアの下限はありません。次のメトリックを使用してコードをスコアリングします。最大スコアは10です。 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) python 3.6を使用して、次のようなプログラムを作成してみてください。 コマンドライン(つまりpython script.py)から実行すると「Hello World」を出力し、他の出力は出力しません。 から可能な最低スコアを取得しpylintます(デフォルト設定)(つまりpylint script.py) 厳密に128バイト以下のサイズです。

2
一般化ポリオミノのカウント
この課題では、スナブスクエアタイル上の擬似ポリフォームを数える必要があります。 このシーケンスはまだOEISに存在しないため、このシーケンスのできるだけ多くの項を計算するという課題があります。 更新:これはOEISにA309159として追加されました。n個のセルを持つスナブ正方形タイル上の一般化されたポリフォームの数。 定義 スナブ正方形タイルは、正三角形と正方形で構成される平面の半規則的なタイルです。 スナブ正方形タイル上の擬似ポリフォームは、ポリオミノに似た、共有された辺に沿ってこれらの三角形と正方形を結合することによって構築された平面図です。6セルおよび8セルの擬似ポリフォームの例を次に示します。 例 以下のためにn = 12つの1セル擬似polyforms、すなわち正方形および三角形があります。 以下のためにn = 22つの2セル擬似polyforms、三角形及び二つの三角形を有する、すなわち正方形があります。 以下のためにn = 34つの3セル擬似polyformsがあります。 チャレンジ この課題の目標は、このシーケンスで可能な限り多くの項を計算することです。この2, 2, 4, ...項では、n番目の項は回転と反射までのnセルの擬似ポリフォームの数です。 好きなだけコードを実行します。このチャレンジの勝者は、シーケンスのほとんどの用語とコードを投稿するユーザーです。2人のユーザーが同じ数の用語を投稿すると、最後の用語を最も早く投稿した人が勝者となります。 (このシーケンスがOEISにまだ存在しないことを証明するのに十分な既知の用語があれば、OEISにエントリを作成し、必要に応じて共著者として貢献者をリストします。)

13
(m)文字を使用せずにŋarâþcrîþアルファベットの歌を出力する
あなたの目標は、入力を取らずに次のテキストを出力するプログラムを作成することです。 ca e na ŋa va o sa; þa ša ra la ła. ma a pa fa ga ta ča; în ja i da ða. ar ħo ên ôn ân uħo; carþ taŋ neŋ es nem. elo cenvos. ただし、問題がありLます。ソースの各文字(Unicodeの一般的なカテゴリがで始まる文字)ごとに、20文字のペナルティが発生します。(参照用に、印刷されるテキストは81文字です。) 以下のPerl 6コードは145バイトと84文字であるため、1,845のスコアを取得します。 say "ca e na ŋa va o sa; þa …

21
最長増加部分文字列
正の整数のリストが与えられたら、増加している(厳密ではない)最長の連続したサブリストの長さを見つけるコードを記述します。これは、各要素が最後の要素以上であるような最長のサブリストです。 たとえば、入力が次の場合: [1,1,2,1,1,4,5,3,2,1,1][1,1,2,1,1,4,5,3,2,1,1][1,1,2,1,1,4,5,3,2,1,1] 最長増加サブリストは次のようになり[1,1,4,5][1,1,4,5][1,1,4,5]あなたは出力だろうので、444。 回答は、ソースをバイトのリストとして取得し、そのリストの最も長く増加しているサブリストの長さを見つけることによってスコアリングされます。より低いスコアが目標です。全体のバイト数が少ないプログラムを優先して、関係が壊れています。

10
ゴルフの絵文字
前書き 今日の課題(この課題に触発された)は、キャラクターを再利用せずに、さまざまなアスキーの絵文字を出力するスニペット、関数、または完全なプログラムを多数書くことです。 チャレンジ このチャレンジの有効なアスキーの絵文字のリストは、こことこの投稿の下部にあるコードブロックの両方にあります。 各スニペットは、提出物の別々の行にある必要があります。 すべてのスニペットに対して1つの言語のみを使用できます。 各スニペットは、stdoutに出力するか、絵文字とオプションの末尾の改行を含む文字列を返す必要があります。 すべてのスニペットで1つの文字を複数回使用することはできませんが、1つのスニペットで複数回使用することは問題ありません。 いずれのスニペットでも、言語のコードページ(または言語がカスタムコードページを使用しない場合はASCII)にない文字を使用することはできません。別の言い方をすれば、1バイトでエンコードできる文字のみに制限されます。 スニペットは入力を取得できません。 標準の抜け穴は許可されていません。 スコアは、上記のテキストファイルでそれぞれ異なるASCII絵文字を印刷する一意のスニペットの数です。 最高得点が勝ちます! 幸運を! 許可された絵文字、スペースで区切られた: :-) :) :-] :] :-3 :3 :-> :> 8-) 8) :-} :} :o) :c) :^) =] =) :-D :D 8-D 8D x-D xD X-D XD =D =3 B^D :-)) :-( :( :-c :c :-< :< …

11
バランスのとれたゼロワンエンコーディング
仕事 A-Z独自のお気に入りのスキームを使用して、ゼロと1のみを使用して、大文字のアルファベット()のみで構成される文字列をエンコードします。しかし、ルールはそれほど単純ではありません! ルール プログラム/関数は、長さ8の有効な入力文字列を正しく処理する必要があります。 結果は、すべての入力に対して同じ長さでなければなりません。 結果は、入力ごとに異なる必要があります。 結果はできるだけ短くする必要があります。 結果はゼロと1のバランスがとれている必要があります(ゼロの数と同様の数があります)。それらは等しくする必要はありません(つまり、完全にバランスが取れています)が、あなたのスコアはそのために罰せられます。 エンコードをデコードするプログラム/機能を提供する必要はありません。 入出力 の代わりに26個の異なる印刷可能なASCII文字のセットを受け入れることを決定できA-Zます。 およびの代わりに、異なる印刷可能なASCII文字の任意のペアを出力することを決定できます。01 ビット文字列の代わりに整数を出力することはできません。これは、先頭にゼロが含まれている可能性があり、実際にルール2を満たしているかどうかが不明だからです。 デフォルト(A-Z入力および01出力)から逸脱することに決めた場合は、サブミットで入力/出力文字セットを指定する必要があります。 得点 基本スコア:コードサイズ、またはプログラムが空の場合は1。 罰則 長さのペナルティ:乗算 1.5 ** (encoded length - 42) 短くしてもボーナスはありません。42は、アルファベットサイズ26の8長ストリングの完全にバランスの取れたエンコードの最小長です。 不均衡の場合のペナルティ:乗算2 ** max(abs(ones - zeros) for every valid input of length 8)、ここでonesおよびzerosは、それぞれ各出力の1および0のカウントです。 提出には、ペナルティ値に関する最悪の例(入力/出力)または理論的な説明を表示する必要があります。 最も低いスコアが勝ちます。 提出例 架空のエソラン、0バイト、スコア74733.8906 空のプログラムが入力文字のすべてのASCIIコードをバイナリで出力する仮想のエゾランを次に示します。 たとえば、AAAAAAAA入力として指定すると、プログラムは1000001連続して8回印刷します10000011000001100000110000011000001100000110000011000001。 入力アルファベットはに選択されますCEFGIJKLMNQRSTUVXYZabcdefh。この方法では、すべての文字はバイナリで7桁に変換され、ゼロから1までのカウントは文字ごとに1つだけ異なります(バイナリに変換すると、すべて3つの1と4つの0があります)。 出力の長さは常に56であり、最悪の場合の不均衡はのような入力で発生し、CCCCCCCCゼロは1より8倍多く出現します。 したがって、この提出のスコアは1.5 ** (56 - 42) …

5
1つから2つを取得
この質問で見たように、複雑な論理ステートメントは、一般化された掃海艇の単純な接続詞で表現できます。ただし、一般的な掃海艇にはまだ冗長性があります。 これらの冗長性を回避するために、「Generalized-1 Minesweeper」という新しいゲームを定義します。 Generalized-1 Minesweeperは、任意のグラフで実行されるバージョンの掃海艇です。グラフには、「インジケータ」または「値」という2種類の頂点があります。値はオンまたはオフ(地雷または不発地)のいずれかになりますが、その状態はプレイヤーに知られていません。インジケータは、隣接するセルの1つが正確にオンであることを示します(鉱山)。インジケーターは地雷としてはカウントされません。 たとえば、一般的なマインスイーパの次の掲示板では、セルAとBが両方とも地雷であるか、どちらも地雷ではないことがわかります。 (図ではインジケーターは灰色でマークされ、値は白です) オフになっている値をクリックしてインジケーターを表示する通常の掃海艇とは異なり、一般化された掃海艇にはそのようなメカニズムはありません。プレーヤーは、グラフのどの状態でインジケータを満たすことができるかを単純に決定します。 あなたの目標は2、Generalized-1 Minesweeper を作ることです。Generalized-1 Minesweeperで構造を構築し、8つの特定のセルに対して、値のすべての可能な構成でちょうど 2つのセルがオンになるようにします。これ2は、従来の掃海艇と同じように動作することを意味します。ソリューションを作成するとき、値セルに特定の値を念頭に置いてはいけません。(H.PWizの質問への回答では、一部の値セルが状態から推定できる場合があります) 得点 回答は、最終グラフの頂点の数から8(8入力の場合)を引いたものでスコア付けされ、スコアが低いほど優れています。このメトリックで2つの回答が同点の場合、タイブレーカーはエッジの数になります。

4
パスワードを見つける
通常のN桁のコンビネーションロックは、N個の回転ディスクで構成されています。各ディスクには数字の0から9が順番に刻まれており、それらを開くには正しいパスワードに変える必要があります。明らかに、パスワードがわからない場合は、ロックを解除する前に最大10 N回試行する必要があります。それは面白くない。 それでは、コンビネーションロックの変形を考えてみましょう。距離を明らかにするロックと名付けてください。 距離を明らかにするロックを開く試みが失敗するたびに、ロックを解除するための最小数の動きに応答します。 1つの動きは、1つの位置による回転として定義されます。たとえば、890〜の1つの動き899と〜の9つの動きが137必要952です。 チャレンジ パスワードが不明な距離を明らかにするロックがある場合は、プログラムが長くなりすぎないようにしながら、最小限の試行回数(移動ではない)でロックを開こうとします。 ルールとスコアリング stdinから入力し、stdoutに出力する完全なプログラムを作成する必要があります。プログラムは次のように入出力を行う必要があります。 Start Input an integer N (number of digits) from stdin Do Output a line containing decimal string of length N (your attempt) to stdout Input an integer K (response of the lock) from stdin While K not equal 0 End プログラムは最大N …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.