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

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

14
CodeGolf.SEでのユーザーの特権を計算します
チャレンジ あなたの目標は、イベントのリスト(アップ投票、ダウン投票など)を取得し、ユーザーの評判と彼が獲得し​​た特権を返す最短のプログラムを作成することです。 どんなイベント? 以下は、獲得した評判の順にリストされたイベントのチャートです。 -15 answer unaccepted -10 answer unupvoted -5 question unupvoted -2 answer downvoted -2 question downvoted -2 unaccept answer -1 downvote answer +1 join website +1 undownvote answer +2 accept answer +2 question undownvoted +2 answer undownvoted +5 question upvoted +10 answer upvoted +15 answer accepted +100 …

8
RijndaelのSボックスを実装する
RijndaelのS-boxは、AES暗号化および復号化で頻繁に使用される操作です。通常、256バイトのルックアップテーブルとして実装されます。これは高速ですが、コード内で256バイトのルックアップテーブルを列挙する必要があることを意味します。基本的な数学的構造を考えると、この群衆の誰かがより少ないコードでそれを行うことができると確信しています。 RijndaelのSボックスを実装するお気に入りの言語で関数を記述します。最短のコードが優先されます。

10
エジプトのピラミッド
エジプト最大のピラミッドであるギザの大ピラミッドは、古代世界の七不思議の中で最も古いだけでなく、大部分がそのまま残っている唯一のピラミッドです。エジプトのピラミッドは建設に最大20年かかることがあり、非常に大きいため、十字軍を粉砕した偉大なサラディンの息子であるアルアジズウスマンは、ギザの偉大なピラミッドの破壊をあきらめなければなりませんでした。エジプトのピラミッドは、主に旧王国時代と中王国時代(紀元前2686年から1690年頃)にファラオとその配偶者の墓として建設され、2008年には138のピラミッドが発見されました。 タスクは、スペースで区切られた一連の距離を入力し、それらの距離で区切られた10×10のテキストピラミッドを生成するプログラムを作成することです。距離1は2文字に相当します。 テキストピラミッドは次のようになります。 /\ /--\ /----\ /------\ /--------\ /----------\ /------------\ /--------------\ /----------------\ /------------------\ 入力が改行のみで構成される場合、上記のように1つのピラミッドが生成されます。ピラミッドごとに、左側のピラミッドが前面にあるかのように表示されます。 例I 入力: 4 3 1 出力: /\ /\ /\/\ /--\ /--\ /--\-\ /----\ /----\/----\-\ /------\/------\-----\-\ /--------\-------\-----\-\ /----------\-------\-----\-\ /------------\-------\-----\-\ /--------------\-------\-----\-\ /----------------\-------\-----\-\ /------------------\-------\-----\-\ 例II 入力: 0 9 出力: /\ /\ /--\ /--\ /----\ /----\ /------\ /------\ /--------\ /--------\ …

7
次は何が来るのか?
スペースで区切られた整数のリストが与えられた場合、タスクはシーケンス内の次の整数を見つけることです。シーケンス内の各整数は(単一の数学的操作を適用した結果であり+、-、*または/)前の整数であり、各シーケンスは、このような動作の可変数(ただし10以上)で構成されています。シーケンスは整数のシーケンスの長さの半分より長くなることはないため、確認のために各シーケンスの操作を少なくとも2回表示します。 入力は、stdin(またはpromptJavaScriptソリューション用)を介して行われます。 以下にいくつかの説明例を示します。 入力: 1 3 5 7 9 11 出力: 13 これはかなり簡単です。すべての値は以前の値+2です。 入力: 1 3 2 4 3 5 4 6 5 7 6 出力: 8 このシーケンスの2つのステップ、+2次に-1。 入力: 2 6 7 3 9 10 6 18 19 15 45 46 出力: 42 三つのステップ- 、*3、。+1-4 テストケース 以下に、さらにいくつかのテストケースを示します。 入力: 1024 512 …

12
間隔の連合
間隔のリストを指定して、それらの和集合を実行し、重複を減らします。つまり、重なり合う部分が減ります。([a, b] U [c, d] = [a, d]if b > c)すべての間隔ですべてのa <bと仮定します[a, b]。入力間隔のリストの機能として実装->出力間隔のリスト。最短のコードが優先されます。既存のライブラリを使用することはできません。 明確化: 開いている間隔と閉じている間隔は区別されません。 整数ではなく実数の間隔。([2, 3], [4, 5] -> [2, 3], [4, 5]) 出力間隔をソートする必要はありません 入力が重要でない場合の順序 不正な入力があるだけで[a, b]どこb >= aそれは、入力間隔の順と入力間隔の数とは関係ありません、。 未定義の動作に関するエラーメッセージを表示する必要はありません。 例(行数あり) [2, 4], [7, 9] --> [2, 4], [7, 9] 234 789 -> 234 789 [1, 5], [2, 10] …
15 code-golf 

16
Rosetta Stone Challenge:シリーズのルールを見つける
Rosetta Stone Challengeの目標は、可能な限り多くの言語でソリューションを作成することです。プログラミングの多言語性を自慢しましょう! チャレンジ あなたの課題は、可能な限り多くのプログラミング言語で、数字のリストを入力し、シリーズ内の連続する各数字を生成するために使用されるルールを出力するプログラムを実装することです。これは主に言語のショーケースであるため、言語が持つあらゆる種類の標準ライブラリ関数を使用できます。 「シリーズ」とは何ですか? シリーズは、整数の順序付きリストです。シリーズ内の連続する各番号は、シリーズ内の前の番号に単純なルールを適用することで生成できます。この課題では、ルールは数値に定数を乗算し、2番目の定数を追加することで構成されます。両方の定数は任意の整数にすることができます。この課題の目標は、これら2つの定数を出力することです。 シリーズの2 5 11場合、ルールはとして記述できます2 1。つまり、各数値は前の数値に2を足したものに1を足したものになります。重要な事実は、ほとんどのシリーズには1つのルールしかありません。一部のシリーズには無限の数があるか、まったくありませんが、これに対処する必要はありません。 入力 入力は、シーケンス内の数字である3つの異なる整数のリストになります。数字は、スペース、コンマ、または改行区切りのいずれかです。ただし、どちらを指定してください。特定の言語には入力制限があるため、この制限に柔軟に対応します。入力の4つの例を次に示します。 0 7 14 2 5 11 2 0 -4 5 -19 77 出力 出力は、シリーズの生成に使用されるルールを表す2つの整数になります。最初の数値は乗法定数であり、2番目の数値は加法定数です。出力のフォーマットは、スペース、コンマ、または改行区切りにすることができます。この制限にも柔軟に対応できます。出力の対応する例を次に示します。 1 7 2 1 2 -4 -4 1 目標達成基準 客観的な勝利基準については、次のとおりです。各言語は、最短のエントリを書くことができる人に関する個別の競争ですが、全体的な勝者は、これらのサブ競争のほとんどに勝った人になります。これは、多くの一般的でない言語で答える人が有利になることを意味します。Code-golfは、言語に複数の解決策がある場合の大部分のタイブレーカーです。最短のプログラムを持っている人は、その言語の信用を得ます。 ルール、制限、および注意 あなたのプログラムは、2012年4月9日より前に存在した任意の言語で作成できます。また、テストすることはできないため、より一般的ではない/難解な言語で作成されたいくつかの応答を検証するために、コミュニティに頼る必要がありますそれら。 現在のリーダーボード このセクションは定期的に更新され、言語の数と各言語のリーダーを示します。 AWK(32)-メラモク bash(31)-ピーター・テイラー Befunge(29)-ハワード bc(39)-カーニグ brainfuck(174)-CMP C(78)-l0n3_shArk C ++(96)-leftaroundabout Common …

30
ジョリージャンパーシーケンス
連続する要素間の差の絶対値が1〜n-1のすべての値をとる場合、n> 0整数のシーケンスはジョリージャンパーと呼ばれます。 したがって、シーケンス[4,1,2,4]には絶対差[3,1,2]があり、これはセット[1,2,3](1からn-1(nは元のシーケンスの長さ)に相当)したがって、それは陽気なジャンパーです。 シーケンスの長さはn> 0です。 n = 1がジョリージャンパーであると仮定します。 イージーモード: stdin / stdoutについて心配する必要はありません。ただし、引数を受け入れ、陽気なかどうかを示すものを返す関数 ハードモード:標準入力(スペース区切り)での入力。出力は「Jolly」/「Not jolly」です。大文字は重要です。 これはコードゴルフです。 編集:シーケンスには負の整数を含めることができ、stdinへの入力はスペースで区切られます。 $ jolly 2 -1 0 2 Jolly $ jolly 19 22 24 25 Jolly $ jolly 19 22 24 21 Not jolly

5
コードゴルフ:消灯!
すべての可能性を渡す最短のコードが勝つ 多くのグリッドベースのゲームは、点灯するライトのグリッドで開始されます。いずれかのライトを押すと、そのライトとそれに隣接する4つのライトが切り替わります。ライトを切り替えると、最初にオンまたはオフになったかどうかに応じて、オフまたはオンになります。目標は、最後にすべてのライトがオフになるシーケンスでライトをヒットすることです。 「X」は点灯しているライトを表します。「O」は、消灯しているライトを表します。「P」は押された正方形を表します。 XOO XOO XOX XOX XXX XOX XOP -> XXO -> OPO -> XOX OOX OOX POO XXO XOO Intial Grid Press 1 Press 2 Press 3 Ending Grid 入力は、引数または標準入力として渡されたファイルから直接取得できます。入力の最初の行が含まれていますX(1 <= X <= 20)、意味光のグリッドのサイズ、xとにより、X。2行目にはy(0 <= y <=(x * 3)2)、つまり最初に点灯したライトの数が含まれます。次のy行には、グリッド上のライトの座標が「行列」の形式で含まれています。既にオンになっている(以前に切り替えられた)ライトは、再度オフに切り替える必要があります。次の行には、押されたライトの数であるzが含まれます。最終 z 行には、「行列」の形式で、押されたライトの座標が押された順序で含まれています。 間違った入力はありません。すべての数値は、グリッドの指定された境界内にあります。 出力は、すべてのライトが切り替えられた後の最終グリッドになります。それはあるべきn個によって、n個のグリッド。点灯している各エリアには、大文字の「X」を使用する必要があります。消灯している各エリアには、大文字の「O」を使用する必要があります。 グリッド外の影響を受けるライトは無視する必要があります。グリッドのエッジでライトを切り替えると、グリッド自体にあるライトにのみ影響します。 テストケース 入力 4 5 …

6
順列をサイクルに分解する
順列はサイクルのセットに分解できるというよく知られた定理があります。あなたの仕事は、できる限り短いプログラムを書くことです。 入力: 2行。最初は数値を含みN、2番目はN範囲内の異なる整数を含みます[0,N-1]スペースで区切られれます。これらの整数は、N要素の順列を表します。 出力: 順列の各サイクルに1行。各行は、スペースで区切られた整数のサイクル順のリストである必要があります。 サイクルは任意の順序で出力でき、各サイクルは任意の位置から出力できます。 例1: 8 2 3 4 5 6 7 0 1 この入力は、順列0-> 2、1-> 3、2-> 4、3-> 5、4-> 6、5-> 7、6-> 0、7-> 1をエンコードします。これは、次のようなサイクルに分解されます。 0 2 4 6 1 3 5 7 同様に有効な出力は 5 7 1 3 2 4 6 0 例2: 8 0 1 3 4 5 6 …

17
Code-Golf:円の中の格子点
次の図に問題を示します。 円の半径として整数を指定し、中心の円内(境界を含む)の格子点の数を計算する関数を作成します。 画像は次のとおりです。 f[1] = 5 (blue points) f[2] = 13 (blue + red points) チェック/デバッグの他の値: f[3] = 29 f[10] = 317 f[1000] = 3,141,549 f[2000] = 12,566,345 適切なパフォーマンスが必要です。f [1000]の場合、1分未満としましょう。 最短のコードが優先されます。通常のコードゴルフ規則が適用されます。 例としてf [1001]の計算とタイミングを投稿してください。

19
自明でない力
最小のプログラムを作成して、2 ^ 12以下の非自明な力を順番に出力します 非自明な力は、底と指数が1より大きいことを意味します 先頭の空白はオプションです 複数のソリューションがある場合、順序は重要ではないため、 16 = 4^2, 2^4 大丈夫です サンプル出力: 4 = 2^2 8 = 2^3 9 = 3^2 16 = 2^4, 4^2 25 = 5^2 27 = 3^3 32 = 2^5 36 = 6^2 49 = 7^2 64 = 2^6, 4^3, 8^2 81 = 3^4, 9^2 100 …
15 code-golf  math 

10
Piの数字を計算する
これはやや異なるタスクです。1024桁目の16進数から始まる1024桁のπを計算します。 正式:プログラムは1分以内に完了し、次の出力が生成されます。 25d479d8f6e8def7e3fe501ab6794c3b976ce0bd04c006bac1a94fb6409f60c45e5c9ec2196a246368fb6faf3e6c53b51339b2eb3b52ec6f6dfc511f9b30952ccc814544af5ebd09bee3d004de334afd660f2807192e4bb3c0cba85745c8740fd20b5f39b9d3fbdb5579c0bd1a60320ad6a100c6402c7279679f25fefb1fa3cc8ea5e9f8db3222f83c7516dffd616b152f501ec8ad0552ab323db5fafd23876053317b483e00df829e5c57bbca6f8ca01a87562edf1769dbd542a8f6287effc3ac6732c68c4f5573695b27b0bbca58c8e1ffa35db8f011a010fa3d98fd2183b84afcb56c2dd1d35b9a53e479b6f84565d28e49bc4bfb9790e1ddf2daa4cb7e3362fb1341cee4c6e8ef20cada36774c01d07e9efe2bf11fb495dbda4dae909198eaad8e716b93d5a0d08ed1d0afc725e08e3c5b2f8e7594b78ff6e2fbf2122b648888b812900df01c4fad5ea0688fc31cd1cff191b3a8c1ad2f2f2218be0e1777ea752dfe8b021fa1e5a0cc0fb56f74e818acf3d6ce89e299b4a84fe0fd13e0b77cc43b81d2ada8d9165fa2668095770593cc7314211a1477e6ad206577b5fa86c75442f5fb9d35cfebcdaf0c7b3e89a0d6411bd3ae1e7e4900250e2d2071b35e226800bb57b8e0af2464369bf009b91e5563911d59dfa6aa78c14389d95a537f207d5ba202e5b9c5832603766295cfa911c81a4a94a14a94a14a94a94a4a73a14a94a14a94a14a4a94a14a94a14a7a4a7a94a14a4a7a7a9a4a7a9a4a7a4a7a4a7a4a7a4a7a7a4a7a4a7a4a7a4a7a4a7a4a7a4a7a4a7a4a7a4a3a4a7a4a3a4a3a4a7a7a7a8a8a8a7a7a8a7a8a7b8a9a8a7b8a9b8a9b8e7e4e2501e7e4900250e2d2071b35e226e 最短の長さのプログラムが勝ちます。実行時にすべての数字を計算する必要があります。πを計算するアルゴリズムを実装する必要はありません。言語がすでにその機能を提供している場合は、それを使用できます。

2
言語の名前を入力として受け取り、入力言語で実装されたものと同じものを出力するクイン
クインセントラルから: 言語名を入力として受け取り、入力言語で実装されたものと同じものを出力するクインを記述します。 ソース記事にはあなたが作業できるものがありますが、著者が言うように、これはずっと難しいです。明らかに、限られた言語のセットのみをサポートする必要があります。ただし、基本言語だけでなく、選択もあなた次第です。 コードチャレンジとして、スコアはプログラムがサポートする言語の数になります。高いほど良い。

12
glob Matcherを実装する
一致するパターンと文字列の関数を実装し、パターンがWHOLE文字列に一致する場合はtrueを返し、そうでない場合はfalseを返します。 globパターンの構文は次のとおりです。 ? 任意の1文字と一致します + 1つ以上の文字に一致します * 0個以上の文字に一致します \ 逃げる ルール: 評価なし、正規表現への変換なし、システムglob関数の呼び出しなし。 I / Oは不要です。関数を書くだけです 最短勝ち 例: glob('abc', 'abc') => true glob('abc', 'abcdef') => false IMPORTANT! glob('a??', 'aww') => true glob('a*b', 'ab') => true glob('a*b', 'agwijgwbgioeb') => true glob('a*?', 'a') => false glob('?*', 'def') => true glob('5+', '5ggggg') => true …

30
分割を実施する
整数除算を処理するお好みの言語で除算アルゴリズムを実装します。正数のみを処理する必要がありますが、負および混合符号除算を処理する場合のボーナスポイントもあります。結果は端数のある結果のために切り捨てられます。 プログラムが入っていて/、\、divまたは類似した演算子を。言語のネイティブの除算機能を使用しないルーチンでなければなりません。 最大32ビットの除算のみを処理する必要があります。繰り返し減算を使用することはできません。 入力 新しい行またはスペースで区切られた標準入力で2つの入力を取得します(選択) 740 2 出力 この場合、出力はになります370。 最短の解決策が勝ちます。

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