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

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

20
パラレルアカウント(2日目)
私の大学コードチャレンジコンテストの許可を得てチャレンジ 数か月前に勉強を終えた後、マリーは銀行で口座を開き、町での最初の仕事の支払いを受け取り始めました。それ以来、彼女はいくつかのトランザクションを実行しています。彼女の最初の支払いは1000ドルでした。彼女が両親を招待した夕食に支払ったそのお金で(夕食は$ 150ドルかかりました)、それから彼女は有名なスーパーマーケット($ 80ドル)での購入と休暇($ 200)のホテル予約を行いました。その月の終わりに、彼女は再び支払いを受け取り(1040ドル、前の月より少し多い)、その翌日にスーパーマーケットでさらに70ドルを費やしました。 今日、彼女はスーパーマーケットで最初の80ドルを支払った後に2番目のアカウントが作成され、最初のアカウントが凍結された場合、両方のアカウントの残高はまったく同じになることに気付きました。 1000− 150− 80To t a l = 770− 2001040− 70To t a l = 7701000−150−80⏟Total=770−2001040−70⏟Total=770 \underbrace{1000\quad -150\quad -80}_{Total=770}\quad \underbrace{-200\quad 1040\quad -70}_{Total=770} このイベントは彼女にとって非常に珍しかったので、彼女は自分のアカウントの動きと彼女の友達の動きにもこの機能があるかどうかを確認し続けたいと思っています。 チャレンジ トランザクションのリストを指定して、銀行口座の所有者が2番目の口座を作成して、両方が同じ最終残高になるような瞬間の数を出力します。 例: [1000, -150, -80, -200, 1040, -70] 1 )To t a l = 01000− 150− 80−2001040− 70To t a l …
10 code-golf 

15
マルチレベルのマーケティング「レッグ」投資ルール
マルチレベルのマーケティング関連の課題。 仲間は報われることを望んでいます。そのため、N投資家を惹きつけ(N>=1)、各i番目の投資家が投資しましたx[i]。合計がしきい値を超えるとx[0]+x[1]+...+x[N-1] >= T、ピアに報酬が与えられます。ただし、次の条件が満たされている場合のみ。 投資家の最低額はM、(M<=N)より大きくする必要があります 少なくとも1つの整数kについて、k>=Mとk<=Nで、k投資家は少なくともT/kそれぞれに投資する必要があります。 N, x[], T, Mピアの報酬が生成されるかどうかを決定する必要がある場合(ブール結果、「はい」または「いいえ」)。最短のコードが勝ちます。 例: N=5; M=3; T=10000、ピアの報酬を生成するには、次のいずれかを満たす必要があります。 いずれか3つが少なくとも3334を投資 各4は少なくとも2500を投資 5つすべてがそれぞれ最低2000を投資 N=6; M=2; T=5000: 任意の2つがそれぞれ2500以上を投資 いずれか3つが少なくとも1667を投資 任意の4つが少なくとも1250ずつ投資 いずれか5つが少なくとも1000を投資 6つすべてがそれぞれ少なくとも834投資しました 一般化:すべてのk、場所k>=M、およびk<=N: どんなkのN投資家は、少なくとも投資しT/k、それぞれを テストケース: フォーマット: N, x[], T, M -> correct answer 6, [999, 999, 59, 0, 0, 0], 180, 3 -> 0 6, [0, 60, …

15
マトリックスジグソーパズルのピース
(ランダムにhttps://codegolf.meta.stackexchange.com/a/17272/42963からインスピレーションを得た) 数字の長方形マトリックス(つまり、0 - 9)が与えられた場合、数字の昇順で、数字が1つに接続されているかのように、マトリックスの「ピース」を出力します。ピースは、直角にのみ接続することが保証されています-ピースは斜めに接続しません。最大10個のピース​​しかあり3ません(つまり、ピースは同じマトリックスに2回表示されません)。 たとえば、行列 0 1 1 1 0 0 1 2 3 3 2 2 以下は、断片と出力例です。 0 0 0 1 1 1 1 2 2 2 3 3 ピースの形状を維持するには間隔が重要ですが、ピースは必ずしも内部の間隔を必要としません。ピース自体は一貫した方法で何らかの方法で区別する必要があります(たとえば、ピース間の改行、それぞれが異なる文字であることを確認するなど)。さらに、無関係な空白(たとえば、末尾の改行や先頭の列)は許可されません。たとえば、以下も有効です。 0 00 111 1 2 22 33 または # ## ### # # ## ## しかし、以下はありません(0sの後ろのスペースに注意してください)。 0 0 0 …
10 code-golf  matrix 

1
たたみばりソルバー
バックグラウンド タタミバリはニコリが設計した論理パズルです。 :Tatamibariパズルは、その中のシンボルの三つの異なる種類の長方形のグリッド上で再生され+、-。と|。ソルバーは、次の規則に従ってグリッドを長方形または正方形の領域に分割する必要があります。 すべてのパーティションには、シンボルが1つだけ含まれている必要があります。 +シンボルは、正方形の中に含まれている必要があります。 |シンボルは、幅よりも大きい高さを有する矩形に含まれなければなりません。 -シンボルは、高さよりも大きな幅を有する長方形に含まれなければなりません。 4つのピースが同じコーナーを共有することはありません。(これが通常の畳の置き方です。) 以下は、解決策を含むパズルの例です。 仕事 与えられたタタミバリパズルを解きます。 入出力 入力は、指定されたタタミバリパズルを表す2Dグリッドです。各セルは、4つの文字のいずれかが含まれています+、-、|、、お好みのキャラクターは非手掛かり細胞を表現するために。テストケースでは、アスタリスク*が使用されています。 タタミバリパズルの有効なソリューションを明確に表すことができる適切な出力形式を選択できます。これには以下が含まれますが、これらに限定されません(不明な場合は、コメントで質問してください)。 4タプルのリスト。各タプルには、長方形の上部インデックス、左インデックス、幅と高さ(または同等の表現)が含まれます。 入力と同じ形状の数値グリッド。各数値は長方形を表します 座標セットのリスト。各セットには、長方形内のセルのすべての座標が含まれます パズルに複数のソリューションがある場合、有効なソリューションをいくつでも(1つ以上)出力できます。入力には少なくとも1つのソリューションがあることが保証されています。 テストケース Puzzle: |-* *+| *-* Solution: 122 134 554 ===== Puzzle: +*** **|* *+** ***- Solution: 1122 1122 3322 3344 ====== Puzzle: |*+*+ ***** ****- ***+| +**** Solution: 12233 12233 44444 55667 …

30
回転数
仕事 関数またはプログラムを記述して、特定の半径を与えられた距離を移動するためにホイールが必要とする回転数を見つけます。 ルール 入力は2つの正の有理数にすることができ、任意の便利な形式で取得できます。 両方の入力は同じ単位です。 コードに数字0〜9があってはなりません。 出力は整数になります(floatの場合、無限に丸めます)。 これはコードゴルフなので、最短のコードが勝ちます 例 distance radius output 10 1 2 50 2 4 52.22 4 3 3.4 0.08 7 12.5663 0.9999 3

15
ローゼンクランツとギルデンスタンはコードです
不条理なプレイで、Rosencrantz and Guildenstern is Deadの2人の主人公RosencrantzとGuildenstern(または彼らですか?)個人のアイデンティティ。彼らが自分の名前をシャッフルしたとしても、ばかげたことではないでしょうか? あなたの仕事は、7文字を超える偶数の長さ(設計では4の倍数)の文字列を取り、分割してシャッフルする関数を記述することです。 分割は次のようになります。文字列はformat "abscd"で、sは区切り文字として機能します。最初のセクションとセパレータabsは文字列の前半となり、後半は次のようになりますcd 長さはaになります(string length / 4) - 1 長さはbになります(string length / 4) 長さはsになります1 長さはcになります(string length / 4) + 1 長さはdになります(string length / 4) - 1 これは本当に混乱するかもしれませんので、いくつかの例を紹介します ("a" + "bb" + "s" + "ccc" + "d").length //8 1 2 1 3 1 |-------4--------| |----4-----| <--- …
10 code-golf 

25
テニスをしよう2:東西ゲーム
チャレンジがありましょうプレイテニスでダニエル。彼は南北方向に裁判所を置くことを提案します。私の提案は、東西方向にもテニスをするコートを作ることです。 テニスコートを印刷する必要がありますが、機密上の理由により、可能な限り少ないバイト数で印刷する必要があります。 テニスコート ------x------ | | x | | | |--x--| | | | x | | ------x------ 元のルールは次のとおりです。 余分なスペースはありません。 不公平になるため、タブはありません。 1つのオプションの末尾改行が許可されます。 これはcode-golfなので、バイト単位の最短コードが優先されます!

5
魔術師の魔法書
編集:私は以前D&Dをプレイしたことがないので、最初にこの質問をしたとき、適切に調査していませんでした。このことをお詫び申し上げます。dnd5eのルールにできる限り忠実に回答を無効にする可能性のあるいくつかの編集を行っています。ごめんなさい。 最近のHot Network QuestionのD&Dファンは、魔術師が選択したスペルが可能性と一致するかどうかを判断するのに問題があるようです。 前書き (これはすべて前述の質問ですでに説明されています) 魔術師は最初から2つのレベル1の呪文を知っています(レベル1): [1, 1] ソーサラーがレベルを取得するたびに(レベル12、14、16、18、19、20を除く)、彼らは新しい呪文を習得します(必須)。 さらに、レベルアップするときに、(オプション)1つのスペルを別のスペルに置き換えることを選択できます。 学習して置き換えられる呪文は、有効な呪文スロットレベルである必要があります。これは、魔術師のレベルの半分を切り上げたものです。次の表を参照してください。 Sorcerer level Highest spell level possible 1 1 2 1 3 2 4 2 5 3 6 3 7 4 8 4 9 5 10 5 11 6 12 6 13 7 14 7 15 8 16 8 …

6
旅する歯ブラシ
前書き 今日の課題はすべて歯についてです。具体的には、ある歯から別の歯へのブラッシングにかかる​​時間。あなたの課題は、2つの歯の位置を考えると、最初から2番目の歯まで磨くのに可能な最短時間で出力することです。 チャレンジ この課題では、平均的な成人の人間の口のレイアウトを使用します。 この図は、広く使用されているISO番号付けシステムを示しています。システムは口を4つの部分に分割し、それぞれに番号を割り当てます。右上(1)、左上(2)、左下(3)、右下(4)です。次に、各セクションの歯に口の中央から1〜8の番号を付けます。したがって、右上側の中央から4番目の歯(セクション1)は、歯番号14です。 1本の歯を磨くのに1単位時間かかると仮定しましょう。1つの歯から次の歯に横に移動するには、0単位の時間がかかります。歯からその真上または真下の歯まで交差することもできます。これにも1単位の時間がかかります。では、14番歯から31番歯までブラッシングするのにどのくらいかかりますか?上の図を見ると、7単位の時間がかかることがわかります。計算方法は次のとおりです。 Action : Unit of time Brushing tooth 14 : 1 unit Brushing tooth 13 : 1 unit Brushing tooth 12 : 1 unit Brushing tooth 11 : 1 unit Brushing tooth 21 : 1 unit Cross to bottom of mouth : 1 unit Brushing …
10 code-golf 

7
隣人は敵対的ですか?
前書き この課題の目的のために、私たちが定義する隣人の要素のEEE正方行列であAA(ようにE= A私、jE=Ai,jE=A_{i,j})のエントリがすべてのように に水平または垂直、斜めにすぐ隣接している(すなわちそれらはラップせずにを「囲みます」)。E EあAAEEE EEE pedantsのための近隣の、正式な定義のため matix(0インデックス)である: ここで n×nA N i 、あ私、jAi,jA_{i,\:j}n × nn×nn\times nあAAE i 、Ni,j={Aa,b∣(a,b)∈Ei,j∩([0,n)∩Z)2}Ni,j={Aa,b∣(a,b)∈Ei,j∩([0,n)∩Z)2}N_{i,\:j}=\{A_{a,\:b}\mid(a,b)\in E_{i,\:j}\:\cap\:([0,\:n)\:\cap\:\Bbb{Z})^2\}Ei,j={i−1,i,i+1}×{j−1,j,j+1} \ {i,j}Ei,j={i−1,i,i+1}×{j−1,j,j+1} \ {i,j}E_{i,\:j}=\{i-1,\:i,\:i+1\}\times \{j-1,\:j,\:j+1\} \text{ \\ } \{i,\:j\} インデックスの要素が、そのすべての隣接要素と互いに素である場合(つまり、あれば、敵意を持って生きているとしましょう)。悲しいことに、この貧弱な入り口は、近くの失礼な住民から砂糖を1杯も借りることができません...i,ji,ji,\:jgcd(Ai,j,n)=1∀n∈Ni,jgcd(Ai,j,n)=1∀n∈Ni,j\gcd(A_{i,\:j},\:n)=1\:\forall\:n\in N_{i,\:j} 仕事 十分なストーリー:正の整数の正方行列が与えられると、次のいずれかを出力します。MMM 隣接するが敵対的になるようにいくつかのインデックスを占めるすべてのエントリを示す要素(重複排除されているかどうかにかかわらず)のフラットリスト。M N i 、i,ji,ji,jMMMNi,jNi,jN_{i,\:j} 近傍が敵対的である位置に秒、それ以外の場合は秒のブール行列(と代わりに他の一貫した値を選択できます)。0 0 1111000000111 敵対的な地域を表すインデックスのペアのリスト。i,ji,ji,\:j Physicaのリファレンス実装 – I / OのPython構文もサポートします。これらの抜け穴はデフォルトで禁止されていることに注意しながら、標準的な方法と適切な形式で入力を取得し、出力を提供できます。これはコードゴルフなので、(すべての言語で)バイト単位の最短コードが優先されます! さらに、行列サイズを入力として使用することもできます。また、常に正方形であるため、行列をフラットリストとして使用することもできます。 例 次のマトリックスを考えてみましょう: ⎛⎝⎜642753102258143236⎞⎠⎟(641014272232535836)\left(\begin{matrix} 64 …

5
月相を教えてください!
チャレンジ 月の画像を入力として、月の位相を出力します。 月の満ち欠け プログラムには、これらの画像のいずれかがpng形式で提供され、指定されたとおりにフェーズを出力する必要があります。 new moon 16進ダンプ waxing crescent 16進ダンプ first quarter 16進ダンプ waxing gibbous 16進ダンプ full moon 16進ダンプ waning gibbous 16進ダンプ third quarter 16進ダンプ waning crescent 16進ダンプ 入力 入力は、240 px x 240 pxのpngファイルへのパスであり、上の画像の1つになります。 画像バイトは同じであることが保証されています。 勝利 最短コードの勝利

3
ASCII「スプラット」を出力する
ASCII卵を特定の方向に投げると、サイズがnの ASCIIスプラットになります。これは1つo(卵黄)で「始まり」、2からn までの「行」で指定された方向に続き*ます。*さんは、一つの『スペース』によって分離され、そしてoのおよびすべての『行』*さんは『スペース』の『行』によって分離されています。 スプラットの方向は、からの8つの方向のいずれかにすることができます。o次に例を示します。 1 2 3 4 o 5 6 7 8 ここ方向のサイズ4のASCIIのスプラットの例であり5、2そして3それぞれは 左側は実際のASCIIスプラットで、右側は同じスプラットですが、「スペース」の「行」が実際の「行」(つまり-、\または|方向に応じて)に置き換えられています。空間の「線」。 Size 4, direction 5 * | | |* * | |*| * * |*| |* o * o| |*| * * |*| |* * | |*| * | | |* Size 4, direction 2 * …

2
Modilar SNISPの停止問題を解決する
Befingeの停止問題を解決するという精神で、Modilar SNISPと呼ばれる別の2D言語を定義しましょう。Modilar SNISPには、次の6つの手順があります。 \ 命令ポインタを次のように指示します。 上から近づいた場合は右に進みます。 右から近づいたら上へ。 下から近づいた場合は左に進みます。 左から近づいたら下へ。 / 命令ポインタを次のように指示します。 上から近づいた場合は左へ。 左から近づいたら上へ。 下から近づいた場合は右に進みます。 右から近づいたら下がる。 ! 次の命令をスキップします。 @ IPの場所と方向を呼び出しスタックにプッシュします。 #呼び出しスタックからIPの場所と方向をポップして復元し、次の命令をスキップします。呼び出しスタックが空の場合、実行は停止します。 . 何もしません。 命令ポインタは、左上隅から右に向かって始まります。それがプレイフィールドを離れると、実行は停止します。 Modilar SNISPはPDAよりも強力ではありません。無制限のストレージの唯一のソースは有限のアルファベット(すべてのIP(場所、方向)ペアのセット)を持つスタック(呼び出しスタック)であるためです。停止の問題はPDAで決定できるため、この課題は常に可能です。 チャレンジ あなたの目標は、Modilar SNISPプログラムを表す文字のマトリックスを受け取り、停止するかどうかに応じて2つの異なる出力の1つを返すプログラムを作成することです。 これはcode-golfなので、有効な最短のプログラム(バイト単位)が優先されます。 仕様書 文字のマトリックスを取る方法は柔軟です。改行で区切られた文字列、文字列の配列、文字の配列の配列、2次元の文字の配列、幅を表す整数を持つ文字のフラットな配列などはすべて受け入れられます。テストケースでは、最初の選択肢を選択します。 入力行列は長方形で(短い行にパディングする必要がないため)、長さと幅がゼロでないと想定できます。 真実/偽物だけでなく、2つの異なる出力を選択できます。 あなたが入力行列が唯一の有効なコマンドで構成されることを前提とすることができます(\、/、!、@、#、および.)。 コマンドが「次の命令をスキップする」と言われた場合、スキップする次の命令があると想定できます。特に、(1)IPがプレイフィールドのエッジにあり、(2)IPがそのエッジに対して垂直に移動しているため、「次の命令」がプレイフィールドの外側にあるような状況では発生しません。 テストケース 次のスニペットは、言語でプログラムをテストするために使用できます。これは、ここで指定された実際の仕様よりも若干許容範囲が広いことに注意してください(たとえば.、no-ops 以外の文字を許可します)。 function htmlEscape(t){let i=document.createElement("span");return i.innerText=t,i.innerHTML}function tick(){snisp.tick(),snisp.update()}function run(){runButton.style.display="none",stopButton.style.display="",code.style.display="none",executionArea.style.display="",snisp.initialize(),intervalId=setInterval(tick,INTERVAL_MS)}function stop(){runButton.style.display="",stopButton.style.display="none",code.style.display="",executionArea.style.display="none",clearInterval(intervalId)}let TICKS_PER_SECOND=5,INTERVAL_MS=1e3/TICKS_PER_SECOND,runButton=document.getElementById("run-button"),stopButton=document.getElementById("stop-button"),code=document.getElementById("code"),executionArea=document.getElementById("execution-display"),intervalId,snisp={x:null,y:null,direction:null,callStack:null,stopped:null,playfield:null,padRows:function(){let t=Math.max(...this.playfield.map(t=>t.length));for(let i=0;i<this.playfield.length;i++)this.playfield[i]=this.playfield[i].padEnd(t,".")},initialize:function(){this.x=0,this.y=0,this.direction="right",this.callStack=[],this.stopped=!1,this.playfield=code.value.split("\n"),this.padRows(),this.update()},getCurrentChar:function(){let t=this.playfield[this.y];if(void 0!=t)return …

6
最短距離の合計を見つける
このタスクでは、コードは、整数XおよびYの2つの並べ替えられた配列を入力として受け取る必要があります。Xの各整数とYの最も近い数の間の絶対距離の合計を計算する必要があります。 例: X = (1 5,9) Y = (3,4,7) 距離は2 + 1 + 2です。 X = (1,2,3) Y = (0,8) 距離は1 + 2 + 3です。 コードは、都合のよい方法で入力を受け取ることができます。 主な制限は、コードが2つの配列の長さの合計で線形時間で実行される必要があることです。。(2つの整数の加算には一定の時間がかかると想定できます。)

5
2つのBrainfuckプログラムを作成する
2つのbrainfuckコードスニペットAとを指定して、s結果の入力で実行した場合と同じ動作をするBいくつかのbrainfuckコードCを出力します。に与えられたかのように、以下の仮定に一致するすべての入力に対して機能する必要があることに注意してください。BACA あなたは仮定することができます: 有限入力。 AとBの両方が停止します。 EOFは常に0または常に-1です。 細胞の残留を一貫して許可または禁止する 無制限のテープ(それ以外の場合、要件が不可能な場合があります) 一貫して8ビットのラッピングまたは無制限の整数 EOFを表すバイトを含むストリーム(AまたはBの入力または出力) コードAおよびBには、Cに表示される可能性のある文字を含めることができます。 +-[]<>,. 例(EOF = 0) A = ,[..,] B = ,[...,] C = ,[......,] A = >,[>,]<[.<] B = ,[...,] C = >>>>,[[-<+<+<+>>>]>>>,]<<<<[.<] A = >,[>,]<[.<] B = ,[...,] C = >,[>,]<[...<] A = ,. B = ,. C = ,>,[,]<. …

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