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

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

1
行列チェーンの乗算を最適化する
この課題は、いくつかの行列の積に対して最も効率的な乗算次数を計算することです。 行列のサイズは、標準入力の1行で指定されます。総乗算コストを最小限に抑えるには、乗算を実行する順序を示す整数のリストを標準出力に出力する必要があります。 例1 入力 5x6 6x12 12x100 100x7 出力 3 2 1 入力行は、スペースで区切られた行列サイズのリストであり、それぞれの行は行の数であり、その後に、x列の数が続きます。この例では、一緒に乗算する4つの行列があります(したがって、合計3つの乗算)。行列の乗算は結合的であるため、それらは任意の順序で実行できます。 出力は、総コストを最小限に抑えるために乗算を実行する順序でなければなりません。これは、次に実行する乗算の​​インデックスを表す整数のスペース区切りリストである必要があります。N行列の場合、このリストには1からN-1までの数値が含まれている必要があります。たとえば、出力3 2 1は、12x100 * 100x7最初に乗算を実行し、次に6x12 * 12x7乗算(2番目の行列に前のステップの結果を5x6 * 6x7掛けたもの)、最後に結果の乗算を実行する必要があることを意味します。 行列の乗算は常に互換性があります。つまり、行列の列数は後続の行列の行数と一致します。二つの行列の乗算のコストと想定しAxB * BxCているがA*B*C。 コードは最大100の行列のリストを処理する必要があり、各次元は最大999であり、妥当な時間内に処理する必要があります。 例2 入力 5x10 10x5 5x15 15x5 出力 1 3 2 または 3 1 2 例3 入力 22x11 11x78 78x123 123x666 666x35 35x97 97x111 111x20 …
9 code-golf  math 

5
元素の周期表からの単語[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 3年前休業。 私が高校で化学を専攻している新入生のとき、私は元素の周期表を見て、元素の数で汚い言葉を綴っていました(HeCKは2619、2-6-19)。 先日、BeEr(4-68)と書かれた素晴らしいシャツを見たとき、これについて考えていました。 したがって、私のcodegolfチャレンジは、要素の周期表とその単語を表す数字コードで綴ることができる単語のリストを出力するための最短のプログラムです。 / usr / share / dict / wordsまたは単語リストに使用したい辞書。「非標準」の単語リストを使用している場合は、それを教えてください。
9 code-golf 

3
{1,2、…、n}のトポロジの数を計算します
仕事 nパラメーター/入力として受け取り、セットのトポロジーの数(以下に示す)を出力/返す関数/プログラムを記述します{1,2,...,n}。 トポロジーの定義 xは任意の有限集合を、およびのサブセットであるT、と仮定するパワーセット Xの(すなわちXのサブセットを含むセット)は、満足これらの条件を。 Xと空のセットはTにあります。 2組のU及びVがTである場合、組合それら二組のはT.であります 2つのセットUとVがTにある場合、これら2つのセットの共通部分はTにあります。 ... TはXのトポロジと呼ばれます。 仕様書 プログラムは次のいずれかです。 nパラメータとして受け取る関数 または入力するプログラム n そして、セットの(個別の)トポロジの数を出力または返します{1,2,...,n}。 n 11未満の任意の非負整数(もちろん、プログラムが11より大きいnを処理する場合は問題ありません)であり、出力は正の整数です。 プログラムでは、トポロジの数を直接計算するライブラリ関数やネイティブ関数を使用しないでください。 入力例(nの値): 7 出力/戻りの例: 9535241 ここまたはここで戻り値を確認できます。 もちろん、最短のコードが優先されます。 勝者は決まりますが、短いコードが表示された場合は勝者を変更することがあります。

2
2次元光線追跡
課題は、テキストベースの2次元レイトレーシングプログラムを実装することです。 白色光源は@シンボルです。R、GおよびB光フィルターです。/そして\80%の反射率のミラーです。?光センサーです。>、<、^およびV適切な方向に光結合する(例えば、1つは赤と一つの緑が入ってきた場合に>右に向けて出射される光と、それは黄色であろう)。その他の非空白文字はすべての光を吸収します。@シンボルから4方向に光が放射されます。 プログラムを実行すると、入力と同じ出力が生成されますが、光線はトレースされます。これは2次元であり、入力では光線が交差しないことを保証しているため、問題はありません。各光線は文字で表す必要があります。r =赤、g =緑、b =青、c =シアン、m =マゼンタ、y =黄色、w =白。三元色はありません。ケーシングは、入力と区別するために重要です。その出力後、疑問符でキャプチャされた光の値(出現順に左から右、上から下へ)がパーセンテージと色として出力されます。たとえば、次の入力: / @ - \R> ? @B/ 出力を与える必要があります: /wwwwwwwwwwwwwwwwww@w w - w\R>mmmmmmmmmmmmmmmmm? w b @B/ #1: 72% Magenta 注意すべきもう1つの重要な点-「プリズム」(矢印)を使用して2つの色を組み合わせると、組み合わされた光の強度が2つの色の平均強度になります。出力は指定されたとおりでなければなりません(例:#x:[x] [x] x%Color)。 言語がSTDINから読み取ってSTDOUTに書き込めない場合は、入力を引数として受け入れ、結果を返す関数(使用可能な場合は匿名またはラムダ)を作成します。 コンパイラへのディレクティブ、言語で作成されたすべてまたはほとんどのプログラムに必要または推奨される構造などは省略できます。例えば、#include及びusing(ただしディレクティブ#define)は、Cスタイルの言語で除去することができる#/usr/bin/perl -optionsPerlで、かつ Module Module1 Sub Main() End Sub End Module たとえば、VB.NETで。名前空間をインポートするか、includeディレクティブを追加する場合は、回答にそれらを記録してください。 これで十分ですか?:)

5
単純なタグパーサー
これは寛容なHTMLパーサーのモデルです。HTMLを解析して属性を抽出する代わりに、このコードゴルフでは、タグパーサーは単純になります。 タグ構造を解析し、括弧で囲まれた形式を返す関数を記述します。開始タグは1つの小文字で構成され、終了タグは1つの大文字で構成されます。たとえば、やにaAbaAB解析さ(a)(b(a))れます<a></a><b><a></a></b>。もちろん、タグは並列してネストすることができます。 「時期尚早」の閉じたタグを処理する必要があります。たとえば、ではabcA、はA最も外側のを閉じるaので、に解析され(a(b(c)))ます。 余分な終了タグは単に無視されます:にaAB解析され(a)ます。 重複するタグは処理されません。たとえば、前の追加の終了タグのルール(-> ()+ (追加))によって、ではなくにabAB解析されます。(a(b))(a(b))(b)abABabA(a(b))B 入力に空白やその他の不正な文字がないと仮定します。 ライブラリの使用は許可されていません。 以下は、リファレンス実装とテストケースのリストです。 #!/usr/bin/python def pars(inpu): outp = "" stac = [] i = 0 for x in inpu: lowr = x.lower() if x == lowr: stac.append(x) outp += "(" + x i = i + 1 else: while len(stac) > 1 and …

5
そのフェンスをペイント
あなたはトム・ソーヤーで、長さ102400 mのフェンスを塗る必要があります。幸いなことに、あなたの友人は様々なことを交換してあなたを助けることにしました。各友人は、Sから始めて色CでLメートルをペイントします。S、Lは整数メートルの量と1≤あるC ≤97あなたが持っている各色の何メートルを見つけることを決定退屈。 入力 入力は標準入力から読み取られます。上記のように、各行には3つの数値S、L、Cが含まれています。 アウトプット 出力は標準出力に書き込まれます。最後のフェンスに表示される各色について、色の番号と表示される回数を印刷します。色でご注文ください。 例 入力0 .............. 0 3 1 111........... 2 4 2 112222........ 1 2 3 133222........ 0 4 1 111122........ 7 3 5 111122.555.... 出力0 1 4 2 2 5 3 入力1 0 100 1 50 150 2 出力1 1 50 2 150 入力2 …
9 code-golf 

13
名前ゲームをプレイする
名前ゲームをプレイするプログラムを作成します。 入力 プログラムは、何らかの方法でユーザーからの入力として単一の名前を受け入れる必要があります(たとえば、標準入力から、またはコマンドライン引数として読み取る)。名前は、大文字の後に1つ以上の小文字が続く単一の単語であると想定できます。 出力 次のテンプレートに入力することにより、プログラムは、曲で説明されているように、指定された名前の韻を印刷する必要があります。 (X), (X), bo-b(Y) Banana-fana fo-f(Y) Fee-fi-mo-m(Y) (X)! ここで、(X)は元の名前で、(Y)小文字で、最初の子音をすべて削除した名前です。 ただし、例外が1つあります。元の名前がm、fまたはbで始まっている場合は、対応する行にこの文字なしで書く必要があります。たとえば、名前がのBob場合、「b」行はで終わる必要がありbo-obます。この場合、他の子音はすべて保持されることに注意してください。そのため、Fredでfo-redはありませんfo-ed。 例 シャーリー: Shirley, Shirley, bo-birley Banana-fana fo-firley Fee-fi-mo-mirley Shirley! アーノルド: Arnold, Arnold, bo-barnold Banana-fana fo-farnold Fee-fi-mo-marnold Arnold! ボブ: Bob, Bob, bo-ob Banana-fana fo-fob Fee-fi-mo-mob Bob! フレッド: Fred, Fred, bo-bed Banana-fana fo-red Fee-fi-mo-med Fred! 得点 最短のコードが勝ちます。
9 code-golf 

2
浮動小数点なしの浮動小数点加算!
あなたの仕事は、任意の言語で、小数または浮動小数点の数学を使用せずに 2つの浮動小数点数を加算するプログラムを記述することです。整数演算が許可されています。 フォーマット 数値の形式は、IEEE 754 32ビットfloatのバイナリ値を表す1と0を含む文字列です。たとえば、数値2.54は文字列 "01000000001000101000111101011100"で表されます。 ゴール プログラムは、上記の形式で2つの数値を入力し、それらを加算して、同じ形式で結果を出力する必要があります。どの言語でも最も短い答えが勝ちます! ルール 浮動小数点、10進数、または整数以外のあらゆる種類の数学関数は絶対に許可されていません。 入力はクリーン(つまり、1と0のみを含む)であると想定できます。 入力は数値であり、Inf、-Inf、NaNまたは非正規ではないと想定できます。ただし、結果が最大値より大きいか最小値より小さい場合は、それぞれInfと-Infを返す必要があります。非正規(非正規)の結果は0にフラッシュされることがあります。 丸めを適切に処理する必要はありません。結果が少しずれていても心配しないでください。 テスト プログラムをテストするには、このツールを使用して、10進数と浮動小数点の2進数を変換できます。 1000 + 0.5 = 1000.5 01000100011110100000000000000000 + 00111111000000000000000000000000 = 01000100011110100010000000000000 float.MaxValue + float.MaxValue =無限大 01111111011111111111111111111111 + 01111111011111111111111111111111 = 01111111100000000000000000000000 321.123 + -123.321 = 197.802 01000011101000001000111110111110 + 11000010111101101010010001011010= 01000011010001011100110101010000 幸運を!

1
単純なプロキシを構築する
最短のプロキシサーバーを作成します。 入出力仕様 クライアント: 入力:ポート番号(32ビット整数)(、)または(スペース) url(テストケースを参照) 出力:URLのHTMLソース サーバ: 入力:待機するポート(32ビット整数) 出力:クライアントから入力を受け取ったときにREC、HTMLソースをクライアントに送信し終えたらOK。 ルール あなたは、どちらかのことがあり、完全なプログラムまたはインタプリタ言語の関数を。 入力はstdinを通じて取得されるか、引数として指定されます。 コードは、指定されたテストケースに対してのみ機能する必要があります(詳細はオプションで、詳細は無効です)。 クライアントの出力は、ブラウザから「ソースを表示」したときに得られるものと同じでなければなりません。 リクエストが処理されるたびにサーバーが終了する場合があります(つまり、永続的/デーモンである必要はありません)。 (編集)指定されたもの以外の入出力は禁止されています。 テストケース(クライアント入力) N 1 https://stackoverflow.com/ N 2 http://en.wikipedia.org/wiki/Proxy_server N 3 http://stackexchange.com/search?q=code+golf ここで、N iは1〜2048のランダムな整数です。

3
物理ゴルフ:傾斜射撃
「そして今、何かのために、完全に異なる。」 怒っている鳥は、高速Uで水平に角度βで撮影されます。地面は急で、角度αで傾斜しています。鳥が地面にぶつかる前に移動した水平距離qを見つけます。 長さqを返す関数f(α、β、u)を作成します。鳥が地面に着く前に移動した水平距離です。 制約と注意: -90 <α<90。 0 <β<180。 αは常にβよりも小さい。 0 <= u <10 ^ 9。 重力g = 10による加速を想定します。 α、βには度の代わりにラジアンを使用できます。 uの次元は、gおよびqと一致している限り、無関係です。 空気抵抗がないか、または豪華すぎるものはありません。 最短のコードが勝ちます。 いくつかの方程式については、発射体の動きに関するウィキペディアの記事を参照してください。 サンプル: f(0, 45, 10) = 10 f(0, 90, 100) = 0 f(26.565, 45, 10) = 5 f(26.565, 135, 10) = 15
9 code-golf  math 

5
ゴルフされた固定小数点コンビネーター
書く不動点コンビネータお好みの言語で、できるだけ少ない文字数では。 自由形式(つまり、最も短いもの):プログラム全体、実際の関数、コードスニペット 標準ライブラリがある場合は使用できません ただし、他の高水準関数から抽出することもできますが、ベースから構築するよりも、そうする方が得策です。 デモとして使用する再帰的な階乗またはフィボナッチを含めてください。 この質問では、自己参照は許容されます。目的は、それを適用する再帰関数からそれを削除することだけです。

1
迷路ゲームのエンジンを構築する
これは「迷路を印刷」の質問のフォローアップです。この質問が気に入ったら、迷路生成アルゴリズムを追加してください;)。 このタスクでは、迷路で宝物を見つけてダンジョンから抜け出さなければならない1人のプレーヤー用のゲームエンジンを実装する必要があります。 エンジンは、標準入力.から迷路を読み取り、続いてコマンドラインで引数として指定された(ドット)ファイルを含む行を読み取ります。次に、プレイヤー@はマップ上のランダムな場所に配置されます。次に、エンジンは標準のioを通じてプレーヤーとの対話を開始します。 エンジンからプレイヤーへのコマンド: continue:ゲームが終了していません。周囲が印刷され、その後に.。プレイヤーは@キャラクターで表されます。観察できないセルはで表され?ます。 finished:ゲームが終了しました。ステップ数が印刷され、ゲームが停止します。 プレイヤーからエンジンへのコマンド: north:プレーヤーを上に移動します。 south:プレーヤーを下に移動します。 west:プレーヤーを左に移動します。 east:プレーヤーを右に移動します。 プレーヤーからの無効なコマンド(壁を叩くなど)は無視されますが、カウントされます。周囲の環境を自由に定義できます。 最短コードのポイント。 複雑な環境のポイント(たとえば、大きな領域を印刷し、で表示されないセルを置き換える?)。 io形式を尊重しないコードにはポイントなし 例: この例では、周囲はプレーヤーが真ん中にある3x3セルとして定義されています。 $ cat maze +-+-+ |#| | | +---+ $ python engine.py maze |# @ --- . east |#| @| --+ . north +-+ |@| | . south |#| @| --+ . west |# …
9 code-golf  maze 

15
近くの素数を出力する
入力(素数である場合もそうでない場合もある)を取り、直後および直後の素数をリストするプログラムを記述します。 入力例: 1259 出力例: 1249 1277 最短のプログラムが勝ちます。最新のデスクトップPCでは10秒以内に実行する必要があります。入力は最大10,000に制限されます。

9
単語を同じスコアの部分に分割する
A = 1、B = 2 ... Z = 26で、単語の値がこれらの文字値の合計であるとすると、いくつかの単語を2つの部分に分割して、それらの値を等しくすることができます。 たとえば、 "wordsplit"は次のように2つの部分に分割できます:ordslwpit。o+ r + d + s + l = w + p + i + tだからです。 これは私のコンピューティングの先生から私たちに与えられた挑戦でした-それは明らかに古いLionhead Studiosの挑戦です。私はそれをPythonで解決しました。まもなく私の回答を投稿します。 課題:等しいスコアを持つすべての可能な分割をリストできる最短のプログラム。文字のグループごとに1つだけリストする必要があることに注意してください。たとえば、ordsl wpitはrdosl wtipと同じです。単語の中で来る順にリストする方が簡単です。 ボーナス: 両方の単語が有効な英語の単語(または文字のいくつかの順列)であるペアを強調表示する場合は、何らかの単語リストを使用します。(これは、各メソッドまたは他のメソッドの隣にアスタリスクを配置することで実行できますが、明確にしてください。) 重複を削除するオプションを追加します(これはデフォルトではありません)。 3つ、4つ、またはn方向の分割など、3つ以上の分割をサポートします。
9 code-golf  word 

14
数値、合計、製品
負でない整数の20×20グリッドが与えられた場合、個々のラインの合計の積が最大に達する3×3サブグリッドを見つけます。数式で話されています: 3×3のサブグリッドが与えられた 最大化する関数は ラインごとに合計が計算され、個々の合計が乗算されます。 例(5×5のみ): 赤で強調表示された部分は、関数の値がグリッド全体で最大の部分 です。 (35 + 272 + 167)⋅(163 + 270 + 242)⋅(216 + 68 + 266)= 175972500 入力 入力は標準入力で行われ、20文字からなる20行で構成され、スペース文字(U + 0020)で区切られます。数値は小さいので、32ビットの符号付き整数で結果を計算できます。 入力はファイルからリダイレクトされると想定できます。 出力 出力は、最大の結果が得られる3×3サブグリッドの関数の結果です。上記の例では、これはそう 175972500でした。 入力例1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 …

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