タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

1
ギャップとテトリスの破片の接続
入力または出力としてテトリスブロックのリストを指定するか、ピースが接続できる同じ高さレベルの2つのポイント間の最大ギャップを返すプログラムまたは関数を作成する必要があります。 7種類のテトリスピースは次のとおりです。 これらのピースを、それぞれ文字I、J、L、O、S、T、Zで参照し、形状を参照します。テトリスゲームのようにピースを回転させることはできますが、ミラーリングすることはできません。 私たちのタスクは、与えられたピースから直交接続された領域(側面が側面に接続されている)を作成することです。この領域は、同じ高さにある2つの単位正方形を(直交して)接続する必要があります。ブリッジできる2つの正方形の間の最大のギャップを見つける必要があります。 詳細な例 ピースLを使用すると、3つのギャップを接続できます。 L XLLLX ピースSを使用すると、2つのギャップを接続できます SS XSSX ピースS、S、Oを使用すると、7のギャップを接続できます(8のギャップを接続できないことに注意してください) S XSSOO SSX SOOSS 入力 大文字のI、J、L、O、S、T、およびZのみを含む使用可能なピースを表す文字列。すべての文字は完全なテトリスのピースを表します。 文字列内の文字はアルファベット順になります。 文字列は少なくとも1文字の長さになります。 出力 単一の正の整数、指定されたピースと接続可能な最大のギャップ。 例 入力=>出力 OSS => 7 LS => 5 LZ => 6 ZZZZ => 10 LLSSS => 14 IIJSSSTTZ => 28 IISSSSSS => 24 OOOSSSSSSSSSSSSTT => 45 IJLOSTZ => …
14 code-golf  tetris 

12
数値として分割、文字列として結合、繰り返し
次のプロセスを検討してください。 N.整数非負撮影 などを27。 それを整数に分割N - floor(N/2)しfloor(N/2)(「大きい」と「小さい」半分)、その順序で書き込みます。 例えばに27なり14 13ます。 スペースを削除して、整数をより大きな整数に結合します。 例えばに14 13なり1413ます。 手順2と3を必要な回数繰り返します。 例えば1413→ 707 706→ 707706→ 353853 353853→ 353853353853→... この課題は、まさにこれを行うことですが、必ずしも10進ではありません。 チャレンジ B、N、Sの3つの数字を取り込むプログラムを作成します。 Bは2〜10の整数で、Nの基数(2進数から10進数)です。 Nは、分割-再結合プロセスを適用する非負の整数です。ユーザー入力を容易にするために、整数ではなくベースBの文字列として指定されます。 Sは、分割と再結合のプロセスを繰り返す回数である負でない整数です。 プログラムの出力は、S分割-結合プロシージャの後のベースBのNの文字列表現です。 Sがの0場合、分割は行われないため、出力は常にNです。 Nがの場合0、すべての分割はフォーム0 0を持ち、0再び縮小されるため、出力は常に0です。 例 B = 10, N = 27, S = 1 → 1413 B = 10, N = 27, S = 2 …

4
LOLCODEでのゴルフのヒント
LOLCODEでゴルフをするための一般的なヒントは何ですか?私は、少なくともLOLCODEに特定のゴルフ問題全般に適用できるアイデアを探しています。(たとえば、「コメントの削除」は答えではありません)。回答ごとに1つのヒントを投稿してください。
14 code-golf  tips 

1
12コイン問題
バックグラウンド 12コインの問題は、就職の面接で一般的に使用される古典的なバランスパズルです。このパズルは1945年に初めて登場し、祖父が母と結婚するように頼んだときに父に提示されました!パズルには12個のコインがあり、そのうちの1つは他のものよりも重いか軽い(どちらかはわかりません)。問題は、バランススケールを3回使用して一意のコインを決定することです。いくつかのバリエーションでは、コインが重いか軽いかを識別することも必要です。 ここでのタスクには、最悪の場合に可能な限り少ない計量を使用して、n個のコインを含む一般的な問題を解決することが含まれます。コインが重いか軽いかを識別する必要はなく、どちらかだけです。さらに、指定されたセット以外の追加のコインにはアクセスできません(奇妙なことに、違いが生じます)。 最大で(3 ^ k-1)/ 2個のコインに対してk個の計量で十分であることがわかります(したがって、このバリエーションでは4個の計量で実際に13個のコインを処理できます)。さらに(そして驚くべきことに)、将来の計量が過去の結果に依存するのではなく、計量の完全なセットを事前に選択することが可能です(ただし、ここでは必要ありません)。2つの可能なソリューションの説明については、このペーパーとこのQuoraの回答を参照してください。 仕事 STDIN、コマンドライン引数、または関数引数を介して整数nを入力として関数またはプログラムを作成します。これにより、最悪の場合に可能な限り少ない計量を使用してnコインの問題を解決します。プログラムは: 計量器の1,2,3-4,5,6両側にあるコインのリストを示す形式で計量を標準出力に印刷します。計量されていない硬貨については言及しないでください。コインには暗黙的に1からnまでの番号が付けられ、番号順に印刷する必要はありません(2,1-3,4と同じ1,2-3,4です)。 各プログラムを秤量した後であるべき、STDINを介して入力を待つ必要があり<、=または>、スケールの左側は、ライター同じ、または右側よりも重いかどうかを示します。 最後の計量結果の後、プログラムは一意のコインの番号を印刷または返す必要があります。 プログラムは、ユーザーからの一貫性のない結果入力を処理する必要はありません。 プログラムは3未満のnを処理する必要はありません。 出力例 >> 3 1-2 >> = 1-3 >> < 3 # using Quora algorithm >> 13 1,2,3,4-5,6,7,8 >> < 1,2,5-3,4,6 >> > 3-4 >> < 3 # using paper algorithm >> 13 1,2,3,4-5,6,7,8 >> < 2,6,7,9-3,8,10,11 …

8
ホワイトスペースでのゴルフのヒント
ホワイトスペースでゴルフをするための一般的なヒントは何ですか?私はコードゴルフの問題に適用できるアイデアを探していますが、少なくとも空白に固有のアイデアも探しています(たとえば、「コメントの削除」は答えではありません)。 回答ごとに1つのヒントを投稿してください。

13
連結整数からの最大値と最小値
この問題は、すべてのソフトウェアエンジニアが1時間以内に解決できるはずの5つのプログラミング問題に由来しています。最初のいくつかの問題は些細なことですが、4番目の問題はもう少し興味深いものです。 標準入力で単一のスペースで区切られた整数のリストが与えられた場合、整数をそれぞれの行に連結することで取得できる最大値と最小値を出力します。 例えば: 入力: 5 56 50 出力: 50556 56550 さまざまな注文ポイント: 結果の順序は最小から最大です。 印刷できるのは最小値と最大値のみです(すべてのバリエーションを繰り返して印刷することは無効です)。 リストには常に2つ以上の整数があります。 最大と最小の結果が同じになる可能性があります。inputの場合5 55、数値555を2回印刷する必要があります。 整数は必ずしも明確ではありません。5 5有効な入力です。 0整数の先頭のs は有効な入力ではありません。あなたはなりませんためのアカウントに必要05 55。 これはコードゴルフであるため、最短のエントリーが勝ちです。
14 code-golf  number 

6
制御不能の丸めエラー
バックグラウンド 最近、小さな会計事務所に雇われました。会計の世界はあなたにとっていくぶん外国のものなので、あなたがすべての専門家のガイドラインに従っているかどうかはわかりません。特に、これらすべての数値をいつ、どの方向に丸めるべきかわからないので、ほとんどの場合、あなたはそれを翼に乗せて最善を望みます。 入力 入力は、単純な計算を表す単一の文字列です。文字で区切られたいくつかの非負の整数が含まれています+-*/。文字列は左から右に読み取られ、通常の優先順位規則は無視されるため、"23+1*3/4"「23で始まり、1を加算し、3を乗算し、4で除算する」ことを意味します。結果は18になります。0(0それ自体を除く)、またはゼロによる除算。 出力 計算の各段階で、結果を最も近い整数に切り上げまたは切り捨てるか、そのままにしておくことができます。最後に、整数の結果を得るために切り上げまたは切り捨てます。あなたの出力は、そのような計算から生じる可能性のある整数のリストであり、ソートされ、重複はありません。 ルール 完全なプログラムまたは関数のいずれかを作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース "42" -> [42] "2+0+4-0" -> [6] "23+1*3/4" -> [18] "5/2" -> [2,3] "5/2+7/3*6-1" -> [17,18,19,23] "23/2/2*30-170/3" -> [-7,-6,-2,-1,0,1,3,4] "1/3*2*2*2*2*2*2" -> [0,16,20,21,22,24,32,64] "1/3*9" -> [0,3,9]

7
L字型トロミノを使用して2 ^ N x 2 ^ Nグリッドをタイリングする
数学的帰納法の証明手法について最初に生徒に教えるとき、一般的な例は、2 N ×2 NグリッドをL字型のトロミノでタイリングし、1つの所定のグリッドスペースを空のままにする問題です。(Nは非負の整数です。) あなたがまだそれを知らないならば、私はあなたにそれを任せます。それについて議論する多くのリソースがあります。 ここでのタスクは、Nの値と、空のままにするグリッド空間の座標を取り込んで、結果のtrominoタイルグリッドのASCII表現を出力するプログラムを作成することです。 キャラクターOは空のスペースを埋め、トロミノの4つの回転は次のようになります。 | +- | -+ -+ | +- | (はい、曖昧なことができ+ていると行く-と|、特定の手配のために、それは大丈夫です。) プログラムは、N = 0(1×1グリッドの場合)から少なくともN = 8(256×256グリッドの場合)まで動作する必要があります。の座標であるxとyの値が与えられますO: xは水平軸です。X = 1、左グリッド縁で、X = 2 Nは右グリッドエッジです。 yは垂直軸です。= 1 Yは、Y = 2、上部グリッドエッジでNは、ボトムグリッドエッジです。 xとyは両方とも常に[1、2 N ]の範囲にあります。 したがって、指定されたN、x、およびyに対して、プログラムは、x、yグリッド座標を除く、L字型のトロミノで完全に並べられた2 N ×2 Nグリッドを印刷する必要がありOます。 例 N = 0の場合、xとyは両方とも1でなければなりません。出力は単純に O N = 1、x = 1、y = …

4
スラッシュでランダムウォークを描く
(STDIN /コマンドライン/関数引数を介して)N整数正にかかるプログラムまたは機能を記述し、プリント又は戻る二次元の文字列表現ランダムウォーク Nが長いステップされ、スラッシュから引き出さ:/ \(プラススペースと間隔の改行)。 2Dランダムウォークは、無限整数格子の原点から始まります。その後、N回繰り返し、基本方向(上、下、左、右)がランダムに均一に選択され、歩行者はその方向に1ユニット移動します。結果として得られるパスは、ランダムウォークです。 N = 6のランダムウォークを次に示します。(-1、3)に達すると、それ自体をトラバースします。 これをスラッシュで描くには、基本的に全体を時計回りに45°回転させる必要があります。スラッシュバージョンでは、軸と開始点と終了点は描画されません。 / \ \ /\ このようなより複雑なウォーク(N = 20、ただし伝える方法はありません): これになります: / /\/ /\ \/\/ /\/ \/ プログラムは、これらのタイプのランダムウォークのスラッシュバージョンを生成する必要があります。ウォークが進むそれぞれの新しい方向をランダムに選択する必要があるため、特定のNのプログラムを実行するたびに、ほぼ確実に異なるウォークが生成されます。(疑似ランダム性は問題ありません。) 最低および最高のスラッシュの上下に空行が存在することはありません(オプションの末尾の改行を除く)。また、左端および右端のスラッシュの前後にスペースの空の列があってはなりません。 したがって、N = 1の場合、出力は常に/or \ですが、次のようなことはありません。 / 末尾のスペースは、右端のスラッシュの列を超えない限り許可されます。 最少バイトの送信が勝ちです。これは便利なバイトカウンターです。

1
正方形の対称性を見つける
正の整数のリストを受け取るプログラムまたは関数を作成します。これらの整数はそれぞれ、2D平面上の正方形の辺の長さを表します。各正方形は、平面内の任意の整数座標に移動できますが、回転することはできず、他の正方形と重なることはできません。 空白ごとに異なる印刷可能なASCII文字を使用して(空に使用されるスペースを除く)、プログラム/関数は、反射対称の水平線または垂直線を持つ正方形の単一配列を印刷する必要があります。そのような配置が存在しない場合は、何も印刷しないでください。 四角は区別できるように異なる文字です。すべての正方形の結合によって作成された形状のみが対称である必要があります。リストには94を超える要素は含まれないと想定できます(94文字があるため)。 たとえば、入力がの[2, 1, 2, 2, 2]場合、可能な出力は次のとおりです。 DD-- DD-- Z FFPP FFPP この形状には、反射対称の水平線があります。その上半分と下半分は鏡像です。他にもいくつかの可能性があります:(正方形に触れる必要はなく、同じ文字で2つの正方形が作られていない限り、任意の文字を使用できます。) 55 55 %% %% @ HH HH (( (( G 11 33 11 33 22 44 22 44 対称線は、文字間の境界でもあります。例[2, 4]: !!!! !!!! ++ !!!! ++ !!!! いくつかの正方形のセットは、対称的に配置することは不可能[1, 2, 3]です。 AAA BB C AAA BB (these can't …

3
リストの結合解除
前書き ほとんどの人は、数値のリストをソートするためのマージソートアルゴリズムに精通しています。アルゴリズムの一部として、merge2つのソート済みリストを1つのソート済みリストに結合するというヘルパー関数を作成します。Pythonのような擬似コードでは、関数は通常次のようになります。 function merge(A, B): C = [] while A is not empty or B is not empty: if A is empty: C.append(B.pop()) else if B is empty or A[0] ≤ B[0]: C.append(A.pop()) else: C.append(B.pop()) return C アイデアは、最初の要素の小さい飛び出る維持することであるAとのB両方のリストが空である、とに結果を収集するまでC。場合AとBの両方にソートされ、その後、そうですC。 逆に、if Cがソートされたリストであり、それを任意の2つのサブシーケンスに分割した場合、AおよびB、AおよびBもソートされますおよびmerge(A, B) == C。興味深いことに、Cソートされていない場合、これは必ずしも当てはまらないため、この課題が発生します。 入力 あなたの入力はリストとして与えられたいくつかの最初の2*n非負整数の順列です。[0, 1, 2, ..., 2*n-1]n > …

4
スパイラルプログラミング
単一の整数Nを受け入れ、下のスパイラルの最初のNバーを中央の垂直バーから時計回りに外側に向かって(文字列として)出力または返す名前付き関数またはプログラムを作成します。 _______________ / _____________ \ / / ___________ \ \ / / / _________ \ \ \ / / / / _______ \ \ \ \ / / / / / _____ \ \ \ \ \ / / / / / / ___ \ \ \ \ \ \ …

4
ax + bの最大値を見つける
(a、b)のリストとxのリストが与えられます。各xの最大ax + bを計算します。a、b、およびxが非負の整数であると仮定できます。 (あなたのコードがそれを必要とする場合は、入力、ランダムにではない)あなたのプログラムや機能が期待される中で実行する必要がありますO(NログN)時間、nは入力長の合計(両方のリストの長さの合計または最大値)です。 これはコードゴルフです。最短のコードが優先されます。 例 [[2 8] [4 0] [2 1] [1 10] [3 3] [0 4]] [1 2 3 4 5] 出力: [11 12 14 16 20] 説明: 11 = 1*1 + 10 12 = 1*2 + 10 = 2*2 + 8 14 = 2*3 + 8 16 …

6
仕様から長方形を生成する
前書き この課題は、2Dパターンマッチング言語であるGrimeに触発されました。基本的に、文字の2次元グリッドを記述する「グラマー」が与えられ、あなたの仕事はグラマーに従ってグリッドを生成することです。さらに、グリッドは特定の弱い意味で可能な限り小さくする必要があります。 入力 入力は、小文字のASCII文字と記号|およびを含む文字列-です。簡単にするために、入力には繰り返し小文字が含まれていません。文字列は、文字の長方形グリッドのクラスの仕様であり、次のようにスタックを使用して左から右に解析されます。 小文字の文字を考えるとc、スタックにプッシュしm×nた文字のグリッドをc任意のため、m, n ≥ 1。 パイプが与えられたら、|2つのグリッドAをポップBし、スタックから(B一番上にありました)、AB連結Bして得られたグリッドをの右側にプッシュしAます。これには、AそれBが必要で、同じ高さがあります。 ハイフンを指定すると-、2つのグリッドAをBスタックから(上にBあった)ポップし、A/B連結Bして得られたグリッドをの一番下にプッシュしAます。これは、ことが必要AとB等しい幅を持っています。 解析プロセス(文字ごとに異なる場合があります)の一部の選択mおよびn作成中に、入力仕様がスタックの最後に残っている長方形を正しく記述することが保証されます。 出力 出力は、入力で指定された文字の長方形のグリッドです。行または列を削除するとグリッドが無効になるという意味で、グリッドは最小限でなければなりません。改行で区切られた文字列(末尾の改行の有無にかかわらず)、2Dの文字配列、または文字列の配列のうち、最も便利な形式を返すことができます。 上記のとおりに入力を処理する必要はありません。唯一重要なことは、出力が正しいことです。 例 仕様を検討する par-s||e- まず、プッシュすることを選択した1×2の矩形をp、と1×1の長方形aとr(この理由は、後に明らかであろう)。その後、我々はポップaやr長方形を、その垂直連結を押します a r 次に、の1×2長方形をプッシュし、sそれと上の長方形をポップし、それらの水平連結をプッシュします as rs 次に、その四角形と四角形をポップしp、それらの連結をプッシュします pas prs 最後に、の3×1長方形をプッシュし、eそれと上の長方形をポップし、垂直連結をプッシュします pas prs eee これは、プログラムの出力、または少なくとも1つの可能性です。ただし、 ppas ppas pprs eeee また、仕様によって生成されます。多くの行と列を削除できるため、有効な出力ではありません。 より微妙な例として、考慮してください co|m|p|il|e|r|- この仕様は長方形を生成します comp iler これは有効な出力です。ただし、それはまた生成します commp iiler 無効にすることなく単一の行または列を削除することはできないため、これも有効です。 ルール 完全なプログラムまたは機能を提供できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 追加のテストケース これらを使用してプログラムをテストできます。 Input: …

2
ICS海事旗アルファベット
国際信号旗のアルファベット は、船舶、特に静的信号の通信に使用されます。 あなたの課題は、STDINからまたは引数として文字列を取得し、ICSフラグアルファベットで対応するテキストを表示するプログラムまたは関数を作成することです。言語が画面に表示されない場合は、ファイルに保存しても問題ありません。 あなたのプログラムや関数は、文字をサポートするものAZ大文字と小文字で、プラススペースや改行を。他の文字との動作は未定義です。 ディスプレイは、少なくとも水平方向に8フラグ、垂直方向に6フラグを表示 できる大きさでなければなりません。改行を受信する前に右端に到達した場合、またはメッセージが長すぎてディスプレイに垂直に収まらない場合の動作は未定義です。 フラグのアルファベットは以下のとおりです(ローマ字は参照用であり、出力には必要ありません)。 寸法 これらのフラグの寸法については、普遍的に合意された標準はないため、この課題の目的のために以下が適用されます。 フラグは60x60ピクセルで、水平方向と垂直方向の両方に30ピクセルのギャップがあります。 AとBのアゲハチョウは、深さ15ピクセルでなければなりません。 他のすべての線は、水平、垂直、または45度でなければなりません。 特徴は、旗を辺3、4、5または6の仮想NxNグリッドに分割することにより配置されます。上記の画像を参照してください。ただし、さらに明確にするために: A、E、H、K、L、およびUは2x2グリッドに基づいています。各カラーゾーンの幅は30ピクセルです。また、Fのダイアモンドのポイントは、旗の両側に沿って中間になければならない。 JとTは3x3グリッドに基づいています。各バンドは20ピクセルです。 P、N、およびSは4x4グリッドに基づいています。また、Yの対角線は、フラグのエッジを4に分割します。 C、D、R、およびXは、5x5グリッドに基づきます。十字の帯と腕の幅は12ピクセルでなければなりません。 G、W、M、Vは6x6グリッドに基づいています。GのバンドとWのボーダーは幅10ピクセルでなければなりません。MとVの十字の腕は、旗の各端の最初と最後の10ピクセルをカバーし、長い端に沿って40ピクセルの三角形ゾーンを残します。 Iの円は旗の中心にあり、直径は30ピクセルです。 上記のテキストからの+/- 1ピクセルのエラーは許可されます。ご使用の言語がスケーラブルなグラフィックスのみをサポートしている場合、「ピクセル」を「ユニット」を意味すると解釈できます。 色 色は、言語またはそのドキュメントで定義されているように、赤、白、青、黄、黒でなければなりません。言語で色が定義されていない場合は、赤FF0000、白FFFFFF、青0000FF、黄FFFF00、黒0000000を使用できます。 背景は灰色でなければなりません(r、g、bチャンネルは等しく、強度は25%から75%です)。 得点/ループホール これはcodegolfです。バイト単位の最短コードが優先されます。 標準の抜け穴は許可されていません。 フラグを表示するための組み込み関数またはライブラリ関数は使用できません。出力は非テキストである必要があります(特に、ユニコード文字はフラグの形状を構築するために使用されません)。 例 JFK got my VHS PC and XLR web quiz 以下を生成する必要があります

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