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

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

5
15パズルの順列
チャレンジ 解決された状態の15パズルの次の図を検討してください。 _____________________ | | | | | | 1 | 2 | 3 | 4 | |____|____|____|____| | | | | | | 5 | 6 | 7 | 8 | |____|____|____|____| | | | | | | 9 | 10 | 11 | 12 | |____|____|____|____| | | …

5
選挙の時間です!
投票を数える時です! 今日、私の全国で地方選挙があります。ここで、各パーティーの座席数は、D'Hondtメソッドを使用して決定されます。あなたの目標は、各パーティが取得する座席数を最短のバイト数で決定するプログラムまたは機能を実装することです。 この方法では、配布するシートの数が固定されており、次のようになります。 すべての当事者には、獲得した投票数から始まる変数番号が割り当てられます。 そして、最初のシートは、その変数で最大の値を持つ当事者に与えられ、そのパーティーのための値になることで割っ票のその総数は1+seats、丸みを帯びたダウン、seatsそれが既に持っている座席の数は(取得した後そうです最初に、彼らの票は2で割られ、2番目の議席を獲得した後は3で割られます)。 その後、当事者の投票が再度比較されます。このプロセスは、すべての座席が割り当てられるまで続きます。 最大数が2つ以上の関係者の間の同点である場合、ランダムに解決されます(ランダムである必要があり、リストの2つのうちの最初の数だけになることはできません)。 入力 あなたは数受け取るN利用できる座席数、およびあなたが好みの形式で、各当事者は得票のリストを示します。例: 25 12984,7716,13009,4045,1741,1013 出力 各パーティーが獲得した座席のリストを出力する必要があります。上記の例では、次のようになります 8,5,9,2,1,0 入力の関係者と同じ順序である必要があります。 例 5 3,6,1 outputs: 2,3,0 135 1116259,498124,524707,471681,359705,275007,126435 outputs: 45,20,21,19,14,11,5 ボーナス パーティの名前を入力として受け取り、出力でそれらを与えると、-20%のボーナス、たとえば: 25 cio:12984,pcc:7716,irc:13009,icb:4045,cub:1741,bb:1013 outputs cio:8 pcc:5 irc:9 icb:2 cub:1 bb:0
13 code-golf 

1
Pythonで項目ごとに文字列のリストを連結する
これはpythonでのゴルフのヒントの質問です。 文字列のリストが2つあり、各リストの対応するエントリを連結するとします。例えば、a=list("abcd")とb=list("1234")を計算し["a1","b2","c3","d4"]ます。 これは、一般に操作がリストにメンバーごとに適用される配列ベースのプログラミング言語では簡単です。たとえば、私のゴルフ言語Pipのコードは単純a.bです。しかし、Pythonではそれほど簡単ではありません。 Pythonicの方法は、おそらくzipリスト内包表記(25文字)を使用することです。 [x+y for x,y in zip(a,b)] 別の方法はmap、ラムダ関数を使用する方法です(23): map(lambda x,y:x+y,a,b) 以下は、私が思いついた最短のものです(21): map("".join,zip(a,b)) もっと短い方法はありますか? リストの長さは同じで、必要なのは何らかの反復可能なものだけであると仮定します(したがって、mapPython 3ではオブジェクトは問題ありません)。
13 code-golf  tips  python 

11
距離mod Nの計算
Advanced Collecting Device Controller™から長い間データを収集しています。ログを確認すると、恐ろしいことに何かがひどく間違っていることがわかります。データには数字の最後のビットしか含まれていません。 幸いなことに、開始値がわかっていて、値が決して速く変化することはありません。つまり、スタート地点からの距離を見つけるだけで残りを回復できるということです。 チャレンジ モジュラスNと中間値モジュロのリストを指定して、値が変化した量を計算するプログラムまたは関数を作成しますN。 数値の各ペア間の変化は常により小さいためN/2、各テストケースに対して有効な回答は1つだけです。 入力として、N2を超える整数と値のリストが、選択した形式で提供されます。入力は、STDINまたはコマンドラインまたは関数の引数を介して指定できます。 元の値が変更された量である単一の整数を出力します。出力はSTDOUTに出力されるか、返されます。 ルール プログラムは、未満の距離とモジュラスで機能する必要があり2^20ます。 あなたはそれを仮定するかもしれません: Nは少なくとも3です。 リストには少なくとも2つの値があります。 リスト内のすべての値は、少なくとも0未満ですN。 数値のすべての変更は未満ですN/2。 それ以外は無効な入力であり、プログラムは必要な処理を実行できます。 この正確な目的のための標準的な抜け穴、非標準ライブラリ、組み込み関数は禁止されています。 これはcode-golfであるため、バイト単位の最短プログラムが優先されます。 テストケースの例 入力: 3 0 1 2 2 0 1 0 2 1 2 0 1 2 1 1 出力: 4 説明(値の例付き): Value mod 3: 0 1 2 2 0 1 …
13 code-golf  math 

4
非常に素晴らしいフリードマン番号
A フリードマン数は、*、/、^、括弧と連結-操作+、と組み合わせて独自の数字を使用して非自明な式に等しい正の整数です。 ニース・フリードマン数は、自明な式に等しい正の整数であり、元の順序で数字を使用して、同じ操作と組み合わせて独自の数字を使用します。 私がここで発明している非常に素晴らしいフリードマン数(VNFN)は、そのような表現のあまりきれいでない(私の意見では)部分なしで書くことができるニース・フリードマン数です。括弧、連結、および単項否定は許可されていません。 この挑戦のために、括弧なしで式を書く3つの可能な方法があります。 プレフィックス:これは左結合性と同等です。このタイプの式は、すべての演算子が数字の左側に記載されています。各演算子は、次の2つの式に適用されます。例えば: *+*1234 = *(+(*(1,2),3),4) = (((1*2)+3)*4) = 20 この方法で記述できるVNFNは343です。 ^+343 = ^(+(3,4),3) = ((3+4)^3) = 343 後置:これは、右結合性と同等です。操作は数字の右側に移動することを除いて、プレフィックス表記に似ています。各演算子は、前の2つの式に適用されます。例えば: 1234*+* = (1,(2,(3,4)*)+)* = (1*(2+(3*4))) = 14 この方法で記述できるVNFNは15655です。 15655^+** = (1,(5,(6,(5,5)^)+)*)* = (1*(5*(6+(5^5)))) = 15655 中置:中置表記法では、5つの操作に標準の操作順序が使用されます。チャレンジのために、その操作の順序は次のように定義されます^。次に、括弧で囲み*、/同時に連想的に残します。最後に、括弧で囲む+と-同時に、連想的に残します。 1-2-3 = (1-2)-3 = -4 2/3*2 = (2/3)*2 = 4/3 2^2^3 = …

1
ツー・ゼロ・ワン・ファイブ・パズル
バックグラウンド このパズルは、フォーフォーズパズルのバリエーションです(それ自体が過去の質問のトピックです)。そのパズルのように、目的は、4桁と特定の数学演算子のみを使用して、異なる整数の数式を見つけることです。ただし、この場合、許可される数字は2、0、1、および5だけです。それぞれがソリューションに正確に1回、正しい順序で表示される必要があります。驚くほど多くの整数がこの方法で表現できます。ソルバーは、奇妙に楽しいので、最初に手で解決することをお勧めします。 ルール 定数は、1桁または複数の数字から作成できます。 整数:たとえば、2、0、15など。 10進数:例.2、.01、1.5など 繰り返しの小数:.2〜(= 0.222 ...)、. 15〜(= 0.1555 ...)、20.15 ~~(= 20.1515 ...) 次の単項演算が許可されています。 単項否定:-x 平方根:sqrt(x) 整数階乗:x! 次のバイナリ操作が許可されています。 標準算術演算子:x + y、xy、x * yおよびx / y 任意のべき乗:x ^ y 任意のルート:rt [x](y)(= xのyのルート) 仕事 プログラムは、できるだけ多くの0〜100の整数の式を出力し、生成した式の数を出力する必要があります。 ソリューションは、n = [expr]の形式で順番に印刷する必要があります。 式では、2、0、1、5のすべての数字をその順序で1つずつ使用する必要があります。 式は、上記の表記法を使用して印刷する必要があります。不要な括弧は許可されますが、空白のように必須ではありません。演算子の優先順位は、単項否定、階乗、べき乗、乗算/除算、加算/減算です。 プログラムは、すべての数値の解を返す必要はありません。したがって、単に0を出力するプログラムは有効です。ただし、以下のスコアリングセクションを参照してください。 プログラムは、最新のコンピューターで15分未満で実行する必要があります。 プログラムまたは関数を作成できます。式はSTDOUT(または最も近い代替)に出力する必要があります。式の数は、STDOUTに出力するか、整数として返すことができます。標準コードのゴルフ制限が適用されます。 出力例 0=2*0*1*5 10=20*1*.5 42=((2+0!)!+1)!/5! 100=20*1*5 4 得点 …

4
単語は互いに隣接するキーで入力可能ですか?
これを読む前に、この小さなパズルを読むことをお勧めします:https : //puzzling.stackexchange.com/questions/11408/longest-word-with-adjacent-letters-on-a-keyboard 1つの引数、単語(小文字のみ)を取り、キーボードの隣接するキーで単語を入力できる場合は「はい」(記事を参照)、出力できる場合は「いいえ」を出力するプログラムを作成してほしい隣接する文字を入力しないでください。 このチャレンジで使用されるキーボードレイアウトは次のとおりです。 ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ | Q | W | E | R | T | Y | U | I | O | P | └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ | A | S | D | F | G | H | J | K | L | └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┘ | Z …

2
アスキーアートジェネレーション
仕事 width wとheightのイメージhと2つの整数a <= w/2およびを取りb <= h/2、寸法のaxを持つイメージのASCIIアート表現を出力するプログラムまたは関数を記述しますb。 アスキーアートは、次の手順(または同じ出力を持つ別のプロセス)で生成する必要があります。 サイズを変更するwのx hに画像を2aX 2b。ピクセルの色(x, y)リサイズ画像では、以下のコーナーを有する矩形内部原画像からすべてのピクセルの色の平均値に等しくなければなりません。 (floor[x * w/2a], floor[y * h/2b]) (ceil[(x+1) * w/2a], ceil[(y+1) * h/2b]) 色の赤、緑、青の成分の平均を取り、各成分をこの平均に設定することにより、サイズ変更された画像の彩度を下げる必要があります。 以下のルールに従って、ピクセルの2x2ブロックごとに文字を出力する必要があります。 Let e = 3 - floor[color/64]、ここで、色は、左上のピクセルの色の赤成分を指します(範囲0..255)。ましょうf、gと、hこの値を参照しますが、それぞれ右上、左下、および右下の画素について。 させるzの平均でe、f、g、h。 以下に対応する文字を出力します(白3 - floor[color/64]はゼロのピクセルを表し、灰色は非ゼロを表します)。 =スペースを出力() または=出力"の場合e (or f) >= 2と'そうでありません。 または=出力,の場合g (or h) >= 2と.そうでありません。 または=出力- または=出力; =出力 …

2
レーザーの宛先に一致するミラー構成を見つける
更新されたスコアリング:このチャレンジは予想以上に難しいので、スコアリングを調整しました。単一のミラー入力を解決できるプログラムが有効な答えです。より洗練されたプログラムは、スコアにボーナスを与えます。 PPCGには、ミラーボックス内のレーザーパスを見つけるためのパズルがいくつかあります。このパズルでは、いくつかのレーザーの宛先に一致するミラーのボックスを作成する必要があります。 レーザーが出入りするボックスと仕様が表示されます。プログラムは、仕様を満たすために正確にN個の両面ミラーをボックスに配置する必要があります。ミラーは45度の角度にする必要がありますが、前方に傾斜することも後方に傾斜することもできます。 入力 プログラムは、STDIN、コマンドライン引数、または次の形式のファイルを介してボックスグリッドを受け入れる必要があります。 +--G--+ +abcde+ G | f/////d | /| a// c +-----+ f | +-b-e-+ 文字ペア([a-zA-Z]を使用可能)は、最大52個のレーザーの入力/出力を示します。箱の中にはN個の/ミラーがあります。ボックスの寸法は3 <= W、H <= 200です。ボックスは+|-文字で構成されています。ボックスには、ゼロを含む任意の数のミラーがあります。 出力 /文字が移動および/または\文字に変更される可能性があることを除いて、出力は入力と一致する必要があります。プログラムは、正しいミラーボックス文字列をSTDOUTまたはファイルに送信する必要があります。末尾の改行はオプションです。ミラーの配置が入力仕様を満たすことができない場合、output Impossible\n。可能な解決策の例: +--G--+ +abcde+ G / | f \ \ d | | a/ \ c +-----+ f / //| +-b-e-+ テスト例 入力: +abcdefghijklmnopqrstuvwxyA-+ |/////////////// | …
13 code-golf  grid 

30
文字列の各単語の母音の数を数える
これはかなり簡単な挑戦です。 チャレンジ 入力には、null最大長100の文字列(not またはempty)が含まれます。文字列の各単語の母音の数をスペースで区切って出力します。 ルール 文字列の長さは100文字を超えません。 文字列にはアルファベットのみが含まれA-Z、a-zスペースを含めることもできます。 入力は、stdinまたはコマンドライン引数から使用する必要があります。 出力はで出力する必要がありますstdout。 完全なプログラム、またはから入力stdinを取得して結果を出力する関数を作成できます。 あなたのプログラム/機能のニーズがカウントすること母音があるaeiouとAEIOU。 テストケース This is the first test case --> 1 1 1 1 1 2 one plus two equals three --> 2 1 1 3 2 aeiou AEIOU --> 5 5 psst --> 0 the quick brown fox jumped over …

7
行、列、対角、ブロック
正の整数Nに対して、幅N文字、高さN文字の正方形のコードブロックを記述します。 たとえば、Nは5で、ブロックは次のようになります。 ThisI sMy5B y5Cod eBloc kOkay このブロックは次のように動作する必要があります。 一番上の行を抽出してプログラムとして実行する場合、正確なテキストrowを標準出力に出力する必要があります。 たとえば、ThisI印刷しますrow。 左の列を抽出してプログラムとして実行する場合、正確なテキストcolを標準出力に出力する必要があります。 たとえば、Tsyek印刷しますcol。 左上隅から右下隅までの主要な対角線を抽出してプログラムとして実行する場合、正確なテキストdiaを標準出力に出力する必要があります。 たとえば、TMCoy印刷しますdia。 ブロック全体が改行(オプションの末尾の改行を含む)を含むプログラムとして実行される場合、正確なテキストblkを標準出力に出力する必要があります。 例えば、 ThisI sMy5B y5Cod eBloc kOkay 印刷しますblk。 詳細 4つのプログラムはすべて同じプログラミング言語で実行されます。 元のブロックのN 2文字は、行末記号以外のものである可能性があります。 言語に標準出力がない場合は、別の一般的な出力方法を使用できます。4つのプログラムすべてで同じ方法でなければなりません。 オリジナルブロックに含まれる文字列が最も少ない(改行を含まない)提出物が勝ちです。Tiebreakerは、より小さいNを使用してサブミッションに進みます。

2
単語検索パズルの生成
文字列のリストが与えられたら、各初期文字列を含む最小の正方行列を見つけます。文字列は、この質問「ワード検索パズル」のように、水平、垂直、または斜めに、前後に表示されます。 単語は、各方向(水平、垂直、および対角)に少なくとも1単語ずつ、正方形に配置する必要があります。単語は一度だけ表示されるはずです。 したがって、入力は単なる単語のリストです。例:CAT, TRAIN, CUBE, BICYCLE。考えられる解決策の1つは次のとおりです。 B N * * * * * * I * * C A T * A C * * * * * R * Y * * C * T * * C * U * * * * * L B * * …

1
ピザを公平に共有する
友人とピザを共有することの難しさは、スライスで全員が同じ量のペパロニを確実に摂取できるようにするのが難しいことです。だから、あなたの仕事は、みんなが幸せになるようにピザをどのように公正にスライスするかを決めることです。 行き方 円形ピザのペパロニの位置と作成するスライスの数のリストを指定して、各スライスが同じ量のペパロニになるようにピザをカットする角度のリストを出力するプログラムを作成しますそれ。 ピザのトッピングはペパロニのみです。 お友達は、ペパロニからだまされないというだけで、スライスのサイズを気にしません。 ピザは、原点(0, 0)を中心とし、半径が1の円です。 ペパロニは、入力が中央にあり、半径が0.1 入力を、作成するスライスの数を表す整数、およびデカルト座標系でのペパロニの位置を表す順序ペアのリストとして受け取ります。(合理的な形式で) 出力は、ピザの「カット」の位置を表すラジアン単位の角度のリストである必要があります(範囲内0 <= a < 2pi)。(合理的な形式で)(精度は少なくともでなければなりません+/- 1e-5。) スライスにペパロニの部分的な部分を置くことができます(例えば、ピザにペパロニが1つあり、10人で共有する必要がある場合、ピザを10回カットします。 !) カットは、複数のペパロニを切ることができます(必要な場合があります)。 ペパロニスは重複する場合があります。 例 入力: 8 people, pepperonis: (0.4, 0.2), (-0.3, 0.1), (-0.022, -0.5), (0.3, -0.32) 可能な有効な出力: slices at: 0, 0.46365, 0.68916, 2.81984, 3.14159, 4.66842, 4.86957, 5.46554 この例の視覚化を次に示します(全員がペパロニの半分を取得します)。 その他の例: Input: 9 people, 1 pepperoni …

6
反復除数ツイスト
定義 ましょうmとn正の整数です。私たちは、すなわちmある除数のねじれのn整数が存在するかの1 < a ≤ bようにn = a*bとm = (a - 1)*(b + 1) + 1。ゼロまたはそれ以上の除数ツイストをそれに適用するmことで取得できる場合、はの子孫です。すべての数字はそれ自身の子孫であることに注意してください。nmn たとえば、検討してくださいn = 16。私たちは、選択することができますa = 2し、b = 8以来、2*8 = 16。それから (a - 1)*(b + 1) + 1 = 1*9 + 1 = 10 これ10はの約数のねじれであることを示しています16。とa = 2とb = 5、私たちは、その参照7の除数ねじれです10。したがって7、はの子孫です16。 タスク 正の整数nを指定すると、の子孫をn、重複することなく昇順でリストします。 ルール 数値の約数を計算する組み込み操作を使用することはできません。 完全なプログラムと関数の両方が受け入れられ、コレクションデータ型(何らかの種類のセットなど)を返すことは、並べ替えられ、重複がない限り許可されます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース 1 …

2
コンテキストで文字列を連結する
コンテキスト付きの文字列 この課題のために、コンテキストを含む文字列は、左コンテキスト、データ部分、および右コンテキストと呼ばれるトリプルの文字列です。長い文字列の部分文字列を表します。|セパレータとして垂直パイプを使用するため、コンテキストのある文字列の例はcod|e-go|lfで、左のコンテキストはcod、データはe-go、右のコンテキストはlfです。この例は、の部分文字列e-goを表しcode-golfます。 ここで、2つの文字列をコンテキストに連結するには、とを使用してaa|bcc|dee、次のように進めますcc|de|eee。図のように文字列を揃えます a a|b c c|d e e c c|d e|e e e データ部分が隣接するようにします。連結のデータ部分は、この場合、データ部分の連結ですbccde。左のコンテキストは、最初のデータ部分の左側にこの部分を拡張する部分です(この場合)aa。同様に、正しいコンテキストはeeeですので、連結はcontextの文字列aa|bccde|eeeです。第二の例では、考えるa|bb|cdと、aabb|cd|2番目の単語は空の右コンテキストを有する場合、。配置図は a|b b|c d a a b b|c d| ここで、2番目の単語の左側のコンテキストは、最初の単語のコンテキストよりもさらに広がっています。連結はaa|bbcd|です。 しかし、ちょっと待ってください。アライメント図の文字が一致しない場合、連結は存在しません。例としての図aa|bb|cc及びc|c|cIS a a|b b|c c c|c|c どこbとc4列目には同意できないので、それらを連結することができません。 タスク あなたの仕事は|、上記のように部分で区切られたコンテキストを持つ2つの文字列を取り込み、存在する場合は連結を、存在しない場合は他の何かを出力するプログラムを作成することです。「その他」は、コンテキストを含む有効な文字列でなく、すべての場合で同じである限り、出力なしを含む任意の値にできます。ただし、エラーをスローすることはできません。STDINからSTDOUTへのプログラムまたは関数を指定でき、匿名関数も受け入れられます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース aa|bcc|dee cc|de|eee -> aa|bccde|eee a|bb|cd aabb|cd| -> aa|bbcd| a|b|cccd aab|cc|c -> aa|bcc|cd a|b|c b||cd -> a|b|cd …
13 code-golf  string 

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