プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

11
非負のものから整数のペアを生成します
N入力として負でない整数を取り、2つの整数(負、ゼロまたは正)Xおよびを出力または返すプログラムまたは関数を作成する必要がありYます。 整数は無限に多く存在するため、数学的な意味で使用されます。 実装された関数は全単射でなければなりません。これは、毎回N異なるX Yペアを出力しX Yなければならないことを意味し、すべてのペアはいくつかの入力に対してN出力される必要がありますN。 ... ┌─────┬─────┬────┬────┬────┐ │-2 -2│-2 -1│-2 0│-2 1│-2 2│ ├─────┼─────┼────┼────┼────┤ │-1 -2│-1 -1│-1 0│-1 1│-1 2│ ├─────┼─────┼────┼────┼────┤ ... │0 -2 │0 -1 │0 0 │0 1 │0 2 │ ... ├─────┼─────┼────┼────┼────┤ │1 -2 │1 -1 │1 0 │1 1 │1 2 │ ├─────┼─────┼────┼────┼────┤ │2 -2 │2 …
25 code-golf  math  number 

19
Dotty文字列の評価
文字.とのみを含む奇数長の文字列を取り込むプログラムを作成し:ます。最初は空のstackを使用して、次のようにこの文字列から数値を生成します。 文字列内のすべての文字cについて(左から右へ)... 場合cがあり.、スタックが2つの未満の要素を有し、スタックに1を押してください。 場合cがあり.、スタックは、2つの以上の要素を有し、スタックから2つのトップの値をポップし、スタックにその和を押します。 場合cがあり:、スタックが2つの未満の要素を有し、スタックに2を押してください。 場合cがあり:、スタックは、2つの以上の要素を有し、スタックから2つのトップの値をポップし、スタックにそれらの製品を押し出します。 結果の数値は、スタックの一番上の値です。プログラムは、この番号を標準出力に出力する必要があります(オプションの末尾の改行を使用)。 (少しの分析では、文字列の長さが偶数でない限り、残っている数字は1つだけであることが示されています。そのため、これらは無視されます。実際、スタックには2つ以上の要素がありません。) たとえば、の番号::...:.:.は9です。 2 1 2 2 /______ stack just after the character below is handled 2 2 4 4 5 5 7 7 9 \ : : . . . : . : . <-- string, one character at a time 健全性チェックとして、長さ1、3、および5のすべての文字列の数値を次に示します。 . …

3
この無限の文字列の実行はどこにありますか?(CCCCCCが見つかりました!)
文字列から始めて、ABC最後の半分を繰り返し自分自身に追加した結果を考慮します(長さが奇数の場合は大きい半分を使用します)。 進行状況を取得します。 ABC ABCBC ABCBCCBC ABCBCCBCCCBC ABCBCCBCCCBCBCCCBC etc... Sこの手順が永遠に繰り返される結果として生じる無限の文字列(またはシーケンス)を表現しましょう。 ゴール このコードの挑戦目標は、の実行が最初に出現する位置のインデックスを見つけることですCでs」をS。 最初は簡単です:C最初のインデックスで発生した2、CCで4、CCCで7、CCCCで26はなく、CCCCCインデックスにすべての方法です27308!その後、私の記憶がなくなります。 勝者は、ほとんどの実行インデックスを(順に、順番にC)正しく生成する提出物になります。あらゆる種類のアルゴリズムを使用できますが、基本的なブルートフォースを使用していない場合は、必ず説明してください。入力と出力は、理解しやすい任意の形式にすることができます。 重要な注意:のSすべての実行が実際に含まれているかどうかは公式にはわかりませんC。この質問は、作者も見つけられなかった数学スタック交換に関するこの質問から派生していCCCCCCます。ここの誰かができるかどうか興味があります。(その質問は、トピックに関する私の元の質問に基づいています。) すべての実行がC発生するわけではないことを証明できる場合S、この質問は無効になるため、自動的に勝ちます。誰もCCCCCCそれを証明も発見もできない場合、勝者はインデックスの最高下限CCCCCC(または未解決の最大のランCCCCCCが見つかった場合)を得ることができる人になります。 更新:天文インデックス2.124 * 10 ^ 519で見つかったisaacgとresへの名誉ある賞賛CCCCCC。このレートCCCCCCCでは、ブルートフォースに依存する方法で見つけることは想像できません。お疲れ様でした!

1
2つのウィキペディアの記事間のルートを見つける
前書き 最近、私はたくさんの友人と空を飛び回っていて、退屈して何もすることがなかったので、「ゲーム」を「発明」しました私はそれを見たことがなかったが、それを発明しなかった)。「ゲーム」という言葉を引用符で囲んだのは、それが実際のコンピューターゲームではなく、ウィキペディアでプレイされているためです。 遊ぶのは本当に簡単です。誰かがウィキペディアの記事を目標として選択します。この例では、Code Golfを想定します。すべてのプレイヤーは、ランダムな記事から開始し(サイドバーの[ ランダムな記事]を押すか、この URLに移動します)、現在の記事のリンクされた記事のみを使用して、できるだけ早く「目標」に到達する必要があります。ルールが含まれます: 検索機能は許可されていません(明らかに) 記事のメインテキスト(具体的には内のすべてのテキスト<div id="bodyContent">)内のリンクのみをクリックできます。 ランダムページまたは発生した他のページに有効なリンク(デッドリンク、ループなど)がないか、リンクがまったくない場合は、再度ロールバックできます。 チャレンジ ここがあなたの出番です:残念ながら、私はこのゲームにはかなり苦手ですが、私は汚い詐欺師でもあります。だから、私にこのボットを実装してほしい。私はプログラマでもあるので、当然、私のハードディスクにはコードやライブラリなどがいっぱいで、空きメモリは数バイトしかありません。したがって、この課題はコードゴルフであり、バイト数が最小の答えが勝ちます。 実装の詳細: もちろん、トピック間の接続を認識し、最適なルートを自動的に検出するインテリジェントなボットを実装する必要はありません。ブルートフォーシングは、この課題の目的には十分すぎるほどです。 実際のゲームでは、時間が重要です。あなたのプログラムは記事を見つけるのに1時間以上かかるべきではありません(これは「最終的に」目標を見つけるランダムな検索者のような抜け穴を避けるためです) ゴールへのパスが見つからない場合(デッドリンクやループなど)、以下のリストから何をするかを選択できます。 終了(スコアは同じままです) 別のランダムな記事を取得して再試行し、ループでは何もしません(スコア-= 10) デッドリンクまたはループに関する別のランダムな記事を取得する(ループを自動的に検出する)(スコア-= 50) (「スコア」とは、ここでのバイト数を意味します) ルートを「トレース」すると、さらに20ボーナスバイトが差し引かれるため、訪問する個々のページのタイトルを印刷します。 標準のネットワークライブラリを使用できます(「ウィキペディアの記事をクロールする独自のネットワークライブラリを作成しました」などの抜け穴を避けるため) プログラムがネットワークに関連する唯一のことは、HTTPリクエストを送信してウィキペディアページをダウンロードすることです プログラムがページを見つけると、プログラムは終了しますが、何らかの形で終了したことを知らせます(文字「f」またはページのタイトルを印刷するだけで十分です) 標準的な抜け穴を避ける ゴルフをお楽しみください! (これが私の最初の質問ですので、それらを利用する前にコメントの明らかな抜け穴と警告を指摘してください-ありがとう:D)
25 code-golf 

3
現実的なマップを生成する
MS Paintで数分で想像上の単語の領域のこの地図を描きました: このようなマップをプログラムで生成できるのは本当にクールだと思います。 チャレンジ 正の整数WとH、および空でない正の整数のセットを取り込むプログラムを作成しますS。 ピクセル幅×ピクセル高の標準トゥルーカラー画像を生成します。WH 各整数ためiにS、その領域の画素にに比例する画像内の平面領域を描画するi任意の近傍領域から色別を使用して、。具体的には、画像内のすべてのピクセルが領域に属するように、領域内のピクセル数をW * H * i / sum(S)切り上げまたは切り捨てる必要があります。 平面領域は、領域内にとどまり、対角線ではなく直交方向にのみ移動することで、領域内の任意のピクセルに他のピクセルから到達できるというプロパティを持つピクセルのセットです。上記の地図には10個の平面領域があります。 平面領域のすべてのピクセルは同じ色である必要があり、隣接する領域の色と異なる必要があります。隣接していない場合、領域は同じ色になる場合があります。 それ以外の場合、領域の形状、配置、または色付けに制限はありません。これは人気コンテストです。目標は、物理的または政治的な想像上の世界の現実的な地図を、あらゆる地理的規模で作成するプログラムを作成することです。 当然、コードだけでなく、最高の出力画像を見せてください。 詳細 ファイル、コマンドライン、標準入力などから入力を取得します。画像を標準形式で保存するか、画面に表示します。 プログラムは、同一の入力に対して決定論的でなければなりません。すなわち、出力画像は常にいくつかの特定のために同じであるべきであるH、WとS。(それSはリストではなくセットであるため、順序は重要ではありません。)そうでない場合は、必要ではありませんが、必要に応じてランダム性を使用できます(ただし、強くお勧めします)。 出力画像の地理は、Wまたはの異なる値に対して「スケーリング」する必要はありませんH(可能ですが)。それは完全に異なる場合があります。 少なくとも32個のランダムな色の可能性がある限り、2つの隣人が同じ色になる可能性は低いため、隣人の色のルールを無視して、色をランダムに割り当てることができます。 領域は画像の境界で停止します。ラップアラウンドはありません。 ピクセルよりも多くの領域がある場合のように、領域にはピクセルが含まれていない可能性があります(したがって、存在しません)。 入力例 有効な送信により、上記のパラメーターを使用して上記のマップが生成された可能性があります。 W = 380 H = 260 S = {233, 420, 1300, 3511, 4772, 5089, 9507, 22107, 25117, 26744} これらのS値は各領域のピクセル数とまったく同じですが、そうである必要はありません。それは覚えているS、それが必ずしも常にソートされていないので、セットです。

30
Piのモンテカルロ推定量
みんなハッピーパイデー!理由もなく、可能な限り短いPiのモンテカルロ推定量を構築しようとしています。ツイートに収まるものを構築できますか? 明確にするために、私が念頭に置いているのは、単位正方形からランダムな点を描き、単位円内に入る比率を計算する典型的なアプローチです。サンプルの数は、ハードコーディングすることも、しないこともできます。それらをハードコーディングする場合、少なくとも1000サンプルを使用する必要があります。結果は、浮動小数点、固定小数点、または有理数として返されるか出力される場合があります。 トリガー関数やPi定数は、モンテカルロアプローチではありません。 これはコードゴルフであるため、最短の提出(バイト単位)が優先されます。

30
印刷番号の三角形
numberを指定するNと、NxN個の直角三角形が出力iされiます。各行には、までの数字が入力されます。 例 n = 0 (出力なし) n = 4 1 1 2 1 2 3 1 2 3 4 n = 10 1 1 2 1 2 3 . . . 1 2 3 4 5 6 7 8 9 10 (アライメントは不要です) n = N 1 1 2 1 2 …
25 code-golf  number 

1
Androidロック画面
イントロ 長いテーブルの端にある会議室に座っています。周りを見てみると、ティムクック、アップルの取締役会、スティーブジョブズの幽霊、ジャックドナギーが見えます。Appleがこの会議を呼び出したのは、Androidのロック画面がどれほどクールであるかを認識しており、それらを1アップにしたいからです。ゴーストスティーブが叫ぶように、部屋の誰もがあなたを見つめます。「助けてくれ、CodeGolf Man!あなたは私の唯一の希望です!」 問題 Androidのロック画面は3 x 3のドットグリッドで、1つのドットから次のドットに指をスワイプしてパスを作成することで接続できます。パスワードは、任意の数のドットを含む可能性のあるパスと見なされ、任意の数のドットを除外します。(実際の電話では、パスは少なくとも4ドットである必要があります。このチャレンジでは、その制限を無視してください。)Appleは、3 x 3グリッドを(M * N)/ 9であるM x Nグリッドに置き換える予定です倍良い! ルール: ゼロドットパスはパスワードではありませんが、1ドットパスはパスワードです パスはそれ自身を横断できます パスは、ドットを含めずにドットを直接越えることはできません ドットは1回しか使用できません ローテーションによって同一のパスは同じパスワードではありません 同一であるが逆の順序のパスは同じパスワードではありません たとえば、1〜9の番号が付けられた3x3グリッドの場合: 1 2 3 4 5 6 7 8 9 有効なパスは次のとおりです。 1 3 7,2,3 1,5,9,2 1,8,6,5,4 4,2,3,5,6,7,8,9 5,9,6,4 そして、いくつかの無効なパスは次のとおりです。 1,3 1,9,5 7,5,4,7 4,6 入力は3つの数字になります。 (M,N,d) ここで、グリッドはM x N、dはパスの長さです 1 …

19
独自のソースコードをレンダリングする「ハッカータイパー」プログラムを作成する
あなたがハッカーのタイパーに慣れていない場合は、参照hackertyper.net。要するに、コメディ効果のために、キーストロークごとにコードベースのチャンクを1つ出力するプログラムです。しかし、hackertyper.netバージョンは実装が非常に簡単です。任意のコードから一度に3文字を出力するだけです。この課題のために、プログラムは独自のソースコードを出力し、キーストロークごとにスペースで区切られたコードチャンクを1つ印刷する必要があります。 詳細 プログラムのファイル名をハードコーディングすることはできません。名前を動的に決定する必要があります。プログラムを実行可能ファイルにコンパイルする場合、標準ファイル拡張子を実行可能ファイルの名前に追加し(Windowsを使用している場合は.exeを除く)、ソースファイルが実行可能ファイルのディレクトリ内にあると想定します。たとえば、C実行可能ファイルの名前が「hacker」の場合、同じディレクトリにある「hacker.c」という名前のファイルからソースコードをプルする必要があります。コンパイルされたプログラムに拡張子がある場合、ソースコードの名前を決定する前に削除する必要があります( "typer.exe"-> "typer.cs")。 プログラムには少なくとも5つのスペースが含まれ、各スペースの間に少なくとも1つの文字が必要です。つまり、このチャレンジの最小サイズは9バイトです。スペースは、プログラムの機能にとって重要である必要はありません。 書式設定(インデント、改行など)は、出力で維持する必要があります。この書式設定は、それを実行するコードまたはその後に続くコードで印刷できます。重要なのは、書式設定が維持されることです。 選択した言語でスペースを実装する他の方法がない限り、5スペース要件を満たすためにコメントを使用しないでください。 編集:スペースの代わりに、またはスペースに加えて、新しい行をチャンク区切りとして使用できます。

2
最終スタンド-ゾンビ大群を倒す
前書き あなたは島に一人でいます。人類の残りは死んでいます(おそらくuser12345のコードのバグが原因です))。ゾンビ海賊大群はあなたの島に到着しました、そして、彼らは無限です。それはお尻を蹴ったりバブルガムをかむ時であり、あなたはすべてバブルガムから出ています。 問題 私たちの最悪のシナリオは、単一の行に2つの整数で説明し、されるmとn。島には、1からの一意の番号が付けられた前post基地がありますm。次nの行はそれぞれ、三つの整数は、含まれているx、yとz、スペースで区切られています。xとyは、2つの前post基地の一意のIDでzあり、それらの間のパスで遭遇するゾンビの数です。 パスを移動すると、z弾薬を失い、zゾンビを殺します。再び同じ道を進むと、残念ながら同じ数のゾンビに遭遇します。すべての前post基地は、パスを移動するたびに+1弾薬を生成します。前post1の弾薬100個で開始します。すべての前Allは弾薬0個で始まります。あなたの弾薬がそのパス上のゾンビの数よりも大きいパスが存在しない場合、あなたはすぐに死に、あなたの弾薬の残りはキルに変換されます。これが最終的な立場です。 特定のシナリオで殺すことができるゾンビの最大数を出力するプログラムを作成します。無限の数のゾンビを殺すことができるなら、単に出力してくださいx。 入力例 5 6 1 2 4 2 3 4 3 1 4 2 4 10 2 5 10 1 1 50 出力例 x 仮定 パスは2つの有効な前post地の間にあります。つまり、1 <= x/ y<=m xとの間のパスがyリストされていない場合、移動できません パスは双方向です 1 << m= 100 1 << n= 500 入力は、stdinを介して提供されるか、ファイルから読み取られるか、プログラムへの唯一の引数として受け入れられ、例の形式に正確に従う必要があります。 プログラムの実行時間は任意に大きくできますが、決定的に有限でなければなりません 文字数が最も少ないコードが勝ちです!
25 code-golf 

5
空腹のイメージスネーク-穴#3
穴#1 ジョー・ザ・スネークはおなかがすいています。 彼は一度に1ピクセルずつ写真を食べます。 彼は本当に明るいピクセルが好きです。 チャレンジ ジョーは上下左右にしか動かせないので、見つけられる最も明るいピクセルを食べるようにジョーをプログラムします。 仕様書 ジョーは画像の左上のピクセルから開始する必要があります。 ジョーは、水平方向または垂直方向に1移動ずつしか移動できません ジョーには、写真のピクセル量の1/3を移動するのに十分な時間しかありません(ピクセルの1/3の移動)。ピクセル数が3の倍数でない場合、最も近い整数に切り捨てます。 ジョーは彼の道を横切るかもしれませんが、それは0の明るさとして数えます 明るさはr、gとbの合計に基づいているため、rgb(0,0,0)は0の明るさを持ち、rgb(255,255,255)は最大の明るさを持ちます。 入力 好きなように画像を入力できます。 出力 画像の最終結果を示す画像(黒がピクセルに食われている)。 食べた明るさの量(答えの範囲を指定してください) 得点 あなたのプログラムは次の点で評価されます: Joeが食べるピクセルの平均輝度/写真のピクセルの平均輝度* *これをプログラムにハードコードすることができます 合計スコアは、次の画像のスコアの平均になります。 テスト画像: http://upload.wikimedia.org/wikipedia/en/thumb/f/f4/The_Scream.jpg/800px-The_Scream.jpg

13
これは何のROTですか?-ROT-nの復号化
以下に、頻度の高い順に英語のアルファベットの文字を示します。 e t a o i n s h r d l c u m w f g y p b v k j x q z つまりe、最も頻繁に使用される文字でありz、最も一般的ではありません。(ウィキペディアからのデータ。) あなたの課題は、次のようないくつかのROT-n'dテキストを取得することです。 ocdndnvqzmtnzxmzohznnvbzocvodnqzmtnzxpmzviynvaz これは、ROT-21(42の半分)を介して「暗号化」されたテキスト「thisisaverysecretmessage thatvery secure and safe」です。プログラムは、上記の頻度表を使用して、各文字がどれだけ回転したかと元のテキストによって判断できるはずです。 (ROT-nに慣れていない場合は、基本的に各文字をn。でシフトします。たとえば、ROT-2では、a -> c, b -> d, ..., x -> z, y -> a, z -> …

10
マンドリン・クイン
他のすべてのキャラクターを削除できるクインを書いてください...それはまだ有効なクインです。最初の文字から文字を削除するか、2番目の文字から文字を削除するかを指定できます。 スコア基準(ボーナス/ペナリーパーセンテージを合計パーセンテージに加算): 回答は4文字以上である必要があります プログラムは、そう、たとえば、そのソースに少なくとも一つのアルファベットの文字が含まれている必要があり12345!@#$%^&*()失格とされます 使用する言語がチューリング完全でない場合は+ 750%(私はあなたを見ています、HTML!) ソリューションが任意の形式のどこからでもソースを読み取らない場合、-15% -20%(5文字ごとにしかキープできず、クインを形成できる場合) スコアは、最初のプログラムの文字数で測定されます。 例(実際のプログラムではありません): 場合123456789abcdefと13579bdfの両方quinesあり、スコアはまた15であれば、159dまたQUINEであり、最終的なスコアは12です。 これはコードゴルフなので、最低スコアが勝ちます。
25 code-golf  quine 

3
テニスのスコアとコードゴルフの出会い
メルボルンでの2014年の全豪オープンと、ノバクジョコビッチに対するスタニスラスワウリンカの勝利に照らして、私は次のコードゴルフチャレンジを提案します! ワウリンカとジョコビッチは、このCGCの基礎として、再びそれに取り組んでいます。あなたの課題は、1と2で構成される文字列を取得し、テニススコアリングシステムに基づいてテニススコアを決定することです。「1」はワウリンカがポイントを獲得したことを示し、「2」はジョコビッチがポイントを獲得したことを示します。 例のために1211222122111122111、2行の出力を生成します。 Wawrinka 1 - 40 Djokovic 1 - 30 文字列が長ければ長いほど、スコアはゲーム内でより遠くなります。 ルール: 最短のコードが勝ち、純粋でシンプル。 表示されるスコアは、右揃えであり、列揃えである必要があります。例えば 出力のサンプル調整: Wawrinka 7 5 3 - 0 Djokovic 6 7 4 - 15 ゲームが進行中の場合、スコアは設定されたスコアの後に表示される必要があります。ゲームのスコアは、設定されたスコアの後にスペースとダッシュとスペースの区切り記号を付ける必要があります。これが最初のゲームである場合、0-0セットのスコアが表示されなければなりません。 Wawrinka 0 - 0 Djokovic 0 - 15 ゲームは、0、15、30、40、およびゲームポイントの順に進みます。ゲームが40〜40に達した場合、デュースが宣言され、スコアはプレーヤーの行にポイントを獲得してデュースを表示する必要があります。 Wawrinka 7 5 3 - 40 Djokovic 6 7 4 - 40 …
25 code-golf  game 

9
ボウリングの試合を記録する
あなたの仕事は、最大 21 ロール後に10ピンボウリングのゲームで1人のプレーヤーのスコアを合計して出力することです。 ロールは、好みの入力方法で整数のシーケンスとして表されます。各整数は、そのロールでノックダウンされたピンの数に対応しています。 得点 各ラウンドの後、そのラウンドでノックダウンされたピンの数が最終スコアにカウントされます。プレイヤーがラウンドの最初のロールで10個のピンをすべて倒した場合、これはストライクであり、ラウンドは終了します。それ以外の場合、ラウンドはもう1回ロールされます。ラウンドの2番目のロールが残りのすべてのピンをノックダウンした場合、これはスペアです。 ストライクごとに、次の2回のロールでノックダウンされたピンの合計に等しいボーナスがあります。各スペアには、次のロールでノックダウンされたピンの数に等しいボーナスがあります。 10回目および最終ラウンドでは、プレーヤーに追加のロールが許可される場合があります。ストライクの場合、プレーヤーはストライクボーナスを補うためにさらに2つのロールを取得します。予備の場合、プレーヤーはもう1つのロールを取得します。 例 Input: 4 3 8 2 7 1 10 7 3 0 10 2 2 10 10 5 4 Output: 131 Input: 10 10 9 1 7 3 2 7 10 1 9 10 7 1 10 10 10 Output: 183 ルール …
25 code-golf  number  game 

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