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

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

5
壊れたランダム関数を修正
友人のコンピューターにアドオンカードがあり、1から5までの完全に乱数を生成します。残念ながら、彼らは何とかコーラをこぼし、1から4までのすべての数値に対して2だけを生成します。幸いなことに、ランダム性は保持されますが、2は80%の確率で、5は20%の確率で、 1、3、または4が生成されます。このランダムなソース(それを呼び出すBrokenRand()か、類似のもの)を使用して、元のソースと同じ完全なランダム性で等しい20%の確率でそれぞれ1から5までの数を生成する動作乱数ジェネレーターを記述します。 最短のプログラムが勝ちます。BrokenRand人口統計学的に選択されたカスタマーサービスフォーカスコンサルタントによる公平な最低通話数に対して、年齢と性別に分類されたボーナスポイント-私。

17
存在しない言語用のインタープリターを構築する
入力を取得し、解釈し、結果を数値の配列として出力する、偽のスタックベースの言語用のインタープリターを構築します。各バイトを反復処理し、この表に基づいて異なる機能を実行する必要があります。 0000(0):連結(スタック内の上位2つの数字を文字列であるかのように結合します。例:12,5-> 125) 0001(1):インクリメント(スタックの先頭の数字に1を加算) 0010 (2):デクリメント(スタックの先頭の数値から1を引く) 0011(3):乗算(スタックの上位2つの数値を乗算) 0100(4):除算(2番目から2番目の数値を除算スタックの一番上の番号) 0101(5):追加(スタックの一番上の2つの番号を追加) 0110(6):減算(スタックの一番上の番号をその下から減算) 0111(7):指数( 2番目から2番目の数値を1のべき乗で計算します) 1000(8):モジュラス:(2番目から2番目の数値をモジュロします) 1001(9):右に回転(スタックを1つ下にシフトします。下の数字が上になります) 1010(A):左に回転(スタックを1つ上にシフトします。上の数字が下になります) 1011(B):複製(先頭の数字を2回表示するようにコピーします。例:4,1は4,1,1になります) 1100(C):二重複製(スタックの先頭の2つの数字をコピーします。例:4 1,2は4,1,2,1,2になります) 1101(D):スワップ(スタックの上の2つの数字をスワップします。例:4,1,2は4,2,1になります) 1110(E):ダブルスワップ(下の2つの数字で2つの数字を入れ替えます。例:1,2,3,4,5は1,4,5,2,3になります) 1111(F):削除/ポップ(先頭の数字を削除しますスタック) たとえば、次を含むファイル 1 1 BC 5 C 5 B 9 5-入力(16進数) | | | | | | | | | | 1 2 2 2 4 4 6 6 2 …

30
正数の階乗を見つけるにはどうすればよいですか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 チャレンジ: 正数を入力してその階乗を返すプログラムまたは関数を作成します。 注:これはコードトローリングの質問です。質問や回答を真剣に受け取らないでください。詳細はこちら。すべてのコードトローリングの質問は人気コンテストの質問でもあるため、最も多く投票された回答が勝ちます。

4
小さくバランスの取れたモバイルを構築する
あなたにはたくさんの重みが与えられ、あなたの仕事はそれらの重みを使って小さなバランスの取れたモバイルを構築することです。 入力は、1〜9の範囲の整数の重みのリストです。重複する可能性があります。 出力は、吊り下げたときにバランスがとれるモバイルのASCII画像です。おそらく、例によって最もよく示されています: 入力 3 8 9 7 5 可能な出力 | +-----+---------+ | | +--+-+ +----+------+ | | | | 8 ++--+ 7 5 | | 9 3 示されているようにASCII文字を使用する必要があります。水平および垂直セグメントの長さは任意です。モバイルのどの部分も、モバイルの接続されていない別の部分に(水平または垂直に)触れることはできません。すべてのウェイトは、少なくとも1の長さの垂直セグメントから吊るす必要があり、モバイル全体を吊るす垂直セグメントが必要です。 モバイルの大きさは、数の合計である+、-と|の文字がそれを構築するために必要。サイズが小さいほど優れています。 セグメントには、必要なだけ接続を配置できます。例えば: 入力 2 3 3 5 3 9 可能な出力 | +---+---+-----------+ | | | +--+-+ 5 9 | | | …

13
海賊の宝
海賊に隠された宝物を見つけるのは本当に簡単です。これに必要なものはすべてマップです。海賊が手作業で地図を描き、アルゴリズムを説明して次のように場所を見つけることは広く知られています。 そのようなルートを通る旅は、通常、景色を見る絶好の機会です...しかし、今日、誰もそのための時間を持っていません。それが宝探し者が、与えられた地図を使って宝の正確な位置を決定するプログラムを書くようにあなたに頼んだ理由です。 入力 入力は、<Direction> <Distance>コンマで区切られた複数の命令で構成されます(その後にそれぞれ1つの空白が続きます)。 方向は次のいずれかです。- N北、S-南、E-東、W-西、 NE-北東、NW-北西、SE-南東、SW-南西。 距離は整数(1〜1000)です。 出力 結果は、コンマと空白で区切られた小数点以下3桁で、命令の終了後に終わる座標です。開始位置の座標はゼロ(0、0)です。 最初の座標はXです(東はゼロより大きい座標、西はゼロより小さい座標を意味します)。 第2の座標であるY(北手段よりゼロより、サウス手段未満ゼロより)。 例 1。 N 3, E 1, N 1, E 3, S 2, W 1 3.000, 2.000 2。 NW 10 -7.071, 7.071 3。 NE 42, NW 42, SE 42, SW 42 0.000, 0.000 ソース(ウクライナ語)。入力形式はそこで異なります。
18 code-golf 

4
ジョーンズ氏が自転車で往復するのを手伝ってください
ジョーンズ氏は自転車で往復したいと考えています。彼は複数の都市を任意の順序で訪れたいと考えていますが、休日に同じ場所に2度いるのが嫌いなので、自分のルートを自分自身に渡ってはいけません。彼はサイクリングが大好きなので、ルートの長さはまったく関係ありませんが、ターゲットなしで風景を走り回るのは嫌です。彼が好むルートは、迂回することなく、市内から直線で他の都市へのルートです。 ジョーンズ氏は情熱的なコードゴルファーであるため、一連の都市を考慮して、彼のために往復旅行を計画するプログラムを見つけてもらいたいと考えています。入力の形式はA (B|C)です。Aは都市の名前でBありC、その座標です。座標は正で、1000未満であると想定できます。都市のデータセットは行区切りです。次に、入力例がどのように見えるかの例を示します。 SomeTown(1 | 10) ACity(3 | 4) どこでも(7 | 7) ホーム(5 | 1) ジョーンズ氏はつまらないものではなく、有用なプログラムを持ちたいだけです。したがって、これらの基準を満たす限り、出力がどのように見えるかを自分で決めることができます。 出力は都市の地図であり、それらの間にルートが描かれています。何かが正しい場合、ルートはそれ自体と重ならないようにし、開始した場所で終了する 座標は通常のプログラミングのようです:(1 | 1)はNWコーナーにあります。読みやすいように、マップの境界線に一種の定規を追加します 都市名は地図上に書き留める必要がありますが、地図上のどこかで説明されている略語を自由に使用してください マップはASCIIアートまたは画像の両方にすることができます 出力を読みやすくする 出力は次のようになります。 1234567 1 D 2 * * 3 * * 4 B * 5 * * 6 * * 7 * C 8 * ** 9 * …

5
バイナリツリーを印刷する
SOに関する最近の質問に触発され... 次の形式でバイナリツリーを印刷する関数を作成します。 3 / \ 1 5 \ / \ 2 4 6 出力は、ノードの行、それに続く関係の行/と\文字、ノードの行などで構成されます。 すべてのノードが単一の文字として表現可能であると想定できます。 最下位レベルの隣接ノードは、少なくとも1つのスペースで区切る必要があり、さらに上位のノードは必要に応じて区切る必要があります。 2つの子を持つノードは、直接の子の真ん中に正確に配置する必要があります。 関係のスラッシュは、親と適切な子の中間にある必要があります(どの方法でも)。 入力: 入力は関数の引数として提供されます。ツリーの正確な構造は指定しませんが、実際のバイナリツリーとして使用できる必要があります。「予想される出力のように見える文字列として、私のプログラムでツリーが表されていません」。 出力ストリームに出力するか、選択した出力を含む文字列を返すことができます。 最短のコードのポイントですが、90%の作業の短いソリューションよりも完全に機能する長いソリューションの方がずっと好きです。 報奨金の更新: 賞金のために、私(オプティマイザー)はわずかな変更を行っています: 入力は、STDIN、ARGV、または関数引数からのものです。 出力はSTDOUT(またはconsole.logJS)にある必要があります たとえば、入力は配列形式であると想定できます。[1,2,3]または[1 2 3] 更新2-バイナリツリーは実際にはバイナリ検索ツリーである必要があります。最初にこれについて言及しなかったため、ユーザーが通常の配列をバイナリ検索ツリー配列に変換することを別個のプログラムとして扱うことができ、最終的なバイトカウントは、プログラムが配列を引数として取り込んで印刷するためのものです二分木のような。

30
チェス盤パターン
入力: stdinからの、またはコマンドライン引数としての、80より小さい正数。 出力:正方形のチェス盤パターン、入力数のサイズ。暗いフィールドは文字「X」で、白いフィールドはスペースで表されます。左上のフィールドは「X」です。 完全なプログラムが必要です。 例: 入力:1 出力: X 入力:8 出力: X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X

15
タイムトラベラー
クロックで正しい時間を生成する最短のコードが勝ちです。 あなたはベテランの時間旅行者であり、旅行中に多くの惑星に立ち寄ることが知られています。各惑星は異なる速度で回転します。そのため、1日の長さは通常の24時間とは異なります。その結果、惑星は異なる時間数の時計を使用します。x時間の時計の時間は、私たちのものと同様に配置されます(1、2、3、...、x)、数字は時計回りに回転し、xが最上部にあります。 さらに、各惑星には1時間に異なる分数があり、1分に異なる秒数があります。開始時間と終了時間を決定する必要がある経過秒数が提供されます。 入力は、引数または標準入力として渡されたファイルから直接取得できます。入力の最初の行は、処理する必要があるクロックの数になります。その後、各クロックには、次の形式の整数を含む3行の入力があります。 x y z h m s t 各文字の意味は次のとおりです。 x = 1日の時間数(2 <= x <= 99) y = 1時間の分数(2 <= y <= 100) z = 1分あたりの秒数(2 <= z <= 100) h =開始時間の時間(1 <= h <= x) m =開始時間の分(0 <= m <y) s =開始時間の秒(0 <= s <z) t …
18 code-golf 

2
ポリストリップのカウント
報奨金は、期限が切れる3日で。この質問への回答は、+ 200レピュテーションバウンティの対象となります。 Adámは、既存の回答に報酬を与えたいと考えています。「この明確に説明された回答が新しい勝者であり、APLでの最初の回答であるため、この賞金の対象となります。」 ポリストリップは、次のルールに準拠したポリオミノのサブセットです。 各ピースは1つ以上のセルで構成されます セルに3つ以上の隣接セルを含めることはできません セルは穴を囲むべきではありません 自由なポリオミノは、他のもの(拾い上げたりひっくり返したりできる部分)の厳密な変換(平行移動、回転、反射、またはグライド反射)がない場合に区別されます。無料のポリオミノを平行移動、回転、反射、またはグライド反射してもその形状は変わりません(ウィキペディア) たとえば、30個の無料のヘプタストリップ(長さ7のポリストリップ)があります。これらはすべて、14x15のグリッドにまとめられています。 画像クレジット:Miroslav Vicher ゴール n入力として正の整数を取り、個別のフリーnポリストリップを列挙するプログラム/関数を作成します。 n = 1-> 1(単一の正方形) n = 2-> 1(2つの正方形で作られた2つのポリストリップが1つだけあります) n = 3-> 2(1つは3つの正方形が直線で結合され、もう1つはL字型です) n = 4-> 3(1つの直線、1つのL字型、1つのZ字型) 。。。 テストケース: n polystrips 1 1 2 1 3 2 4 3 5 7 6 13 7 30 8 64 9 …

6
コファクター行列
補因子行列は、Adjugate Matrixの転置です。この行列の要素は、元の行列の補因子です。 補因子(つまり、行iおよび列jの補因子行列の要素)は、元の行列からi番目の行とj番目の列を削除して形成される部分行列の行列式で、(-1)^(i + j)を掛けます。 たとえば、行列の場合 行1および列2の補因子行列の要素は次のとおりです。 ここで、行列の行列式とその計算方法に関する情報を見つけることができます。 チャレンジ あなたの目標は、入力行列の補因子行列を出力することです。 注:補因子行列、または補助行列、行列式、または同様のものを評価する組み込み関数が許可されます。 入力 マトリックスは、コマンドライン引数、関数パラメーター、STDINまたは使用する言語に最適な方法で入力できます。 マトリックスはリストのリストとしてフォーマットされ、各サブリストは1行に対応し、左から右に順序付けられた因子を含みます。行はリストの一番上から下の順に並べられます。 たとえば、行列 a b c d はで表され[[a,b],[c,d]]ます。 あなたの言語に適合し、理にかなっている場合は、角括弧とコンマを別のものに置き換えることができます(例((a;b);(c;d))) 行列には整数のみが含まれます(負の場合もあります)。 行列は常に正方形です(つまり、行と列の数が同じです)。 入力は常に正しいと仮定することができます(つまり、書式設定の問題、整数以外、空の行列はありません)。 出力 結果として得られる補因子行列はSTDOUT、に出力されたり、関数から返されたり、ファイルに書き込まれたり、使用する言語に自然に合ったものに似たものになります。 補因子行列は、入力行列とまったく同じ方法でフォーマットする必要があります[[d,-c],[-b,a]]。文字列を読み取る場合は、入力とまったく同じようにマトリックスがフォーマットされた文字列を返す/出力する必要があります。入力としてリストのリストなどを使用する場合、リストのリストも返す必要があります。 テストケース 入力: [[1]] 出力: [[1]] 入力: [[1,2],[3,4]] 出力: [[4,-3],[-2,1]] 入力: [[-3,2,-5],[-1,0,-2],[3,-4,1]] 出力: [[-8,-5,4],[18,12,-6],[-4,-1,2]] 入力: [[3,-2,7,5,0],[1,-1,42,12,-10],[7,7,7,7,7],[1,2,3,4,5],[-3,14,-1,5,-9]] 出力: [[9044,-13580,-9709,23982,-9737],[-1981,1330,3689,-3444,406],[14727,7113,2715,-9792,414],[-28448,-2674,-707,16989,14840],[-2149,2569,-2380,5649,-3689]] 得点 これはコードゴルフなので、バイト単位の最短回答が勝ちです。

2
六角形のタイル上の生き物を数える
この課題では、タイルゲームパラゴで「生き物」を数えます。 クリーチャーとは、六角形のグリッドにある同じ色のパラゴタイルで形成できる閉じた形状です。 ゲームPalagoは、次のようなタイルで構成されています。 これらのタイルを回転させることができる120∘120∘120^\circ、240∘240∘240^\circ、または全てに六角形グリッド上の任意の場所に配置します。たとえば、12個のタイルを必要とする(赤)クリーチャーは次のとおりです。 チャレンジ この課題の目標は、整数nを入力として受け取り、nタイルを必要とする(回転と反射までの)クリーチャーの数を計算するプログラムを作成することです。このプログラムは、最大処理することができる必要がありn=10にTIO。これはcode-golfであるため、最小バイトが勝ちます。 サンプルデータ 値は、作成者のWebサイトの「クリーチャーカウントと推定」セクションにあるデータと一致する必要があります。すなわち n | output ---+------- 1 | 0 2 | 0 3 | 1 4 | 0 5 | 1 6 | 1 7 | 2 8 | 2 9 | 9 10 | 13 11 | 37 12 | 81

15
私はソースを掛けます、あなたは(おそらく)出力を掛けます!
仕事 タスクは、一貫性のある任意の正の整数(厳密には0より大きい)を出力するプログラムを作成することです。キャッチは次のとおりです。ソースが回繰り返される(コードが自体に追加/連結される)場合、プログラムは確率でを出力し、残りの確率でそのまま出力する。バツxxNNNN− 1N−1N-11N1N\dfrac{1}{N}N⋅ XN⋅xN\cdot xN− 1NN−1N\dfrac{N-1}{N}バツxx 例 最初のソースがXYZintegerであり、integerを生成すると仮定しましょう3。次に: 以下のための:出力すべきの確率で(時間の50%)、およびの確率で、ならびに(50時間の割合)。N= 2N=2N=2XYZXYZ3331212\frac{1}{2}2 ⋅ 3 = 62⋅3=62\cdot 3=61212\frac{1}{2} 以下のための:出力すべきの確率で(時間の66.666パーセント)との確率での(33.333パーセント時間)N= 3N=3N=3XYZXYZXYZ3332323\frac{2}{3}3⋅3=93⋅3=93\cdot 3=91313\frac{1}{3} 以下のための:出力すべきの確率で(時間の75%)、および の確率での(25%時間)N=4N=4N=4XYZXYZXYZXYZ3333434\frac{3}{4}4⋅3=124⋅3=124\cdot 3=121414\frac{1}{4} 等々.... ルール 完全なプログラムを作成する必要があります。出力はSTDOUTに出力する必要があります。 あなたのプログラムは、理論的には、上記の確率で各可能な値を出力するはずですが、ランダムの実装によるこれからのわずかな逸脱は問題ありません(実装が異なる分布ではない場合-あなたは使用できませんバイトを節約するための正規分布)。 プログラムは、任意の大きな値について(再び、理論的には)動作するはず、しかし精度に起因する技術的な制限は、大規模の罰金です。NNNNNN 出力は基数10でなければなりません(他の基数または科学表記法での出力は禁止されています)。末尾/先頭のスペースと先頭のゼロは許可されます。 最初のソースは(もちろん)少なくとも1バイト長でなければなりません。ソースのコピー間で改行を使用することはできません。プログラムは入力を受け付けてはなりません(または未使用の空の入力を使用しないでください)。 これはcode-golfであるため、回答のスコアは(元の)ソースの長さ(バイト単位)であり、スコアが低いほど優れています。 注:この挑戦はの(かなり)難しいバージョンです、この1。

21
ものから始める
厳密に正の整数nを指定すると、次の手順に従います。 n 1の配列Aを作成します。 Aに要素が1つしかない場合、終了します。そうでない場合は、最初の要素から始めて、Aの各ペアをその合計で置き換え、Aの長さが奇数の場合は最後の要素をそのままにして、この手順を繰り返します。 出力には、各ステップの後に最初のステップから最後の順にAの状態が含まれている必要があります。標準の抜け穴の使用は禁止されています。これはコードゴルフの課題であるため、各言語のバイト数が最も少ないソリューションが優先されます。 テストケース これらの例の出力の各行は状態です。適切な形式で出力できます。 入力: 1 [1] 入力: 4 [1, 1, 1, 1] [2, 2] [4] 入力: 13 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2, 2, 2, 2, 2, 2, 1] [4, 4, 4, 1] [8, 5] [13] 入力: 15 …

23
ジミーはロープを掛けることができますか?
彼の元の父によるさらに別のジミーの挑戦。これらの他の 素敵な チャレンジをご覧ください。 ご存知のように、最近、プラットフォーム上でジミーに関連する課題が発生しています。今、ジミーは私が前に述べたようにアクロバットであり、彼は彼の袖の上に他のトリックを持っています。 これらのトリックの1つは、ロープで吊るすことです。ジミーがぶら下がるロープの例を次に示します。 || || || || || || ジミーがロープにぶら下がると、次のようになります。 || || /o\ || || || 彼はロープの左または右に掛けることができるので、これは: || || || /o\ || || も有効です。しかし、彼はたった1つの体の部分だけでぶら下がることはできないので、次のようなものです。 || || || /o\| || || 無効です。彼が片方の身体の部分にぶら下がっているとき、ジミーはそれを隠さないので、ロープのもう半分が見えることに注意してください。 また、ジミーはロープの底にぶら下がるのが好きではありません-それは彼を怖がらせます-これは: || || || || || /o\ 無効です。 チャレンジ 上記のようなジミーの状況を入力し、ジミーがロープに固執するかどうかを、真実の値または偽の値で出力します。 詳細 入力を受け取るプログラムを作成します。これは、関数または他の適切な入力メソッドを介して行うことができます。 入力は、上記の例のように、1つのジミーとロープのシーンである必要があります。 プログラムは、ジミーがロープに固執することができるかどうか、または彼がロープから脱落するかどうかに基づいて、それぞれ真実または偽の値をコンソールに出力する必要があります。 ジミーがロープにぶら下がることができる基準: 彼の体の部分の2つはロープの上にあります。 彼はロープの底にいない。 …

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