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

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

1
ループ配列を生成する
前書き ポインタ配列は配列であるL非ゼロの整数の0 ≤ L[i]+i < len(L)すべてのインデックスに当てはまるi(0ベースのインデックスを想定します)。インデックスはインデックスをi 指していると言いますL[i]+i。インデックスが長さの単一サイクルを形成する場合、ポインタ配列はループですlen(L)。ここではいくつかの例を示します。 [1,2,-1,3]は3インデックスを指し示していないため、ポインタ配列ではありません。 [1,2,-1,-3]はインデックスを指していませんので、ポインタ配列ですが、ループではありません-1。 [2,2,-2,-2] インデックスは2サイクルを形成するため、ポインタ配列ですが、ループではありません。 [2,2,-1,-3] ループです。 入力 入力は、妥当な形式の非ゼロ整数の空でないリストです。ソートされていないか、重複している可能性があります。 出力 出力は、入力リスト内のすべての整数(および場合によっては他の整数も含む)を含むループであり、多重度をカウントします。それらは入力と同じ順序で発生する必要はなく、出力はいかなる意味でも最小である必要はありません。 例 入力の[2,-4,2]場合、許容可能な出力はになります[2,2,-1,1,-4]。 ルールとスコアリング 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。回答にいくつかの例の入力と出力を含めることを歓迎します。 テストケース これらは形式で与えられますinput -> some possible output(s)。 [1] -> [1,-1] or [1,1,1,-3] [2] -> [2,-1,-1] or [1,2,-2,-1] [-2] -> [1,1,-2] or [3,1,2,-2,-4] [2,-2] -> [2,-1,1,-2] or [2,-1,2,-2,-1] [2,2,2] -> [2,-1,2,-2,2,-2,-1] …

5
自動ハウスビルダー
自動住宅建設用ナノボットが製造されており、それらをコーディングするのはあなたの仕事です。 これは入力によって作成された家です 7 4 2 /-----/| / / | |-----| | | | | | | / |_____|/ 入力は、家の寸法を含む文字列です。 7 は幅です。 |_____| ---7--- 4 高さです。 | | | | 2 深さです / / この入力が与えられたら、家を作成できますか? コードは、ロボットに収まるようにできるだけ小さくする必要があります。 ノート 入力として与えられる最小寸法は3 2 2です。あなたのプログラムは、より小さい寸法で何でもできます3 2 2。 テストケース 3 2 10 /-/| / / | / …

9
ラケット/スキームでのゴルフのヒント
ラケット / スキームでゴルフをするための一般的なヒントは何ですか?私は、少なくともラケット/スキームに特有のゴルフ問題全般のコーディングに適用できるアイデアを探しています(例えば、「コメントを削除する」は答えではありません)。 SchemeとRacket(以前のPLT Scheme)は技術的に異なる言語ですが、多くの点で非常に似ており、多くのコード(どちらかといえば)が意図したとおりに実行されることは承知しています。ヒントが前述の言語のいずれかにのみ適用される場合は、そのように注意してください。
15 code-golf  tips  lisp 

30
文字列を切り替える
課題は、単に別の文字列内の文字列を切り替えることです。 説明 場合は、トグル文字列はのサブある主な文字列は、すべてのインスタンス削除トグル文字列からの主な文字列を、それ以外の場合は、メイン文字列の最後にトグル文字列を追加します。 ルール すべての文字列は印刷可能なASCII文字で構成されています この関数は、メイン文字列とトグル文字列の 2つのパラメーターを受け取る必要があります。 主な文字列は空にすることができます。 トグル文字列は空にすることはできません。 結果は文字列でなければならず、空でもかまいません。 最短の答えが勝ちです。 例 function toggle(main_string, toggle_string){ ... } toggle('this string has 6 words ', 'now') => 'this string has 6 words now' toggle('this string has 5 words now', ' now') => 'this string has 5 words' テストケース '','a' => 'a' 'a','a' …
15 code-golf  string 


12
キューブ距離のラビニティ数
この Numberphileエントリに触発された バックグラウンド 整数nの立方体距離数は、ここで、与えられたxに対してx³距離離れた整数のセットとして定義されます。簡単な例では、とと、キューブの距離番号があります。n=100x=2{92,108} これは、単にxを変更するだけで、より大きなセットに拡張できます。x ∈ {1,2,3,4}同じとn=100、我々は結果セットを持っています{36,73,92,99,101,108,127,164}。 レッツは、定義CD(N、X)を、全ての整数の集合としてn ± z³持ちますz ∈ {1,2,3,...,x}。 これで、これらの立方体距離番号の特別なプロパティに注目できます。数値が持つことができる多くの特別なプロパティのうち、ここで興味のある2つのプロパティはprimalityとprime divisorsです。 上記の例CD(100,4)の場合、73, 101, 127すべて素であることに注意してください。セットからこれらを削除すると、が残ります{36,92,99,108,164}。これらの数のすべての素数は(順番に){2,2,3,3,2,2,23,3,3,11,2,2,3,3,3,2,2,41}です。つまり、5つの異なる素数があり{2,3,23,11,41}ます。そこでことを定義することができますCD(100,4)がありravenity 1のを5。 ここでの課題は、特定の入力のラビニティを出力する関数またはプログラムを最小バイトで記述することです。 入力 任意の便利な形式の2つの正の整数、nおよびx。 出力 CD(n、x)を使用して計算された場合、2つの入力数値のラベニティを記述する単一の整数。 ルール 入力/出力は、適切な方法で行うことができます。 標準的な抜け穴の制限が適用されます。 計算を簡単にするために、入力データは、CD(n、x)がセット内で正の数のみを持つ(つまり、CD(n、x)が負の数またはゼロを持つことはない)と想定できます。 関数またはプログラムはn + x³、言語のネイティブ整数データ型に適合するように入力番号を処理できる必要があります。たとえば、32ビットの符号付き整数型の場合、すべての入力数値n + x³ < 2147483648が可能です。 例 n,x - output 2,1 - 0 (since CD(2,1)={1,3}, distinct prime divisors={}, ravenity=0) 5,1 - 2 …

10
入力のタイプを決定する
課題は簡単です。入力のタイプを判別し、そのタイプを示す識別子を出力します。 "UI"、符号なし整数:0、1、34、111111111111111111111111111111111111111111 符号付き整数"SI"、: 、 、、+0 、+1+42-1-3、-111111111111111111111111111111111111111111 "UD"、符号なし10進:0.0、1.23、1234.1234 "SD"、符号付き10進数:-0.0、+0.0、-1.235 「LE」、レター:a- zおよびA-Z 「SY」、記号:ASCIIコードポイント:([32-47, 58-64, 91-96, 123-126]つまり、数字と文字を除くすべての文字) 「ST」、文字列:上記の数値形式のいずれとしても解析できない2つ以上の文字 ルール: 入力は1〜99文字です。 入力には、印刷可能なASCII文字、コードポイントのみが含まれます:32-126。 出力は、上記で定義した2つの識別子文字(UI、SI ...)である必要があります 標準I / Oルールが適用されます 例: UI: 0 01 34 12938219383278319086135768712319838871631827319218923 SI: -0 +01 +1 -123 +123 UD: 0.0 3.1415 2.718281828459045235360287471352662497757 SD: +0.0 -3.1415 +2.718281828459045235360287471352662497757 LE: a k L Z SY: @ …

6
おもちゃ屋の利益
物語 「2016?Al..right」と、おもちゃの売り手ヒルベルトはつぶやいた。彼は目を開け、サラダドレッシングを耳から少しずつ拭き取り​​、朝のキックスタートクリームニットを食べました。例の休日。しかし、彼は今すぐ仕事に行き、その年の会計を終える必要があります。 クリスマスは、特に彼の販売にとって、一年で非常に収穫の多い時期です。ヒルベルトは、それがどのように機能するかを正確に知っています。人が店に来て、提供された最初の贈り物を買います。彼らはそれを支払い、別の店に逃げます。実際には、ギフトが実際に何であるかは、実際には違いを生みません。高すぎない限り、価格も無関係です。それはすべて、クリスマスまでの残り時間に依存します。時間が短ければ短いほど、顧客の後悔は大きくなり、顧客が喜んで支払う価格が大きくなります。 ヒルベルトに必要なのは時計を見ることだけで、顧客はどれだけのお金を使うことができるかすぐにわかります。彼はこの事実を簡単に活用できます。彼は、特定の顧客に販売できる最も高価なギフトを見つけて、それを顧客に提供するだけです。彼は昨年、このcな戦略を採用するのを忘れたことに気付いたのです。しかし、それは変わるでしょう! それにもかかわらず、ヒルベルトは、実際に彼の壮大な計画を使用していた場合、彼のビジネスがどれほど繁栄していたかを知りたいと思っています。彼は彼の店に来た人々のリストをまとめることができましたが、彼が彼らにどれだけのお金を稼ぐことができたかはわかりません。 あなたのタスク(TL; DR) 入力は、利用可能なギフトの価格の昇順リスト、および顧客の予算のリストで構成されます。予算のリストは、顧客がショップに到着したときと同じ順序で、すべての顧客が少なくとも前の予算と同額を支払うという条件で、昇順でもあります。 顧客ごとに、彼らが支払いたいと思う最も高価な贈り物を見つけ、その価格を出力します。予算内でギフトが利用できない場合は、を出力し0ます。 -40%アルゴリズムの漸近的な時間の複雑さがO(n+m)(些細ではなくO(n*m))である場合、文字ボーナスが得られます。入力リストの長さはどこにn, mありますか。 これはcode-golfで、最短バイトが勝ちます。標準的な抜け穴は禁止されています。 例 入力: 1 2 2 2 5 7 10 20 1 1 2 3 6 6 15 21 21 22 出力: 1 0 2 2 5 2 10 20 7 0 このタスクは地元のプログラミング競技会から取られ、私が英語に翻訳しました。元の割り当ては次のとおりです。https://www.ksp.sk/ulohy/zadania/1131/
15 code-golf 

4
ASCIIアートでシンプルな部屋を構築する
部屋は、L字型の部屋など、接続された長方形で構成できます。このような部屋は、各長方形のサイズを表す寸法のリストで説明できます。 2つの入力リストがあるとします。最初の列には、互いに垂直に積み重ねられた長方形の幅が含まれています。2番目には、長方形の高さが含まれています。 例として、入力[4 6][3 2]は6行2列の四角形の上にある4行3列の四角形になります。次の図は、この形状を示しています。壁は「薄い」と見なされるため、入力によって決定されるのは壁間のスペースです。 [4 6][3 2] ____ | | | | | |_ | | |______| 課題は、入力として寸法のリストを取り、部屋の形状をASCIIアートとして出力することです。形式は、サンプル図のとおりでなければなりません。 すべての水平壁はアンダースコアを使用して表示されます すべての垂直壁はバーを使用して表示されます 長方形が接続されている壁があってはならない 左の壁はまっすぐです 詳細については、テストケースをご覧ください。 想定できること: すべての寸法は範囲内にあります [1 ... 20] すべての水平寸法は偶数です 長方形の数は範囲内になります [1 ... 10] 有効な入力のみが与えられます オプションの入力形式(入力ディメンションの順序を決定できます。回答で指定してください)。 テストケース: [2][1] __ |__| --- [4][2] ____ | | |____| --- [2 6 2 …

18
長方形行列の並べ替え
行列が与えられると、のA各行と列Aが並べ替えられている場合(行の場合は左から右、列の場合は上から下に昇順)、「並べ替えられている」と言えます。したがって、このマトリックスはソートされます。 [ 1 2 3 4 5 ] [ 2 2 3 4 5 ] [ 3 3 3 4 5 ] [ 4 4 4 4 5 ] [ 5 5 5 5 5 ] ただし、このマトリックスはソートされていません。 [ 1 2 3 4 5 ] [ 2 1 3 4 5 …

18
PNG画像を反転
ファイル名を引数として使用するか、標準入力からファイル名を読み取り、次のタスクを完了するプログラムまたは関数を作成します。 PNGファイル(引数として指定された名前)から画像を読み取ります。 その画像の色を反転して、たとえば、濃い緑(0、75、30)が(255、180、225)になるようにします(255-0 = 255、255-75 = 180および255-30 = 225のため)。アルファチャネル値を変更しないでください。 その画像をa.png(png形式で)というファイルに出力するか、GUIウィンドウに表示します。 これは、コードゴルフ。標準の抜け穴が適用されます。

4
マトリックス内のすべての行と列を回転させる
チャレンジ n x n整数の行列が与えられた場合n >= 2 1 2 3 4 および正確2nな要素を持つ整数のリスト [1,2、-3、-1] 回転した行列を出力します。このマトリックスは、次の方法で構成されます。 リストの最初の整数を取得し、この値で最初の行を右に回転します。 次の整数を取得し、最初の列をこの値だけ下に回転します。 次の整数を取得し、マトリックスのすべての行と列を1回回転するまで、この値などで2番目の行を右に回転します。 リストには負の整数を含めることができます。これは、行/列を右/下ではなく左/上にシフトすることを意味します。整数がゼロの場合、行/列を回転させないでください。 上記の入力を使用した例 リスト要素マトリックスの説明 -------------------------------------------------- ---------- 1 2 1 1行目を右に1回転 3 4 2 2 1 1列目を2回転下げる 3 4 -3 2 1 2行目を左に3回転 4 3 -1 2 3 2列目を1つ上に回転 4 1 ルール 最も便利な入力形式を選択できます。どちらを使用するかを明確にしてください。 機能または完全なプログラムが許可されます。 入出力のデフォルト規則。 標準の抜け穴が適用されます。 …

5
外部からどのくらい離れていますか?
中心が整数間隔で配置された軸に沿った単位正方形要素に分割された2D領域を取ります。エッジは、2つの要素で共有される場合は内部エッジと呼ばれ、それ以外の場合は外部エッジと呼ばれます。 あなたの目標は、として知られている各要素の中心から出発外縁に到達するために横断しなければならない隣接要素の最小数を見つけることであるtraversal distance、またはdistance略しています。エッジのみを横断できます(つまり、コーナーカット/斜め移動はできません)。「外部要素」(少なくとも1つの外部エッジを持つ要素)は0、外部エッジに到達するために隣接する要素を横断する必要があると見なされることに注意してください。 入力 入力は、すべての要素の中心の(x、y)を示す非負の整数ペア座標のリストです。重複する要素はないと想定されます(つまり、x / yペアが要素を一意に識別します)。要素の入力順序について何も想定してはいけません。 入力の原点を任意の場所(0、0、1、1など)に変換できます。 すべての入力要素が接続されていると仮定できます。つまり、上記の規則を使用して、任意の要素から他の要素に移動することが可能です。これは、2D領域が単に接続されているという意味ではないことに注意してください。内部に穴がある場合があります。 例:次は無効な入力です。 0,0 2,0 エラーチェックは不要です。 入力は、任意のソース(ファイル、stdio、関数パラメーターなど)からのものです。 出力 出力は、各要素を識別する座標のリストと、エッジに到達するために通過した対応する整数距離である必要があります。出力は、任意の要素の順序にすることができます(たとえば、入力として受け取ったのと同じ順序で要素を出力する必要はありません)。 出力は、任意のソース(ファイル、stdio、関数の戻り値など)に対するものです。 要素の座標を外部距離と一致させる出力はすべて問題ありません。たとえば、これらはすべて問題ありません。 x,y: distance ... [((x,y), distance), ...] [(x,y,distance), ...] 例 テキスト入力例の形式はx,y、1行に1つの要素があります。これを便利な入力形式に変更してください(入力形式の規則を参照)。 テキスト例の出力は、x,y: distance行ごとに1つの要素を持つ形式です。繰り返しになりますが、これを便利な出力形式に変更してください(出力形式の規則を参照)。 グラフィカルな図の左下の境界は(0,0)であり、内部の数字は、外側の端に到達するために予想される最小距離を表します。これらの図は純粋にデモンストレーションのみを目的としていることに注意してください。プログラムはこれらを出力する必要はありません。 例1 入力: 1,0 3,0 0,1 1,2 1,1 2,1 4,3 3,1 2,2 2,3 3,2 3,3 出力: 1,0: 0 3,0: 0 …

1
同色の算術級数
ファンデルワーデンの定理によると 与えられた正の整数rとkに対してN、整数{1, 2, ..., N}がそれぞれr 異なる色のいずれかで色付けされている場合、kすべて同じ色の算術級数で少なくとも整数があるような数があります。最小のものNは、ファン・デル・ワーデン数W(r, k)です。 あなたの目標は、W(r, k)正の整数入力rとを与えられたファンデルワーデン数を計算することkです。少ないバイトが勝ちます。 この関数は非常に急速に成長し、計算に時間がかかることに注意してください。でもW(4, 4)不明です。無制限のリソース(時間、メモリ、スタックの深さなど)を備えた理想的なコンピューターでコードを実行すると想定できます。あなたのコードは理論的には答えが分からない値に対しても正しい答えを与えなければなりません。 この関数を計算する組み込み関数は許可されていません。 例 ためのr = 2色と長さの進行k = 3、長さ-が存在する8ような進行を回避する配列、すなわち3同じ色の等間隔の要素: B R R B B R R B しかし、そのような長さの9シーケンスはありませんW(2, 3) == 9。例えば、 R B B R B R R B R ^ ^ ^ 表示されている長さ3と同色の算術級数が含まれています。 テストケース おそらく、小さなケースのみをテストできます。 +-----+-----+-----+-----+-----+-----+------+ | | k=1 | …

3
宇宙船はどこに行くのですか?
Zgarbによって提案されたアイデアに基づいています。 宇宙船は通常の3Dグリッドを動き回っています。グリッドのセルには、右手座標系xyzの整数でインデックスが付けられます。宇宙船は原点から始まり、正のxに沿って向きます軸に、正のz軸が上向きになります。 宇宙船は、空ではない一連の動きによって定義される軌道に沿って飛行します。各動きはF、宇宙船がそのセルの向きに沿って1つのセルを移動させる(順方向)、または6つの回転のいずれかですUDLRlr。これらは次のようにピッチ、ヨー、ロールに対応します。 ダイアグラムを作成してくれたZgarbに感謝します。 UpとD自分自身で宇宙船のピッチを90度変更します(方向は宇宙船の機首の動きに対応します)。 Lエフトと R ightは、宇宙船のヨーを90度変化させます。彼らはちょうど通常の左と右のターンです。 leftとrightは90度のローリング運動で、方向はどの翼が下に動くかを示します。 これらは常に関連する軸が一緒に回転するように、宇宙船に対して相対的に解釈される必要があることに注意してください。 数学的には、宇宙船は最初は位置(0, 0, 0)にあり、(1, 0, 0)ベクトルに沿って(0, 0, 1)上向きに指します。回転は、座標系に適用される次のマトリックスに対応します。 U = ( 0 0 -1 D = ( 0 0 1 0 1 0 0 1 0 1 0 0 ) -1 0 0 ) L = ( 0 -1 0 R …

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