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

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

1
直交対角グレコラテン正方形の構築
Nx個のN一意の要素のグリッドを考えます。各要素には、文字(AからNth文字まで)と数字(1からN包括的)があります。したがって、各数字/文字のペアはグリッドに1回だけ存在します。 あなたの仕事は、次のようにグリッドを配置することです: 各行、列、および対角線(折り返しを含む)には、各文字と数字が1回だけ含まれています。 ラッピングとは、つまり * * * # * * * # * * * # * * * # * * * * * * * * # は、対角線であり、エッジに当たるすべての同様の対角線です。 5x5グリッドの例は次のとおりです。 A1 B2 C3 D4 E5 C4 D5 E1 A2 B3 E2 A3 B4 C5 D1 B5 C1 D2 E3 …

3
99ですべてのASCII文字をゴルフ
99は、チャレンジのために今週初めに発明したプログラミング言語です。99のインタープリターを作成します。(発明されましたが、半ダースのおかげで実装する必要はありませんでした。))完全な言語仕様がその課題にあるため、ここですべてを再投稿することはありません。 では99あなたは、個々の印刷できるASCIIの stdoutに文字を、しかし、言語の制約のため、簡潔できるだけ特定の文字を印刷する方法を必ずしも明確ではありません。 128個のASCII文字のそれぞれについて、入力を一切行わず、その唯一の文字を出力する99プログラムを作成します。これらの回答の一部またはすべてを手作業でコーディングするか、別のプログラムを(好きな言語で)作成して生成することができます。 128 99の各プログラムの文字の合計がスコアです。最も低いスコアが勝ちます。改行は1文字としてカウントされます。 99では、9999出力ASCII文字(奇数サイズの変数は整数を出力)のようなサイズの変数のみを思い出してください。それらの値は9で除算され、mod 128で取得されるため、ASCII文字にマップするために値が特定の範囲内にある必要はありません。たとえば、内部値297、1449、および-855はすべて文字に対応し!ます!。これは、9で割ってmod 128を取得すると、すべて33になり、これがの文字コードであるためです。 99のインタープリターが必要な場合は、MacのPythonの回答をお勧めします。 次の挑戦はもっとインタラクティブになると言ったのは知っていますが、私はまだその課題に取り組んでいます。

6
Piを送信...正確に
Piのモンテカルロ推定量に続いて、この課題は定数Piの最短コードを生成することです。ここを除き、コードはpiの連続した数字を永久に出力する必要があります。 これはコードゴルフであるため、妥当なPCで10秒未満で最初の10,000桁を出力する必要があり、終了しないことを除いて、最短の提出(バイト単位)が勝ちます。 Piまたはtrig関数に組み込み関数を使用することはできません。 コードサイズのハード制限を削除しました。
11 code-golf  math  pi 

6
対角バロウズ・ウィーラー変換を解く
前書き この課題では、対角線のバロウズウィーラー変換を解きます。以下は、対角バロウズ・ウィーラー変換とは何かの一般的な概要です。メッセージをエンコードするには、最初にメッセージの長さが奇数(5、7、9など)であることを保証する必要があります。その後、あなたは、グリッドを作るnことにより、n場所、nメッセージの長さがあります。最初の行は元のメッセージです。その後の各行はその上の行ですが、1文字左にシフトし、最初の文字が後ろに移動します。例えば: Hello World ello WorldH llo WorldHe lo WorldHel o WorldHell WorldHello WorldHello orldHello W rldHello Wo ldHello Wor dHello Worl 次に、NWの各文字をSE対角線上に取り、新しい文字列に入れます。 Hello World H ello WorldH l llo WorldHe o lo WorldHel W o WorldHell r WorldHello d WorldHello e orldHello W l rldHello Wo (space) ldHello Wor …

3
ドルの分割可能性と完全な変化
ポケットに15ドルあります。同様に、私は変化をもたらさない店にいます。ブラウジング中に、価格が10ドル(税込)のアイテムを見つけました。お金を失うことなく、そのアイテムを購入できますか? この場合、答えはイエスです。$ 15がどのように分割されても(1つ10と1つ5、3つ5つ、または他の何か)に関係なく、私は常に正確な10ドルを必要とします。 2番目の例として、ポケットに0.16ドルあります。正確に支払うことができる他の金額は何ですか? Possible Divisions: 0.01, 0.05, 0.10 0.01, 0.05 x 3 0.01 x 16 Guaranteed Exact Change: 0.01, 0.05, 0.06, 0.10, 0.11, 0.15, 0.16 ポケットに$ 0.27ある場合はどうなりますか? Possible Divisions: 0.01 x 2, 0.25 0.01 x 2, 0.05, 0.10 x 2 0.01 x 2, 0.05 x 3, 0.10 0.01 x …
11 code-golf 

1
Davenport-Schinzelシーケンスを生成する
バックグラウンド ダヴェンポート-Schinzel配列は、 2つの正の整数パラメータを有しているdとn。によって、指定されDS(d,n)たパラメータのすべてのDavenport-Schinzelシーケンスのセットを示します。 自然数の全てのシーケンスを考えてみましょう1にn満足している、包括的、: シーケンス内の連続する2つの番号は同一ではありません。 より大きい長さのサブシーケンス(連続している必要はありません)はありませんd。 Lこのようなシーケンスの最大長を指定してみましょう(dとn)。次に、DS(d,n)長さを持つそのようなすべてのシーケンスのセットですL。 いくつかの例が役立つかもしれません。ましょうd = 4、n = 3。これらの制約のある最長のシーケンスには、がありL = 8ます。したがって、以下はのメンバーですDS(4,3): [1, 2, 1, 3, 1, 3, 2, 3] 連続する同一の番号はなく、lengthの交互のサブシーケンスがあります4が、より長いサブシーケンスはありません。 1 2 1 2 1 2 1 2 1 3 1 3 1 3 1 3 2 3 2 3 2 3 2 3 1 3 1 …

1
擬似馬ポリグロット言語検出カウンター
クインは楽しいです。ポリグロットも楽しいです。Polyglot Quinesは存在しますが、バーをさらに高くすることができます。 言語α、β、およびγの有効なプログラムを含むファイルを作成します。ファイルが言語αまたはβプログラムとして(おそらくコンパイル後に)実行されると、プログラムの出力は、このコンテストへの有効な提出と同じ形式になります。ファイルが言語γプログラムとして実行される場合、数値を出力します。この数の値は、2進数として解釈されるプログラムの以前の実行のチェーンです。 この説明を理解するのは少し難しいかもしれませんので、ここに例を示します。Α、Β、およびΓを、入力を言語α、β、またはγとして実行する関数とします。プログラムし、これらのプログラムの出力を返します。ましょう、xがこのコンテストに有効で提出すること。次に、言語β、α、β、α、α、β、およびγをこの順序でxで処理する次の式は、41 10 = 101001 2であるため、41を生成します。 Γ(Β(Α(Α(Α(Β(Α(Β(x)))))))) チェーン内の最後から2番目の実行が言語βの実行であると想定することはできません。オリジナルの投稿が言語γプログラムとして直接実行される場合、0を出力します。 プログラムは、チェーン内で最大16回のコンパイルに対して正しく動作します。つまり、プログラムが最後に印刷する可能性のある最大数は2 15-1です。もちろん、プログラムはより長いコンパイルチェーンをサポートできます。 これは、クリエイティブなソリューションを奨励する人気コンテストです。最高得票の提出が勝ちです。

4
三角形の特定
写真の三角形の数を数えることは、脳のテストで一般的に使用されるタスクです。三角形で構成される図形を含む画像が表示されます。次に、画像内のすべての可能な三角形を見つける必要があります。 仕事 選択した形式の行のリストが表示されます。次に、その中にある三角形のリストを出力する必要があります 入力 行のリストが与えられ、各行は4つの整数座標(例:)で与えられx1 y1 x2 y2ます。明確に文書化されている限り、入力形式を選択できます。例: 0 4 8 1 0 4 9 5 8 1 9 5 2 8 0 4 9 5 2 8 [[0, 4, 8, 1], [0, 4, 9, 5], [8, 1, 9, 5], [2, 8, 0, 4], [9, 5, 2, 8]] これは画像と同じ入力です: 交差点を使用する別の1つ(スペースを節約するために1つの形式のみ): …

3
矢印キーでテキストをナビゲートする
バックグラウンド ほとんどの(中途半端な)テキストエディタでは、矢印キーを使用してテキストをナビゲートできます。上下に移動すると行を移動できますが、左右に移動すると行をまたがります。さらに、行がカーソルのX位置より短い場合、カーソルは行の最後に表示されますが、上下に移動し続けると同じX位置に戻ります。おそらく、次の視覚的な説明が役立ちます。 モーションの例 テキストの簡単なサンプルは次のようになります。カーソルは、このテキストの2文字の間、または最後に挿入されます。 ----- --- ------ let's put the cursor here: X----- --- ------ move down (v): ----- X--- ------ move left (<): -----X --- ------ v ----- ---X ------ v (notice how the X position of the cursor has been maintained) ----- --- -----X- ^ ----- ---X ------ …
11 code-golf 

11
バイナリ暗号化
これはxkcd#153に基づいています。 2つのパラメーターをとるプログラムまたは名前付き関数を作成します。各パラメーターは、文字列、またはバイトまたは文字のリストまたは配列です。2番目のパラメーターには、lrfu(または同等のASCIIバイト)からの文字のみが含まれます。これは、最初のパラメーターで表されるビットシーケンスで実行される一連の命令として解釈される必要があります。 実行される処理は、次と同等である必要があります。 最初のパラメーターを各文字のビットを連結して形成される単一のビット文字列に変換します(7ビットASCII、8ビット拡張ASCII、または標準Unicodeエンコードのいずれかとして解釈されます)。たとえば、最初のパラメーターが"AB"次にある場合、これは10000011000010(7ビット)、0100000101000010(8ビットまたはUTF-8)、、00000000010000010000000001000010または01000001000000000100001000000000(2つのエンディアンのUTF-16)などのいずれかになります。 2番目のパラメーターの各文字について、順番に、対応する命令を実行します。 lビット列を左に回転します。例えばに10000011000010なり00000110000101ます。 rビット列を右に回転します。例えばに10000011000010なり01000001100001ます。 fビット列の各ビットを反転(または反転)します。例えばに10000011000010なり01111100111101ます。 uビット列を反転します。例えばに10000011000010なり01000011000001ます。 ビット文字列をビットごとに1文字を使用するASCII文字列に変換します。例えばに10000011000010なり"10000011000010"ます。これは、7/8ビットのすべてのセットに文字が割り当てられているわけではないためです。 例(Python): >>> f("b", "rfu") 01110011 それはターン"b"の8ビットASCIIバイナリ表現に01100010、それが正しい(回転00110001)(各ビットを反転させ11001110)、それを(反転します01110011)。 柔軟性 その他の文字は文字の代わりに使用することができるl、r、f、そしてu、彼らは明確に文書化されなければなりません。 スコアボード 次のコードスニペットを作成してくれた@Optimizerに感謝します。使用するには、[コードスニペットを表示]をクリックし、一番下までスクロールして[►コードスニペットを実行]をクリックします。 コードスニペットを表示 var QUESTION_ID = 45087; var answers = [], page = 1;var SCORE_REG = /\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/;function url(index) {return "http://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=votes&site=codegolf&filter=!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";}function getAnswers() {$.ajax({url: url(page++),method: "get",dataType: …

3
2x2固有システムを解く
少し線形代数の背景を持つ人にとって、課題はこれと同じくらい簡単です:与えられた複素2x2行列の固有値と固有ベクトルを決定します。I / Oの詳細などのチャレンジに進んでください。固有システムについて少し復習する必要がある場合は、先に進んでください。 バックグラウンド 特性方程式行列のAは、によって定義されます。 det| A - λI | = 0 ここで、λは複素数(スカラー)パラメーター、Iは単位行列、det | ... | ある行列が。多項式左側の評価さλは、特性多項式、2×2行列の場合には二次です。この特性方程式の解である固有値のA我々のように表すであろう、λ 1及びλ 2。 今固有ベクトルは V IのA満足を A vi = λi vi それぞれについてλ 私は、これは次の2つの未知数(のコンポーネントの2つの方程式系与えV 私は非常に簡単に解決することができます)、。システムは実際には指定不足であり、固有ベクトルの大きさは方程式によって決定されないことに気付くでしょう。通常、固有ベクトルは正規化されます。つまり、√(| x | 2 + | y | 2)= 1です。ここで、xとyはベクトル成分、| x |です。2はxに複素共役を掛けたものです。 注固有値が縮退であってもよいこと、すなわちλ 1 =λ 2。この場合、2つの線形独立な固有ベクトルを使用して、単一の連立方程式を満たすことができる場合とできない場合があります。 チャレンジ 複素数要素を含む2x2行列が与えられた場合、その2つの(おそらく同一の)固有値と、各固有値の正規化された固有ベクトルを決定します。結果の数値は、少なくとも3(10進数)有効数字まで正確でなければなりません。任意の行列要素の実数部と虚数部が[-1,1]の範囲にあると仮定できます。 STDIN、コマンドライン引数、プロンプトまたは関数引数を介して入力を取得して、関数またはプログラムを作成できます。結果をSTDOUT、ダイアログボックス、または関数の戻り値として出力できます。 入力および出力には、便利な(ただし明確な)文字列またはリスト形式を使用できます。個々の数値を表すために、フロートのペアまたは複合タイプから選択することもできます。 固有システム(Mathematica …

7
ユーザースコアコードゴルフ-ダイヤモンドの描画[実験的]
この課題は、多かれ少なかれ従来のコードゴルフのように振る舞います。唯一の違いは、文字数またはバイト数で回答を採点する代わりに、ユーザーがコメント内の異なる文字に重みを割り当て 、累積重みが最も低いプログラムが勝つことです。 チャレンジ あなたの仕事は、文字列を取り、最初の文字が中央から始まり、最後に置かれた文字セットに直交する空のスペースを後続の文字が占める菱形を印刷するプログラムを書くことです。スペース()がパディングに使用されます。 たとえば、入力するCATと T TAT TACAT TAT T そして()生産するだろう ) )() ) そして desserts生産するだろう s sts strts strerts streserts stressserts stressesserts stressedesserts stressed desserts stressedesserts stressesserts stressserts streserts strerts strts sts s を9生成し9ます。 詳細 コードには、印刷可能なASCIIと改行のみを含めることができます。(以下の理由を参照してください。) 入力/出力は、stdin / stdoutを使用するか、不可能な場合は同様の代替手段を使用する必要があります。 入力文字列には、印刷可能なASCII(スペースを含む)のみが含まれると想定できます。 ダイヤモンドパターンの一部を含まない先行スペースの列は、出力では許可されません。末尾のスペースの任意の量と組み合わせが許可されます。 オプションで、出力に末尾の改行がある場合があります。 回答は自由に編集できます。 得点 すべてのコードは、改行と印刷可能な95文字のASCII文字のみを使用して記述する必要があります。 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (Stack Exchangeはコードブロック内のスペースとしてタブをレンダリングするため、悲しいタブは許可されません。) これらの96文字にはそれぞれ、重み値が関連付けられています。デフォルトでは、すべての重みは97です。 …

2
到達可能な蛇の方向の数
この課題は、ゲームSnakeについてのものではありません。 長さの水平線を引くことによって形成された2Dのヘビを想像してくださいn。体に沿った整数点で、この蛇は体を90度回転させることができます。最初にヘビの前部を左端に定義すると、ヘビの後ろの部分が回転によって移動し、前の部分はそのままになります。繰り返し回転することにより、さまざまな蛇の形を作ることができます。 ルール ヘビの体のある部分が別の部分と重なることはできません。 ヘビの体のどの部分も間に重なることなく、最終的な方向に到達できる必要があります。この問題では、接触する2つのポイントが重複しているとカウントされます。 私はヘビとその逆を同じ形だと考えています。 仕事 回転、平行移動、鏡面対称まで、作成可能なさまざまな蛇の形の総数はいくつですか? ヘビの体の一部の回転の例。想像n=10してみると、ヘビは直線の開始方向にあります。ここで、4反時計回りに90度回転します。私たちはヘビ4を10(ヘビ の尾)から垂直に、ヘビをから水平0に4横たえます。ヘビの体には直角が1つあります。 以下は、MartinBüttnerのおかげです。 水平のヘビから始めます。 次に、位置4から回転します。 この向きで回転した後、私たちは終わります。 次に、異なるヘビのこの方向を考えてみましょう。 ローテーション中にオーバーラップが発生する違法な動きを見ることができます。 スコア あなたのスコアは、nあなたのコードが私のコンピューター上で1分以内に問題を解決できる最大のものです。 回転が発生すると、蛇の半分が一緒に移動します。回転しているこの部分のいずれかが、回転中にヘビの一部と重なるかどうかを心配する必要があります。簡単にするために、蛇の幅はゼロであると想定できます。ヘビの特定の点でのみ、時計回りに反時計回りに最大90度回転できます。なぜなら、同じ方向に同じポイントで2つの回転が必要になるため、ヘビを2つに完全に折り畳むことはできません。 作れない形 作ることのできない形の簡単な例は首都Tです。より洗練されたバージョンは (この例についてはHarald Hanche-Olsenに感謝します) この例では、すべての隣接する水平線は垂直線と同様に1離れています。したがって、この位置からの法的な動きはなく、問題は可逆的であるため、開始位置からそこに到達する方法はありません。 言語とライブラリ 自由に利用できるコンパイラ/インタープリター/などを備えた任意の言語を使用できます。LinuxおよびLinuxでも自由に利用できるライブラリ用。 私のマシン タイミングは私のマシンで実行されます。これは、AMD FX-8350 8コアプロセッサへの標準のUbuntuインストールです。これは、コードを実行できる必要があることも意味します。結果として、簡単に入手できる無料のソフトウェアのみを使用し、コードをコンパイルして実行する方法の完全な指示を含めてください。

5
グレート、ホワイト、ノース!
えっ! カナダ人の問題は、ムースの狩猟とダムの修理で長い一日を過ごした後、キャビンへの帰り道を忘れることがあることです!私たちの便利なラップトップ(常に私たちの側にある)が、私たちを家に向ける何らかの方法を持っていたら、素晴らしいと思いませんか?さて、コンパスをコンピューターに表示すると、北を指すと最も明るくなると長い間言われてきました。私はこれをテストしたいと思いますが、ハードドライブにはすでにメープルシロップのレシピ(およびそれらは使用できません)がいっぱいになっているため、次回の旅行で持ち歩くコンパクトなプログラムが必要です。したがって、あなたの仕事は、実行時に次のコンパスローズの画像を保存または表示するプログラムを設計することです。 文字は異なるフォントである場合があります。覚えておいてください、最小は最高ですので、最小のバイト数が勝ちます! 仕様書 色 薄紫:#9999FF グレー:#E5E5E5 長さと角度 角度a= 45° 角度b= 90° 長さc= 250単位 長さd= 200単位 長さe= 40単位 長さf= 45単位 明確化 テキストは、適切なフォントである場合があり、適切な場合は、教育を受けた平均的な人間が読むことができることを示します。 テキストは、最も近いポイントのスパイクから3単位離れている必要があり、バラに触れてはならず、直立している必要があります。 バラの中心からスパイクの端点を越えて線を引く場合、+ /-2単位の精度でテキストの中心を通過する必要があります(テキストは軸aに沿って中央に配置する必要があり、ここでのaスパイクの端部を介して、など)を越えて、ページの中央から延び 各文字は少なくとも15単位x 15単位であり、x / yまたはy / x比が2:1以下でなければなりません(伸縮なし-可読性) 参照画像の中央に最も近いスパイクとテキストを通る薄暗い円は描画されません。 画像は正方形で、少なくとも400x400ピクセルである必要があります ソース内の圧縮画像は許可されていません 単位は少なくとも1ピクセルである必要があります

4
スーパースクエアレイン
Scream™ウィンターセールが始まり、あなたは自分に強烈なミニマリストアクションゲーム、Super Squareを手に入れました。それをプレイすると、あなたはそのゲームがとてつもなく難しいか、あなたがそれが本当に下手だということに気づきます。特に、毎回あなたを得るように思われるこの「雨」パターンがあります... 欲求不満のあなたは、自分自身に別の挑戦をすることにします。ASCIIアートで雨のパターンを描いてください! 入力 入力は、パターンのサイズを示す単一の正の整数で、nSTDINまたは関数の引数を介して指定されます。 出力 出力は、指定されたサイズの雨パターンで、文字列として返されるか、STDOUTを介して出力されます。画像全体の前後の前後の空白は問題ありません。さらに、画像は画面の左に面一である必要はありませんが、はっきりと識別できる必要があります。 ここにありn = 10ます: ................... | ----------------- | | ............... | | | ------------- | | | | ........... | | | | | --------- | | | | | | ....... | | | | | | | ----- | | | | …

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