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

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

1
最短の部分文字列インデックス
私は怠惰ですが効率的な人です。あなたの多くもおそらくそうです。だから、何かをしているときはいつも、最小限の努力でやりたいと思っています。そのため、この問題を解決するようにお願いしています。 ここにあるのは一種の文書です。このドキュメントのすべての行には、単一の単語または短いフレーズがあります。ドキュメントはソートされていませんが、すべてがどこにあるかはわかっています。私はいくつかのものを使ってより速く物事を見つけることができ、そのために2つ目のリストが必要です。ここがあなたの出番です。このドキュメントのすべてのテキスト行について、いくつかの識別子が必要です。何か私ができるCTRL+ Fが、それはその1つの結果を得るために絶対に必要以上に長くすることはできません。 入力例: (blank) an apple spiderman 3 7pm pick up laundry tequila fake mustache dishes on wednesday banana biscuits (blank) 出力例: ap,3,7,q,f,w,ba,bi 同じページにいることを確認するために、ここでも繰り返します。 入力は、改行で区切られた項目のリストを含むフォーマットされていないテキストファイルです。ここに.txt形式であり、「STUFF.TXT」と呼ばれています。 文書の最初と最後の行は空です。他のすべての行には、長さが> 0のエントリが含まれています。 ファイルには、英数字(すべて小文字)、スペース、および改行のみが含まれます。 望ましい出力は、元のリストと同じ順序での識別子のリストです。 すべてのリストアイテムに複数の検索語を使いたくありません。複数の回答がある場合は、1つ選択してください。どちらでもかまいません。上記の例では「ap」を選択しましたがan apple、「n」、「a」、「pp」、「pl」、「le」を選択することもできます。「an」ではありませんbanana。 ファイルが空になることはなく、重複が含まれることもありません。 必要に応じて、行末記号で一致させることができます。ただし、これは、リストアイテムを区別する方法が他にない場合にのみ使用する最後の手段です(たとえば、 'apple'と 'apples')。 標準の抜け穴は許可されていません。また、これはコードゴルフなので、最短のコードが勝ちます。 もう1つの例: (blank) ban any king bean yen rake raki bar (blank) そしてその出力: ban,ny,g,be,ye,ke,aki,ar

2
vimの行のすべての単語を逆にします
あなたの仕事は、vimスクリプトを構築するか、最大140の印刷可能なASCII文字(ファイル内の任意の場所、カーソルは行の任意の場所で始まる)で単一行のテキストを操作し、すべてのスペースを逆にする一連のキーストロークを提供することです。文字列を同じ順序に保ちながら、文中の文字列を分離しました。 たとえば、入力: roF emos nosaer m'I gnisu a retcarahc-041 timil no siht noitseuq neve hguoht ti t'nseod evlovni .rettiwT RACECAR 返す必要があります: For some reason I'm using a 140-character limit on this question even though it doesn't involve Twitter. RACECAR この結果を達成するために、文字数が最も少ないスクリプト、またはキーストロークが最も少ないスクリプトが勝者です。
9 code-golf  vim 

2
下り坂の迷路ソルバー
下り坂の迷路は、0から9までの一連のスペースで区切られた数字の列と、1つの「S」と1つの「X」として与えられます。ここで、Sは開始を示し、Xは終了を示します。下り坂の迷路では、北、南、東、西(対角線なし)に隣接するスペースにのみ行くことができ、値以下のスペースにのみ行くことができます現在オンです。 プログラムは、迷路をナビゲートするためのパスを入力と同じ形式で出力する必要があります。通過したすべてのスペースにのみ「。」が必要です。それらの中に、そしてすべての訪問されていないスペースにそれらの中に「#」があるはずです。開始セルと終了セルもそれぞれ「S」と「X」を保持する必要があります。迷路には常に解決策があると考えることができます。 入力例: 3 3 3 3 2 1 S 8 9 3 1 1 3 3 0 6 8 7 1 2 2 4 3 2 5 9 7 1 2 1 5 4 3 4 4 6 1 1 X 6 4 4 5 5 5 出力例: . …

2
最大フェンスの配置を数える
バックグラウンド フェンスを作りたいです。そのために、私はたくさんの棒を集めて、それらを地面に貼りました。実際のフェンスを作るためにポールに釘付けにするボードもたくさん集めました。私はものを構築するときに夢中になる傾向があり、おそらくそれを置く場所がなくなるまでボードをポールに釘付けし続けるでしょう。最終的に可能なフェンスを列挙してほしい。 入力 入力は、便利な形式で極の位置を表す2次元整数座標のリストです。重複は含まれていないと想定できますが、その順序については何も想定できません。 ボードは、極の間の直線で表されます。簡単にするために、水平ボードと垂直ボードのみを考慮します。間に2つの極またはボードが存在しない場合、2つの極をボードで結合できます。つまり、ボードを相互に交差させることはできません。ポールとボードの配置は、新しいボードを追加できない場合に最大になります(同等に、水平または垂直に配置された2つのポールの間にポールまたはボードが存在します)。 出力 出力は、極を使用して構築できる最大配置の数です。 例 入力リストを検討する [(3,0),(1,1),(0,2),(-1,1),(-2,0),(-1,-1),(0,-2),(1,-1)] 上から見ると、対応する極の配置は次のようになります。 o o o o o o o o これらの極を使用して構築できる3つの最大配置があります。 o o o o-o o|o o-o o----o o||| o o| | o o-o o|o o-o o o o したがって、正しい出力は3です。 ルール 関数または完全なプログラムのいずれかを記述できます。最も低いバイト数が優先され、標準の抜け穴は許可されません。 テストケース [] -> 1 [(0,0),(1,1),(2,2)] -> 1 [(0,0),(1,0),(2,0)] -> …

2
GIFエンコーダーを作成する
はい、古き良きGIFです。汎用性が高く、特許を嫌い、制限(および特許)のために部分的に廃止されたGIFは、コアでは、カラーパレットと、LZWアルゴリズムを使用して圧縮されたパレットインデックス付き画像で構成されています。 あなたの仕事は、標準入力からASCII PPM形式( "P3"マジックナンバー)の画像を読み取り、GIF形式で同じ画像(同一のピクセル単位)を標準出力に書き込むプログラムを作成することです。出力はバイナリ形式、または各バイトが空白で区切られた0〜255の数値で表されるASCIIテキストのいずれかです。 入力画像は256色を超える色がないことが保証されています。 得点: プログラムは3つのサンプル画像でテストされ、スコアは次のように計算されます。 プログラムサイズ+合計(出力サイズ-各サンプル画像の参照サイズ) 最も低いスコアが優先されます。 要件: プログラムは、サンプル画像に限定されず、さまざまなサイズの類似した画像で機能する必要があります。たとえば、寸法を2の倍数に制限したり、ppmの最大色を255と想定したりできますが、それでもさまざまな入力画像で機能するはずです。 出力は、任意の準拠プログラムで読み込むことができる有効なGIFファイルである必要があります(ASCII出力オプションを使用している場合は、バイナリに変換して戻します)。 画像処理機能(組み込みまたはサードパーティ)を使用することはできません。プログラムには、関連するすべてのコードが含まれている必要があります。 プログラムは、無料で入手できるソフトウェアを使用してLinuxで実行できる必要があります。 ソースコードはASCII文字のみを使用する必要があります。 サンプル画像: スコアリングに使用される3つのサンプル画像を次に示します。ppmファイルを含むzipアーカイブをダウンロードできます(そのページの上部にあるダウンロードボタンを使用)。または、以下のコマンドでImageMagickを使用して、下のpng画像から変換することもできます。 convert file.png -compress none file.ppm 確認のために、ppmファイルのMD5チェックサムも提供しています。 1.アンバー 参照サイズ:38055 ppmのMD5チェックサム:d1ad863cb556869332074717eb278080 2. blueeyes 参照サイズ: ppmの28638 MD5チェックサム:e9ad410057a5f6c25a22a534259dcf3a 3.ピーマン 参照サイズ:53586 ppmのMD5チェックサム:74112dbdbb8b7de5216f9e24c2e1a627

2
色付きグラフの合計
場合によっては、物理学では、グラフを合計する必要があります。課題は、選択した言語で、複数のグラフを画像として受け取り、すべての可能な合計を計算し、結果を出力するプログラムまたは関数を記述することです。 グラフ グラフはrgb(255, 255, 255)、各列に白以外のピクセルがある白()の背景を含む画像です。例: スクリプトの値は、カラーピクセルのY位置として表されます。特定のX座標の値は、その列の一番上の色付きピクセルのY位置に等しく、座標は左下の0から始まります。美的な理由から、これらのピクセルの下に追加の色付きピクセルがある場合とない場合があります。 仕事 あなたの仕事は、選択した言語で、複数のグラフを画像として取り、すべての可能な2^n - 1合計を計算し、結果を出力するプログラムまたは関数を書くことです。 グラフの合計は、各列の値が各入力グラフの対応する列の値の合計と等しいグラフです。 グラフは複数の色で表示されます。結果の画像には、元のグラフを含み、ゼロの合計を除いた他のグラフと同様に、グラフのすべての可能な合計が含まれている必要があります。 各和の色は、例えば、色のグラフ、含まれるグラフの色の平均値によって決定されるrgb(255, 0, 255)とrgb(0, 255, 255)のグラフを生成するrgb(128, 128, 255)(また、丸みを帯びた下であってもよいです)。 結果の画像は、すべてのグラフにフィットするために必要な高さにする必要があります。つまり、どの入力よりも大きい画像を出力する必要がある場合があります。 結果のグラフが結果の画像に描画される順序は重要ではありません。つまり、結果のグラフが重なっている場合、どちらを上にするかを選択できますが、色の組み合わせではなく、グラフの1つでなければなりません。 入力画像の幅が等しい、画像のすべての列に少なくとも1つの非白のピクセルがある、画像の高さ(出力を含む)が4096ピクセル未満であると想定する場合があります。 例 入力A: 入力B: 出力例: (誰かが興味を持っている場合は、ランダムな会社の株価チャートからこれらのデータをコピーして貼り付けました。これが、現実的なデータをCSVとして取得する最初の方法でした。) ルール 任意のビットマップ画像入力ファイル形式を選択できます。 入力と一致する必要がないビットマップ画像出力ファイル形式を選択できます。 画像処理ライブラリを使用することもできますが、このタスクを直接完了する関数は禁止されています。 標準の抜け穴が適用されます。 これはcode-golfなので、バイト単位の最短コードが優先されます。 グラフ生成スクリプト 以下は、グラフを生成するPython 2スクリプトです。入力は行で指定され、最初の3行はRGBカラーで、残りはデータとして、EOFで終了します。 import PIL.Image as image import sys if len(sys.argv) < 2: sys.stderr.write("Usage: graphgen.py <outfile> [infile]") …

1
Python 3-割り当てをゴルフしてみた
注:これはゴルフの課題ではありません。それはゴルフの提案を求めるよりもです。 最近、コーディングできるかどうかを確認するために、Web開発クラスにPythonを割り当てました。私はすでにPythonに慣れているので、それを試してみることにしました。そして、私が逃したことを人々が指摘できるかどうか疑問に思いました。 一部の場所に余分なスペースがあることはすでに知っていますがwhile r:、rが変数である場合に使用し、それが「実行」されるのを待つなど、概念的なものに興味があります。 割り当て import random from collections import Counter s=l='' c=['yellow','blue','white','green','Black', 'purple', 'silver', 'cyan', 'magenta', 'red'] n=[10,15,1,10,6,15,10,25,1,12,5,10,4,6,5,12,0,10,1,1] o=i=0 for y in c:l+=y[0]*(random.randint(n[o],n[o+1]));o+=2 l=list(l) print("Welcome to the CIMS Gumball Machine Simulator\nYou are starting with the following gumballs:") for b in c:print(str(l.count(b[0])) + " "+b);random.shuffle(l) print("Here are your random purchases:") …

5
ほとんど辞書式リストの比較
入力 2つのリストAとB非負の整数。 出力 いずれか1、0または-1、かどうかに応じAに等しい、より大きい、またはより小さいBに対してねじれた辞書式順序付けの下に定義した通りです。必要に応じて1、0および-1を他の3つの定数値に置き換えることができます。 ツイスト辞書編集順序は、リストを要素ごとに比較し、最初の異なるインデックスでそれらの順序を決定するという点で、通常の辞書編集順序に似ています。ただし、ツイストバージョンでは、インデックスごとに非負の整数に異なる順序を使用します。すなわち、すべてのインデックスでi(インデキシングから始まる1)、第一のオーダーi(より負でない整数0にはi-1)逆転され、それらは、他のすべての数字の上に移動されます。さらに、一方のリストが他方よりも短いことを示す「欠落している要素」は、すぐ下に移動されますi-1。視覚的には、インデックスでの順序iは i < i+1 < i+2 < i+3 < ... < [missing element] < i-1 < i-2 < i-3 < ... < 2 < 1 < 0 最初のもの...は無限に多くの数を表すことに注意してください。つまり、次のリストは、ねじれた辞書式順序の昇順です。 [3,2,3,4] [3,2,3,5] [3,2,3,10] [3,2,3,1341] [3,2,3] [3,2,3,3] [3,2,3,2] [3,2,3,1] [3,2,3,0] ルール 完全なプログラムまたは関数を与えることができます。最も低いバイト数が優先され、標準の抜け穴は許可されません。 テストケース Output 1: [0] [] [] [1] …

1
じゃんけん競争シミュレーター
あなたは最高の人を見つけるためにじゃんけん選手権を組織することにしました。勝者を決定するために運を上げたくないので、誰もがコンテストの前に書面で彼または彼女の戦術をあなたに与えなければなりません。また、単純なものが好きなので、(岩石、紙、はさみを示す)競争相手の移動は、前のターン(RvR、RvP、RvS、PvR、PvP、PvS、SvR、SvP、またはSvS)のみに基づく必要があります。最初のターンでは、プレイヤーは固定の標識を示さなければなりません。 チャンピオンシップをシミュレートするプログラム(または関数)を作成することにしました。 コンテストの詳細 少なくとも2人の競技者がいます。 すべてのプレーヤーは、他のすべての人と正確に1つの試合を行います。 1試合は7ラウンド続く。 すべてのラウンドで、勝者には2ポイントが与えられ、敗者には何も与えられません。引き分けの場合、両方のプレーヤーが1ポイントを獲得します。 試合でのプレーヤーのスコアは、試合のターンにおける彼または彼女のポイントの合計です。 チャンピオンシップのプレーヤーの最終スコアは、すべての試合でのポイントの合計です。 入力の詳細: プログラムまたは関数がN10文字の長い文字列を受け取り、それぞれがプレイヤーの戦略に対応している。すべてのキャラクターは(小文字)であるr pかs、特定の状況でプレーヤーがじゃんけんやはさみを見せることを意味します。 最初の文字は最初のターンをコードします(その競技者のすべての試合で)。2番目は、最後のラウンドがロック対ロックだった場合にどうなるかを示しています。次のものはRvP、RvS、PvR、PvP、PvS、SvR、SvP、SvSで、最初の文字はプレイヤーのサインで、2番目の文字は対戦相手のサインです。たとえばrrpsrpsrps、プレーヤーがロックから開始し、次に対戦相手の最後の動きをコピーすることを意味します。 文字列のリストは、言語のリスト/配列または同様のデータとして、または1つの文字列として入力できます。後者の場合、ある種の区切り文字は必須です。 出力の詳細: プログラムまたは関数は、入力が提供されたのと同じ順序で各プレーヤーの最終スコアを出力する必要があります。 スコアはスペースまたは改行で区切る必要があります。末尾のスペースまたは改行を使用できます。 例: 入力: ['rrpsrpsrps', 'rpppsprrpr'] 出力:( 5 9ターンはrvr rvp pvs svp pvr rvp pvs) 入力: ['rrpsrpsrps', 'rpppsprrpr', 'ssssssssss'] 出力:( 13 17 12一致は5-9(1番目と2番目)、8-6(1番目と3番目)、8-6(2番目と3番目))) これはコードゴルフなので、最短のエントリが勝ちます。

2
遺伝的基盤の変化
バックグラウンド この課題では、整数の基本b表現はの累乗の合計としてのn表現でありn、各項はbほとんどの場合発生しb-1ます。たとえば、のベース4表現2015は 4^5 + 3*4^4 + 3*4^3 + 4^2 + 3*4 + 3 ここで、の遺伝的基底b表現はn、指数を基底b表現に変換し、次にそれらの指数を再帰的に変換することなどによって取得されます。したがって、遺伝ベースの4表現2015は 4^(4 + 1) + 3*4^4 + 3*4^3 + 4^2 + 3*4 + 3 より複雑な例として、の遺伝的ベース3表現 7981676788374679859068493351144698070458 です 2*3^(3^(3 + 1) + 2) + 3 + 1 遺伝的塩基変化nからbのc表記はH(b, c, n)、遺伝塩基取ることによって得られる数でbの表現をn、すべてを交換bすることによりc、得られた式を評価します。たとえば、 H(3, 2, 7981676788374679859068493351144698070458) です 2*2^(2^(2 + 1) + …


9
負、ゼロ、正の整数の配列を1回の反復で順序付け
負の数、正の数、ゼロを含む整数の配列を取ります。1回の繰り返しでグループ化し、すべての負の数値が最初に来て、その後にすべてのゼロが続き、その後にすべての正の数が続くようにします。 例: Input: 5, 3, 0, -6, 2, 0, 5 Output: -6, 0, 0, 3, 2, 5, 5 数値は完全に並べ替える必要はないことに注意してください。符号で並べ替えるだけです。 したがって、最終的な配列は次のようになります。 -, -, ..., -, -, 0, 0, ..., 0, 0, +, +, ..., +, + ルール 入力配列と一定量の追加メモリのみを使用できます(つまり、これ以上配列を作成できません) 使用できるループは1つだけで、配列の長さと同じ回数だけ実行できます。あらゆる種類のループを隠す組み込み関数を使用することはできません。これには、組み込みのソート関数が含まれます。 結果は、私が説明した形式である必要があります 勝者は、最初の配列を正しい形式(上記のように)に変更する最短のコード(バイト単位)を送信する人です。

3
音楽:この和音の名前は?
これは音楽の逆です:この和音には何がありますか?、指定された和音で音符を印刷します。今回の入力はコード内のノートのリストであり、あなたの仕事はそれがどのコードであるかを出力することです。 プログラムは、次の3和音をサポートする必要があります。例はルートCで示されています。他のルートを持つコードはすべてのノートが回転した同じコードなので、Cはそのルートノートになります。たとえば、DmajはD、F#、Aで構成されます。 C C#D D#E F F#G G#A A#B Db Eb Gb Ab Bb Cmaj C E G Cm C D# G Caug C E G# Cdim C D# F# Csus4 C F G Csus2 C D G CaugはEaugおよびG#augと同じであり、Csus4はFsus2と同じであることに注意してください。どちらでも出力できますが、すべて出力するとおまけがあります。 ボーナスの7番目のコードは次の表のとおりです。 C C#D D#E F F#G G#A A#B Db Eb Gb …

3
3x3接続コンポーネント
チャレンジ 次のASCIIグラフィックに示すように、3x3キンググリッドについて考えてみます。 A--B--C |\/|\/| |/\|/\| D--E--F |\/|\/| |/\|/\| G--H--I 入力として、ノードのラベルを表す整数の長さ9のリストが与えられます。たとえば、入力[0,1,1,2,1,0,5,5,1]は次のラベルを表します。 0--1--1 |\/|\/| |/\|/\| 2--1--0 |\/|\/| |/\|/\| 5--5--1 出力は、接続されたノードのセットを形成する入力内の整数のセットです。より明示的にはn、ラベル付きのノードのセットnが接続されている場合にのみ、出力に入力からの整数が含まれる必要があります。この例では[1,2,5]、2つ0のが接続されていないため、許容可能な出力はになります。最も低いバイト数が優先されます。 詳細なルール 入力リスト内のノードの固定順序を選択でき、これを回答で述べる必要があります。EFBDHCAGIの順序では、上記のラベルはとして与えられ[1,0,1,2,5,1,0,5,1]ます。 完全なプログラムまたは関数を記述できます。後者の場合、言語がサポートしている場合、出力は整数のセットになる可能性があります。 出力リストには重複が含まれる場合がありますが、その長さは9を超えてはなりません。 標準の抜け穴は許可されていません。 テストケース これらには、グリッドに合わせて1桁の数字があります。それらを選択した順序に調整します。 011 210 => 1 2 5 551 010 202 => 0 2 221 110 123 => 0 2 3 221 111 111 => 1 111 …

4
キュレーターのジレンマ
前書き あなたは、美術館のキュレーターの友人です。美術館のキュレーターは、最近4人のアーティストから現代美術を手に入れることに喜びを感じています(そのうちの何人かは、キュレーターに芸術作品がないこともあります)。これはモダンアートであるため、アーティストの作品はすべてまったく同じに見えます。あなたの友達は、コンピュータを使用して、これらのピースをどの順序で配置するかを決定したいと考えています。 プログラムの要件 プログラムは5つの整数を受け取る必要があります(関数に渡されるか、stdinを介して入力されます(または何らかの方法で))。最初の4つは、4人のアーティストのそれぞれが提供した絵画の数です。最後の値は順列インデックスですi(0ではなく1から数えます)。キュレーターiは、絵画の辞書式順序による順列を見たいと考えています。 プログラムは、この順列を適切な形式で出力する必要があります。例:abbccdまたは[0 1 1 2 2 3]。合計で10枚に満たない入力の実行時間は1時間未満でなければなりません(これは問題ないはずです)。 組み込み関数を使用して順列を計算することはできません 例 入力:0 1 2 0 2 アーティストBの絵が1つ、アーティストCの絵が2つある(そしてそれらはすべて同じに見える)とすると、辞書式順序の順列は次のようになります。 ['bcc'、 ' cbc '、 'ccb'] 強調表示された順列は、辞書式順序の2番目であるため、正しい出力になります。 入力:1 2 0 1 5 ['abbd'、 'abdb'、 'adbb'、 'babd'、 ' badb '、 'bbad'、 'bbda'、 'bdab'、 'bdba'、 'dabb'、 'dbab'、 'dbba'] テスト中 正しいはずのテストをいくつか示します。 1 2 4 1 5 …

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