タグ付けされた質問 「path-finding」

制約(障害物)の影響を受ける、最適な(たとえば最短の)パスを見つけることを含む、ジオメトリまたはグラフ理論の問題。

9
3 x 3の頑丈な正方形をすべて印刷する
(に似頑丈角魔方陣は)Nの整数1の配置である2毎に2×2のサブグリッドが同じ和を有するようにN Nによってグリッドに。 たとえば、N = 3の場合、1つの頑丈な正方形は 1 5 3 9 8 7 4 2 6 なぜなら、2 x 2の4つのサブグリッド 1 5 9 8 5 3 8 7 9 8 4 2 8 7 2 6 すべて同じ額になります23: 23 = 1 + 5 + 9 + 8 = 5 + 3 + 8 + …
24 code-golf  number  arithmetic  number-theory  grid  code-golf  binary  code-golf  popularity-contest  code-golf  chemistry  code-golf  code-golf  date  code-golf  quine  chess  code-golf  hexadecimal  code-golf  number  arithmetic  sequence  array-manipulation  code-golf  math  date  code-golf  typography  code-golf  string  code-golf  string  code-golf  code-golf  math  arithmetic  array-manipulation  grid  code-golf  puzzle-solver  code-golf  music  audio  code-golf  decision-problem  code-golf  geometry  code-golf  number  bitwise  code-golf  string  metagolf  hexagonal-grid  code-golf  string  code-golf  sorting  popularity-contest  code-golf  game  sequence  base-conversion  binary  code-golf  decision-problem  graph-theory  natural-language  code-golf  math  parsing  optimized-output  code-golf  array-manipulation  code-golf  graphical-output  image-processing  tiling  code-golf  graph-theory  path-finding  chess  code-golf  code-golf  balanced-string  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  statistics  code-golf  chemistry 

15
私の後に繰り返して!
引数として文字列を指定すると、重複しない最長の重複部分文字列の長さ、またはそのような文字列がない場合はゼロを出力します。 入力文字列が空ではないと仮定できます。 例 abcdefabc:部分文字列abcは位置1と7で繰り返されるため、プログラムは3を出力する必要があります abcabcabcabcab:abcabcまたはbcabcaまたはcabcab繰り返されるため、プログラムは6を出力します。(サブストリングabcabcabcabも繰り返されますが、オカレンスは重複するため、受け入れません)。 aaaaaaa:aaaたとえば、位置1と4で繰り返されるため、プログラムは3を出力します。 abcda:aが繰り返されるため、プログラムは1を出力します。 xyz:繰り返し文字列なし→ 0 ababcabcabcabcab:6を返す必要があります これはcode-golfなので、バイト数が最も少なくなります。
23 code-golf  string  code-golf  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  hexadecimal  code-golf  code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

7
極座標グラフチャート上を移動する2点間の距離
問題の簡単な説明 原点から発せられる光線と原点を中心とする円のみを移動する2点間の最小距離を見つけるプログラムを作成します。 前提の説明 今、私たちが飛行機に乗っていると想像してみましょう。この飛行機では、特別な方法でのみ旅行が許可されています。原点から発せられる光線で移動できます。 また、円を中心とした任意の円を旅することができます 今、私たちの目標は、この飛行機のある地点から別の地点に移動することです。ただし、単純なユークリッドパスを移動することはできません。ポイントがたまたま中心から放射される光線に当たる場合にのみ、これを行うことができます。 これは私たちの光線の1つに当たるので、この上を移動できます。 原点を中心とする円上を移動することもできます。 例 これが課題です。 最短経路である地点から別の地点に到達する必要があります。多くの場合、これは円と光線の移動の組み合わせです。 ただし、これは2つの光線で移動することもできます。 最小距離を移動する2つのパスが存在する場合があります。 問題 あなたの課題は、これらのルールに従えば、2つのポイントが与えられたときにそれらの間の最小距離を与えるプログラムを書くことです。入力は、長方形または極形式のいずれかで指定でき、出力は1つの数値、つまり距離である必要があります。 テストケース (矩形入力の場合) (1,1) (1,-1) -> ~ 2.22144 (0,0) (1, 1) -> ~ 1.41421 (1,0) (-0.4161 , 0.90929) -> ~ 2 (1,1) (1, 0) -> ~ 1.19961 (1,2) (3, 4) -> ~ 3.16609

9
かぼちゃの旅の問題
バックグラウンド: ジャックはカボチャで、ハロウィーンのたびにカボチャ畑の近くの村の住民を怖がらせます。しかし、毎年、誰かが彼の中のろうそくに火をつけた後、彼はろうそくが燃え尽きる前に皆を怖がらせるために限られた時間を持ちます。過去数年間、彼は彼の貧弱な意思決定のために村を少しだけしか話せませんでしたが、彼があなたを助けてくれるようになったので、彼はできるだけ多くの村を話せるようになります! 仕事: 村の場所のリストとろうそくの寿命を考慮して、ジャックが訪問できる村の最大数を出力します。パス自体を印刷する必要はありません。 入力: ろうそくの寿命とデカルト座標系の村の場所のリスト。Jackが発信するパンプキンパッチは常に0,0になります。とにかく入力をフォーマットできます。ジャックの動きを単純化するために、彼は水平、垂直、または斜めにしか移動できません。つまり、キャンドルは動きごとに1または1.5(斜めに少し長くなります)のライフユニットを失います。寿命が0以下の場合、キャンドルは燃え尽きます。 出力: ろうそくが燃える前にジャックが訪れることができる村の最大数に等しい整数。 ルール: これはcode-golfなので、バイト単位の最短コードが優先されます。標準の抜け穴は許可されていません。 テストケース: // Format [lifespan] [list of village coordinates] -> [maximum visit-able villages] 4 -1,0 1,0 2,0 3,0 4,0 5,0 -> 3 4 1,1 2,2 3,3 -> 2 5 1,1 2,1 3,1 4,1 5,0 5,1 -> 4

2
ダイナマイト付きマウス
あなたはマウスです。あなたのマウスの友人はすべて捕らえられており、無意識であり、入口/出口が1つしかない迷路に閉じ込められています。あなたはたまたま迷路の完全な地図を持っているので、あなたは急いでそれらをすべて安全に運ぶために解決策を計画することができます。ただし、迷路はセキュリティシステムで保護されており、しきい値に1000達するとアラートをトリガーし、あなたを捕らえて救助ミッションに失敗させます。 迷路の以前の調査から、踏み込んだ各正方形(つまり、水平方向または垂直方向の移動- マウスは斜めに移動できない)が1セキュリティシステムのカウンターに追加されます。ただし、重量(ダイナマイトのブロックまたは無意識のマウスフレンド)を運んでいる2場合は、追加の圧力を検出するため、代わりに追加されます。入り口/出口の広場にはこのセキュリティシステムがないため、カウンターに追加されません。 入り口に持ってきたダイナマイトは無制限にあるので、壁を爆破して友達を解放できます。しかし、あなたはそうすることに注意する必要があります。なぜなら、各爆発は50脳震盪の圧​​力からカウンターに加わるからです。さらに、一度に持ち運ぶことができるのは、1匹のマウスまたは1ブロックのダイナマイトです。ダイナマイトの各ブロックは1つの壁スペースのみを爆発させることができるため、複数の壁が連続して存在する場合は、手に手を入れて入り口まで戻ってさらに手に入れる必要があります。 実例 迷路が次のようになっているとします: ###### #M# E# ###### cカウンターに使用します。私たちは、から始まりE、N-トランスダイナマイトを運んでいる間1つの平方左に移動しますc=2。壁を爆発させるためにダイナマイトを爆発させc=52ます。手ぶらで2つの正方形を左に移動してを取得c=54し、マウスの正方形の上に立っています。私たちは友人を選び、3つの正方形をExitに戻しますが、最後の正方形はセンサーを持たないためカウントされません。そのため、背中に何かがある2つの正方形だけです。つまり、最後のマウスで出口に到達すると、c=58は未満で1000あり、ミッションは成功します。 チャレンジ 入力された迷路が与えられると、マウスヒーローであるあなたが、上記で概説した制約内ですべての閉じ込められたマウスを正常に救出できるかどうか、またはミッションが失敗であるかどうかを出力します。 入力 受け入れ可能な形式(複数行の文字列、文字列の配列など)の2D迷路。 この挑戦のために、私は#内壁と外壁の両方M、ネズミの友達、そしてE入り口に使用します。 入口が内壁にすぐ隣接することはありません(常に少なくとも1つのスペースが自由に移動できます)。 一貫性がある限り、任意の印刷可能なASCII文字に置き換えることができます。これはない、あなたが使用することを選択した場合に限り、あなたが一貫性(例えばを維持するように、外壁対内壁のための2つの異なるシンボルを使用できるようにする@代わりに、内壁のために、そして休暇#外装のため、すべての内壁がなければなりません@し、すべての外壁#)。 迷路は常に完全に壁に囲まれていますが、必ずしも長方形ではありません。必要に応じて、長方形の入力を作成するために迷路にスペースが埋め込まれていると想定できます(オプション)。 迷路には、ダイナマイトなしでは到達できないセクションがある場合があります。 迷路の外壁をダイナマイトすることはできません。 出力 truthy / falseyの値。「はい、マウスは他のすべてのマウスを救出できます」の場合は真実、「いいえ、アラームシステムが作動します」の場合は偽です。 ルール 完全なプログラムまたは機能のいずれかが受け入れられます。 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。 例 空白行で区切られた真実の例。 ##### #M E# ##### ###### #M# E# ###### ######## #E # M# # # # # # # # …

3
焦げたパンケーキの問題
この課題は、パンケーキの反転に関連しています。 パンケーキの並べ替えを聞いたことがあるかもしれません。パンケーキがプレート上で最小から最大に並べ替えられるまで、スパチュラをスタックに挿入し、スパチュラの上にあるすべてのパンケーキをひっくり返すことで、サイズによってパンケーキのスタックが並べ替えられます。焦げたパンケーキの問題は少し異なります。これで、すべてのパンケーキの片面が焼かれ、並べ替えが完了すると、各パンケーキの焼いた面がプレートに面する必要があります。 たとえば、次のスタックがある場合(左側のパンケーキのサイズ。右側が焼けた側を、右側が焼かれた側0を1意味します): 1 0 3 1 2 1 スタック全体を反転して取得し20 30 11、トップ2を31 21 11反転して取得し10 20 30、スタック全体を反転して取得します。焦げたパンケーキのソートされたスタックです。この一連の動き、フリップ3、フリップ2、フリップ3は、として表すことができます3 2 3。 チャレンジ パンケーキのサイズ(必ずしも一意ではない)の配列とその向きを指定して、有効な焼きパンケーキの並べ替え順序、つまり、焼き菓子の側面を下にしてパンケーキのスタックを最小から最大に並べ替える一連のフリップを出力します。 入力と出力は、区切り文字を含む任意の健全な形式である場合がありますが、使用する形式を指定し、入力形式のどちらの端がスタックの最上部(TOS)であるかを指定してください。 ゼロのパンケーキの反転は許可されています。 入出力でセパレーターを混在させることができます。 テストケース 以下のすべてのテストケースでは、入力はリストであり、出力はスペースで区切られた文字列であり、TOSは左側にあります。 [[1, 0], [3, 1], [2, 1]] "3 2 3" [[5, 1], [3, 0], [4, 1], [2, 1], [1, 0]] "5 3 4 1 3 2 …

1
今聞こえますか?
バックグラウンド あなたはソフトウェア帝国の豊かな経営者です。あなたの時間はたくさんのお金の価値があります。そのため、常に最も効率的なルートで旅行する必要があります。ただし、幹部として、あなたは重要な電話に参加するのに多くの時間を費やします。絶対に電話を落とさないことが重要です。したがって、携帯電話サービスのないエリアを移動することはできません。 チャレンジ 3つのタプルのリストが表示されます。各タプルは、セルタワーの位置とパワーを表します。例として、影響の円を表す半径16の円で[50, 25, 16]位置<x,y> = <50, 25>するセルタワーを表します。このリストを念頭に置いて、開始位置から<0, 0>目的地に移動し<511, 511>、セルサービスを失うことなく可能な限り最短距離で移動する必要があります。これはcode-golfなので、最短のコードが勝ちです! 入出力 ファイルなど、またはを使用してSTDINを介してネストされた配列として、読みやすい形式に入力を自由に操作できますeval。まあ。入力のハードコーディングに使用される正確な文字はカウントされませんが、変数名と割り当て文字はカウントされます。入力が特定の順序になっていることや、すべてのセルタワーが問題に関連していることを想定しないでください。ご質問がある場合は、コメントを残してください、私はそれを明確にしようとします。 出力は座標のリストで、接続されたときに出口へのパスを形成するポイントをマークします。精度は、最も近い整数に丸める必要があるだけで、出力例の1〜2単位離れている場合は問題ありません。これを明確にするために、以下の画像を含めました。 幸運を祈ります! 例 input: [ 32, 42, 64] [112, 99, 59] [141, 171, 34] [157, 191, 28] [177, 187, 35] [244, 168, 57] [289, 119, 20] [299, 112, 27] [354, 59, 58] [402, 98, 23] [429, 96, …

28
シンプルなワードラッパーを作成する
(注:これは私の初めてのコードゴルフの質問ですが、私が知る限り、誰もこれを正確に行っていないので、私は良いはずです。) あなたの仕事は、文字列sと整数を取り込んで、n複数の行に折り返されたテキストを返すか出力するプログラムまたは関数を作成することです。各単語は完全に1行である必要があります。つまり、途中で単語が分割されません。各行はn文字より長くすることはできません。また、各行にできるだけ多くの単語を収める必要があります。 例: s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed at iaculis mauris. Praesent a …
22 code-golf  string  code-golf  string  parsing  apl  math  primes  integer  fastest-code  code-golf  math  primes  integer  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  array-manipulation  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  code-golf  date  conversion  code-golf  geometry  combinatorics  grid  code-golf  string  code-golf  counting  java  code-golf  chess  code-golf  path-finding  conversion  atomic-code-golf  logic-gates  code-golf  fibonacci  code-golf  ascii-art  fractal  code-golf  quine  code-golf  string  code-golf  array-manipulation  decision-problem  code-golf  quine  code-golf  code-challenge  array-manipulation  code-challenge  word-search  code-golf  binary  conversion  code-golf  code-golf  restricted-source  code-golf  kolmogorov-complexity  restricted-source  code-golf  kolmogorov-complexity  random  animation 

3
パスと無駄な時間
前提 だから最近、私は予定の約30分早く、外で待つことにしました。また、家の前にじっと立っているだけでは奇妙に見えると判断しました。そのため、私は限られたエリア内で、早歩きすることにしました。また、もし私が円を歩き始めたら、それは私がwasしていることを明らかにするだろうと結論づけました。だから、最初のCode Golfチャレンジを作成することに触発されました。 仕様 リスト、エリアの地図が表示されます。これには、" "またはのいずれかが含まれます。これらは"#"、ある種の空きスペースと障害物を表します。空きスペースを横断できるのは1回のみで、横断するには1分かかります。あなたの初期位置は"@"ローグライクごとの伝統で表され、ターゲットは"$"そこで表されるでしょう。なぜならそれはそこであなたが失うことになるからです。また、まるであなたが侵入しているかのように見えなくなる前にあなたが無駄にしなければならない分数を表す整数が与えられます。着陸するとき"$"、正確な分数である必要があります(したがって、カウントダウンする場合、隣接するタイルでは1であり、タイルでは0である必要があります)。常に目的地に到着することが可能です。プログラムまたは関数は、可能な4つの方向を表すために、<、>、^、およびvを含む最短パスを示すリストを返す必要があります。 例 入力: [[" ", " ", " ", " "], ["@", " ", " ", "$"], [" ", " ", " ", " "], [" ", " ", " ", " "]] そして 5 出力: [[">", ">", ">", "v"], ["^", " ", " ", …

2
2Dダンジョンで宝を見つける
あなたは1階のダンジョンにいます。ロックされたドアで保護されている宝物があります。ドアは、対応するキーを見つけることで開くことができます。あなたの目標は、宝物への最短経路を見つけることです。 入力 入力は、ダンジョンの初期レイアウトを表す2次元のグリッドになります。 ########### #$ # g# # # #### ###G## # # ####C# #c @ # ########### これはあなたです:@ これらは壁です:# これは宝です:$ ロックされたドアは大文字です:A... Z 各ドアには対応する小文字のキーがあります:a...z 常に1つ@あります$ます。 ダンジョンは常に長方形になります。 ダンジョンの外縁が壁であることは保証されません。これは有効なダンジョンです: $ A## @ a 宝が届くとは限りません。ダンジョンの中には、解けないものもあります。 キーのないドアがあるかもしれませんし、ドアを開かないキーがあるかもしれません。 ドアやキーが重複することはありません。 出力 プログラムは、配列を印刷する必要がありR、L、U、D(または4つの他の別個のシンボル)を表すために最短宝への可能なパス。ここで、RLUD右、左、上、下をそれぞれ表します。複数の最短パスがある場合、プログラムはそれらの1つを印刷するだけです。 壁に移動することはできません。 ダンジョンの境界の外側に移動することはできません。 鍵を拾わずにドアに移動することはできません。 キーに移動してそれを拾います。 すべてのドアを開く必要はありません。 有効な一連の移動で宝物に到達できない場合、プログラムは何も印刷せずに終了する必要があります。(末尾の改行が許可されます。) 得点 これはコードゴルフなので、バイト数が最小の答えが勝ちです。 テストケース 各テストケースには、最初の行にダンジョンの高さと幅があり、最後の行に最適な移動数で1つの可能なパスがあります。 1 2 @$ R …

2
ピーク体験:すべてのピークをすばやく訪問
私は、たとえば、高度が数字で表されるx マップのポイント(0,0)に立っています。HW 1132 2221 1230 # H = 3, W = 4 すべてのピークからの景色を体験したいと思います3。この場合は、標高の高いエリアです。しかし、丘を登るのは簡単なことではなく、私も時間を使い果たしています。 チャレンジ 課題は、すべてのピークを訪れて戻ってくるための最速のパスを見つけることです。 最短のプログラムが勝ちます。 入力 H、W-マップの高さと幅(整数)(オプション、リスト/タプルまたは2つの個別の整数入力) 任意の便利な形式(2Dリスト、改行で区切られた文字列など)HのW数字のセット(0- 9)として与えられるマップ 出力 すべてのピークを訪れて出発点に戻るまでの最短時間(整数) 条件 特定のエリアの高度は、0〜の数字で表され9ます。 「ピーク」は、最高高度のエリアによって定義されます。 パスは、左上(0,0)領域で開始および終了する必要があります。 現在のエリアに隣接するエリアにのみ移動でき、斜めに移動することはできません。 高度に変化がない場合、あるエリアから別のエリアに移動するのに3分かかります。 登るには11分かかります。つまり、あるエリアから別のエリアに移動し1ます。これは正確に単位が高くなります。 降りるのに2分かかります。つまり、あるエリアから別のエリアに移動し1ます。これは正確に単位が低くなります。 現在地よりも1 1ユニット以上高いまたは低いエリアに移動することはできません。(高度のあるエリアから1隣接する高度のあるエリアに移動することはできません。たとえば、3) すべてのピークへのパスが保証されています ピークの最大数はです15。 サンプル 入力 4 5 32445 33434 21153 12343 出力 96 説明 左上から始め3ます。次の2つの訪問しなければならない5に位置しているのを(0,4)と(3,3)し、戻ってくる3の(0,0)最短時間で。 3 2 4->4->5 V …

10
グリッドルーティングバトル
注:試合を実行するために必要な言語をインストールできないため、この課題は現在無効です。他の誰かがそれをする時間と興味を持っているなら、私は反対しません。 リーダーボードについては、投稿の下部をご覧ください。 これは、ボットが2次元グリッドグラフを介してパスを構築する、準協力的なキングオブザヒルチャレンジです。最もトラフィックの多いノードを制御するボットが勝者です。ただし、実際に接続パスを構築するには複数のボットのリソースが必要なので、ボットはある程度連携する必要があります。 ゲームプレイ 以下ではN > 0、プレイ中のボットの数をみましょう。 グリッド ゲームは、サイズの2次元整数グリッドで再生されます。そのグリッドの左下座標はです。各座標と3点の座標への発信エッジ有し、およびその上、-coordinatesはモジュロを取られるが 。これは、グリッドが東端と西端で折り返されることを意味します。すべての下部座標はソースであり、すべての上部座標はシンクです。⌊4/3N2⌋ × ⌊4/3N2⌋(0,0)(x,y)0 ≤ y < ⌊4/3N2⌋-1(x-1,y+1)(x,y+1)(x+1,y+1)x⌊4/3N2⌋(x,0)(x,⌊4/3N2⌋-1) 次の図は8 × 8グリッドを示しています。 グラフの各頂点は、非アクティブ、アクティブ、または破損しています。すべての頂点は非アクティブで開始され、ボットによってアクティブ化できます。ボットはその後、所有者になります。また、ボットは頂点を破壊する可能性があり、修復できません。 順番を変える ターンは破壊フェーズと活性化フェーズで構成されます。破壊フェーズでは、各ボットが1つの非アクティブな頂点を破壊する場合があります。その頂点はそれ以降壊れていて、だれもアクティブにできない可能性があります。アクティブ化フェーズでは、各ボットが1つの非アクティブな頂点をアクティブ化できます。それ以降、彼らはその頂点を所有し、他の誰もそれを再アクティブ化することはできません。複数のボットが1つの頂点を所有している場合がありますが、それらがすべて同じターンにアクティブ化される場合です。各フェーズでは、頂点の選択が同時に行われます。 得点 1ラウンドは正確なターンの間続きます。この後、ラウンドは次のように採点されます。アクティブな各ソース頂点から、アクティブな頂点に沿ってランダム化された深さ優先探索を実行します(つまり、各頂点の子がランダムな順序でアクセスされます)。ソースからシンクへのパスが見つかった場合、そのパスに沿ったすべての頂点について、頂点のすべての所有者が1ポイントを取得します。N2N ゲーム全体は100ラウンド続き、全体で最もポイントの多いボットが勝者となります。スコアの分散が高すぎる場合、この数を増やすことができます。 追加の規則 コントローラや他の提出物をいじることはありません。 出場者ごとに最大1つの提出。 1つのプライベートテキストファイルを除き、ゲームの開始時に完全に消去された外部リソースはありません。 特定の敵を倒したりサポートしたりするようにボットを設計しないでください。 ボットをコンパイルして実行するコマンドを提供します。Debian Linuxで自由に利用できるコンパイラ/インタープリターはすべて受け入れられます。 コントローラー コントローラーはPython 3で作成されており、GitHubにあります。詳細な手順については、READMEファイルを参照してください。開始するためのAPIは次のとおりです。 ボットは各ラウンドの開始時に開始され、ラウンドの終了まで持続します。改行で終了するメッセージを使用して、STDINおよびSTDOUTを介してコントローラーと通信します。 BEGIN [num-of-bots] [num-of-turns] [side-length] 先頭に入力されます。 DESTROY [turn]各破壊フェーズの開始時に入力されます。ボットはVERTEX x,y、頂点を選択するか、で応答しますNONE。 BROKEN [turn] [your-choice] [other-choices]各破壊フェーズの終わりに入力されます。他のボットの順序は各ゲームの開始時にランダム化されますが、その間は固定されたままです。選択肢はx,yまたはとして表示されNます。 ACTIVATE [turn]およびOWNED …

1
ローグライクパスファインディング
ローグライクパスファインディング あなたのタスクは、ダンジョンを表す以下に説明する要素の2次元配列を与えられ、怪物を起こさずにローグが収集できる金貨の量を表す単一の数値を出力または返すことです。 配列の要素は次のとおりです。 空のスペースは.、コールのいずれかまたはスペースで表されます。 Rogueの開始位置は、もちろん次のように表され@ます。 金色のピースは$; で表されます。 壁はで表され#ます。 モンスターは、次の正規表現の文字で表されます[a-zA-Z*&]。 配列には上記以外の文字が含まれてはならないため、壁、空きスペース、ならず者、または金のピース以外のものはすべてモンスターであると想定できます。 経路探索のルールは次のとおりです。 悪党は空のセルまたは金を含むセルのみを通過できます。 隣接するセルまたは斜めに隣接するセルに移動するにはターンが必要です。 金を手に入れるのは瞬時です。 ならず者は目を覚ますことなく、モンスターに1ターン以上隣接したり斜めに隣接したりすることはできません。 ならず者は何回でもモンスターの認識エリアに入ることができ、モンスターは近くで2 ターン連続してモンスターを目覚めさせます。 入出力規則 入力は、2次元配列、フラット配列、文字列など、あらゆる妥当な形式で取得できます。作業が楽になる場合は、配列の次元も取得できます。 不正は最初はモンスターの近くにいないことが保証されています。 完全なプログラムまたは機能は問題ありません。 得点 これはcode-golfであり、スコアは提出物のバイト数であり、少ないほうが良いです。 テストケース 読みやすくするために、ここでは空のスペースにドットを使用しています。スペースを使用したい場合は、上記を参照してください。また、これは不正が常に左上隅にあるという単なる偶然の一致であり、コードは他の有効な位置も処理する必要があることに注意してください。 1) @.. .$. ... -> 1 ただ健全性テスト。 2) @.... ...g$ ..... -> 0 再び、健全性テスト。 3) @.... ...$g ..... -> 1 悪党は左から入ることで金をつかむことができます。 4) @....g.. .......$ ........ …

3
不完全な指示に従う
あなたの友人が町で最高のレストランへの道順を教えてくれました。一連の左と右のターンです。残念ながら、彼らはあなたがそれらのターンの間にまっすぐに進む必要がある時間について言及するのを忘れていました。幸いなことに、すべてのレストランがある通りの地図があります。たぶん、あなたは彼らがどのレストランを意味したかを理解できるでしょうか? 入力 マップは、ASCII文字の長方形のグリッドとして提供されます。.道は、ある#建物であるAためにZ様々なレストランがあります。左上隅から始まり、東に進みます。例: .....A .#.### B....C ##.#.# D....E ##F### 友人の指示は、LsとRs を含む(潜在的に空の)文字列または文字のリストとして提供されます。 出力 入力文字列の左と右のターンに対応する任意のパスを歩くことができます。ただし、それぞれのパスの前と最後で少なくとも1ステップ先に進む必要があります。特に、文字列がで始まる場合、R一番左の列ですぐに南に行けないことを意味します。また、その場で180°向きを変えることはできません。 最後に到達した建物以外の建物やレストランを歩くことはできません。あなたは左上隅がであると仮定するかもしれません.。 友達の指示で到達できるすべてのレストランを、文字列またはリストとして出力する必要があります。 指示が少なくとも1つのレストランにつながると想定することができます。たとえばL、上記のマップではシングルは無効です。 上記のマップの例: <empty> A R F RR B,D RL C,E RLRL E RLLR C RLLL B RLRR D RLRRRR A,C RLLLRLL B 特にR届かないことに注意してくださいB。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 標準のコードゴルフ規則が適用されます。 追加のテストケース 以下は、Conor O'Brienの好意による大きなマップです(少し修正しました)。 .......Y..........................###### .####.....#.##....##..######....#.###.## B.........#.##.#..##....##...##.#.#P...# .#.#####..#.##..#.##....##.#....#.####.# .#.#...C..#.##...G##..#.##.#....#.#....# .#.#.#.#..#.####.###.#..##.#....#.#.NO.# .#.#A#.#..#.##...F###...##.#.##.#......# …

3
私の障害物コースはどの程度変化しますか?
バックグラウンド 長方形の部屋に箱を置いて、簡単な障害物コースを構築しました。今、私はそれが解決できる本質的に異なる方法の数を数えたいです。そのためのプログラムを書いてほしい。 入力 入力は、文字の空でない長方形の配列です.#。ドット.は空きスペースであり、#障害物です。 パス障害物までは、もちろん右下隅にある左上隅と端で始まり、そして唯一の右またはダウンしました。また、有効なパスは障害物を通過できません。以下に、- +文字を使用したいくつかの例を示します。 Valid path Invalid path Invalid path Invalid path ++........ ++........ +++++..... ..+....... .++++++#.. .+.....#.. ....+++#++ ..++...#.. ......+#.. .+.++++#.. .......#.+ ...+++.#.. ....#.++++ .+++#.++++ ....#....+ ....#+.... 2つのパスは、一度に1つずつ移動することで一方を他方に変換できる場合、基本的に1 +中間のパスも有効でなければならないため、障害物の上でパスを曲げることはできません。たとえば、ここの最初の2つのパスは基本的に似ていますが、3番目のパスは2つの障害物の上をくねることができないため、基本的にそれらとは異なります。 ++........ +......... +++++++++. .+++++.#.. ++.....#.. .......#+. .....+.#.. .++++++#.. .......#++ ....#+++++ ....#.++++ ....#....+ 出力 出力は、障害物コースを通る本質的に異なるパスの数です。つまり、すべての有効なパスが本質的に同様のパスのクラスに分割される場合、出力はクラスの数になります。有効なパスがない場合、この番号は0になる場合があります。 ルールとスコアリング 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。時間制限はありませんが、提出する前にすべてのテストケースでプログラムを評価する必要があります。 テストケース .... …

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