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

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

4
ASCIIアートのエンドポイントを数える
ASCIIアートを表す文字列を入力として受け取り、入力のエンドポイントの数を出力または返すプログラムまたは関数を作成する必要があります。 入力は、文字space - | +(それぞれ0、2、2、および4つのエンドポイントを持つ)と改行で構成されます。例えば: -|++- + 隣接する2つのキャラクターは接続されているため、次の場合にはそれぞれ1つのエンドポイントが失われます。 -- -+ +- | | + + ++ | + | + 最初の例は 2+2+2+2+1+ 3 = 12 エンドポイント。 入力 入力文字のスペースからなる文字列になります-、|、+および改行。 入力の長さは0の長さにすることができ、上記の説明に一致する入力はすべて有効です(正規表現入力では[ -+|\n]*)。 末尾の改行はオプションです。 出力 単一の非負整数、エンドポイントの数。 例 出力は、入力の最後の行の後です。 + 4 -|++- + 12 +--+ | | +--+ 8 | | +--+-- ||| 12 …

2
Karel J. AlphaBotシーケンスジェネレーター
スコア このセクションは、提出物が入力されると記入されます。 正常 1. bopjesvla Perl 54 2. edc65 Javascript (ES6) 91 3. name language score 4. name language score 5. name language score ボーナスラウンド 1. name language score 2. name language score 3. name language score 4. name language score 5. name language score カレル・J・アルファボット バックグラウンド Javaの人気のある入門コースはKarel J. Robotです(私は自分で使用しています)。ロボットは、通りのグリッド(正の整数y座標)および通り(正の整数x座標)、およびグリッドに配置および保存できるビーパーと対話します(カレルとすべてのビーパーは格子上にのみ存在できることに注意してください)ポイント)。カレル(ロボット)は、5つのアクションのみを実行します。1歩進め、所定の位置で左に曲がり、ブザーを降ろし、ブザーを拾い、オフにします。 …
14 code-golf 

5
テキスト処理#1:ハイフネーション
バックグラウンド これは、テキスト処理に関する3ホールのゴルフコースの最初の部分です。包括的な考え方は、入力テキストを取得し、3つの課題すべて(少量のグルーコードを使用)のソリューションにパイプすると、きれいに書式設定された段落を吐き出すというものです。この最初の課題では、タスクは指定されたハイフネーションパターンを使用してテキストをハイフネーションします。 入力 プログラムは、テキストとハイフネーションパターンのリストの2つの文字列入力を受け取る必要があります。最初の入力は、単に印刷可能なASCII文字とスペースの空でない文字列です。改行やチルダは含まれません~。2番目の入力は、カンマで区切られた単語のリストであり、チルダで区切られた小文字のASCII文字の音節で構成されています。例はex~cel~lent,pro~gram~ming,abil~i~tiesです。 出力 プログラムは、次の方法で最初の入力を変更します。ハイフン付き小文字バージョンが2番目の入力で見つかった単語(アルファベットASCII文字の最大部分文字列)は、そのハイフン付きバージョンに置き換えられますが、大文字と小文字は保持されます。上記のリストの例では、テキストにwordが含まれている場合、; Excellentに置き換えられEx~cel~lentます。しかし、Excellentlyものではない修正されます。出力は、この変更された文字列になります。 詳細なルールとスコアリング 入力について次のことを想定できます。 最初の入力には、チルダは含まれず、先頭、末尾、または繰り返されるスペースは含まれません。空ではありません。 2番目の入力には少なくとも1つの単語が含まれ、その各単語には少なくとも2つの音節が含まれます。各音節は空ではありません。 2番目の入力には、別の単語の音節として現れる単語は含まれません。 必要に応じて、2つの入力の順序を変更し、オプションで1つの末尾の改行を出力に追加できます。 関数または完全なプログラムを作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース これらは形式でリストされています1st input [newline] 2nd input [newline] output。 Excellent programming abilities, you work excellently! ex~cel~lent,pro~gram~ming,abil~i~ties Ex~cel~lent pro~gram~ming abil~i~ties, you work excellently! Superman (sometimes incorrectly spelled "Super-man") is super #&%@ing strong. su~per,some~times,in~cor~rectly,spell~ing Superman (some~times in~cor~rectly spelled "Su~per-man") …

3
キーボードのすべてのキーを確認します
標準101キーUSキーボード*のすべてのキーが押されるのを待ってから、OKの書き込みを終了する最短のプログラムを作成します。 キーが押されるたびに、プログラムは新しい行に、すべてのキーが少なくとも1回押されるまで押される必要がある押されていない一意のキーの残りの数を表示します。プログラムは101キーボードをテストし、すべてのキーが機能するかどうかを確認できる必要があります。したがって、キーまたはEnterを2回押すことは、ユーザーに指定されている限り許可されます。 同じキーを2回以上押しても、コードが中断したり、表示されている残りの押されていないキーの数が変わったりすることはありません。 すべてのキー(Left Shift、Right Shift、Right Control、Esc、Enter、など)が含まれなければなりません。 実際のキーボードのキーは、(そのプログラムの観点から、この課題において重要であるAとa同じであり、そうしている、6と^)。 結合されたキーは結合されたコマンドとして登録されず、Ctrl+ Alt+ Delが押された場合、個々のキーのみが登録され、押された組み合わせの個々のキーすべてがカウントされます。そのため、すでに小文字を押している場合、大文字を押す必要はありません。その逆も同様です。 数字キーパッドの数字キーはプログラムの観点とは異なるため、ラップトップまたはUS Standard 101キーボードレイアウトを持たない他のキーボードを使用している場合は、プログラムを終了するために押す必要があります互換性のあるキーボードをプラグインしない限り、チャレンジを達成できません。 * Fnキーとラップトップキーを持つキーボードは、このチャレンジを実行可能にするためにサポートされません。 これは、米国標準101キーボードレイアウトのキーのリストです。 backspace tab enter right shift right ctrl right alt left shift left ctrl left alt print screen pause/break caps lock escape page up page down end home left arrow up arrow right arrow …

1
失われたポーンの問題
失われたポーンの問題 チェスゲームが終了した後、生き残ったポーンは敵のラインの後ろに残されました。彼が家に戻る最短の道を見つけるのを手伝いましょう。 元の問題は、nXn「チェス」ボードとf: {1,..,n-1}X{1,..,n}X{-1,0,1} => R+重みの関数について説明しています。目標は、下の行のある正方形から上の行のある他の正方形への最適なパスを見つけることです。ここで、可能な動きは次のとおりです。左から上、右から上。 この問題は、動的プログラミングを使用してO(n ^ 2)で比較的簡単に解決できますが、これはcodegolfであり、実行時間の複雑さのような無駄なものは気にしません... 問題 入力:正確にサイズが通常のチェスボードに対応する3次元配列(または選択した他のコレクション、stdinを介して、または関数の引数として):7X8X3(#linePasses X #rowSize X #movesPerPass)非負の整数。移動コストから、いくつかの位置行インデックスであり、であり、列インデックスです。(i,j)ij a[i][j][0]広場まで、左旅行へのコストのために(i+1,j-1)、またはグラフィカル:\。 a[i][j][1]広場まで移動するためのコストについて(i+1,j):、またはグラフィカルに|。 a[i][j][2]広場まで、右走行へのコストのために(i+1,j+1)、またはグラフィカル:/。 合計がを超えるパスは含まれないと想定できますMAX_INT。 出力:最適な(最短、つまり重みの最小合計)パスを示す8X8 ascii出力(最適な結果が複数ある場合は、任意のパスを表示できます)。パスは下から上に描画されます。各行では、パス内のポーンの位置に対応する文字が、作成しようとしている文字です。例えば、ポーンが列3から(列2に)左上に移動しようとしている場合、描画する必要があります。 #?###### ##\##### どこ?が次の動きに置き換えられるべきか。最終位置はとして描画する必要がありますX。 例 入力: [ [[1,1,1],[1,1,1],[0,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]], [[1,1,1],[1,0,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]], [[1,1,1],[1,1,0],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]], [[1,1,1],[1,1,1],[1,1,0],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]], [[1,1,1],[1,1,1],[1,1,1],[1,0,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]], [[1,1,1],[1,1,1],[1,1,1],[1,0,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]], [[1,1,1],[1,1,1],[1,1,1],[0,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]] ] 出力: ##X##### ###\#### ###|#### ###|#### ##/##### #/###### #|###### ##\##### 入力: [ [[41,27,38],[12,83,32],[50,53,35],[46,32,26],[55,89,82],[75,30,87],[2,11,64],[8,55,22]], [[56,21,0],[83,25,38],[43,75,63],[56,60,77],[68,55,89],[99,48,67],[94,30,9],[62,62,58]], [[23,18,40],[24,47,61],[96,45,72],[71,6,48],[75,63,98],[93,56,51],[23,31,30],[49,34,99]], [[20,47,42],[62,79,72],[32,28,44],[68,61,55],[62,39,57],[4,17,49],[97,85,6],[91,18,12]], …
14 code-golf  chess 

8
アルファベットファンクッチ
Fannkuchは、古典的なベンチマークプログラムです。この名前は、パンケーキの山をひっくり返すアルゴリズムに似ているため、ドイツの「ファンクーヘン」-パンケーキ-に由来しています。番号の Fannkuchシーケンスは次のように形成されます。 {1 ..... n}の順列を使用します(例:{4,2,1,5,3})。最初の要素(ここでは4)を取得し、最初の4つの要素の順序を逆にします:{5,1,2,4,3}。最初の要素が1になるまでこれを繰り返します。したがって、反転してもそれ以上何も変わりません:{3,4,2,1,5}、{2,4,3,1,5}、{4,2,3、 1,5}、{1,3,2,4,5} あなたは、アルファベット文字の文字列のために、Fannkuchのようなシーケンスを計算するプログラムまたは関数を書くことになっています。毎回リストの要素をいくつ反転させるかを示すために数字を使用する代わりに、アルファベットの文字の位置を使用する必要があります。たとえば、先頭cは、最初の3つの要素の順序を逆にする必要があることをa示し、先頭は、シーケンスが完了したことを示します。 入力 入力は、stdin経由の文字列または関数の引数として提供されます。文字列には、1〜26個の異なる小文字が含まれます。文字列には、同等のインデックスによってFannkuchアルゴリズムが存在するよりも多くの要素を反転させる文字は含まれません。 出力 プログラムまたは関数は、先頭a文字列を含む先頭に到達するまでFannkuchアルゴリズムを適用することによって生成された用語のシーケンスを標準出力に返すか、印刷する必要があります。たとえば、入力がの場合bca、次を印刷できます。 bca cba abc 印刷結果には、コンマ、改行などの適切な区切り文字を使用できます。空白の選択は任意です。 別の例として、入力がeabdc次のように返される場合があります。 ("eabdc" "cdbae" "bdcae" "dbcae" "acbde") ルールとスコアリング これはコードゴルフです -最短のプログラムが勝ちます。標準の抜け穴は許可されていません。

4
bzip2のランレングスエンコーディングを実装する
バックグラウンド BWT(Burrows、Wheeler、Backで見られる)とMTF(Move to the printable ASCII frontで見られる)を適用した後、bzip2コンプレッサーはかなりユニークな形式のランレングスエンコーディングを適用します。 定義 この課題のために、変換BRLEを次のように定義します。 0x20〜0x7Aのコードポイントを持つASCII文字のみで構成される入力文字列sを指定して、次の操作を行います。 等しい文字の各実行をその文字の1回の出現で置き換え、最初の文字以降の繰り返し回数を保存します。 繰り返し数を符号化文字の最初の発生の後に使用して、全単射ベース2記数や記号{などを}。 非負整数nは文字列として符号化されたB K ... B 0ように、N = 2 K I(BのK)+ ... + 2 0、I(B 0)、I({)= 1とI(})= 2。 この表現は常に一意であることに注意してください。たとえば、数値0は空の文字列としてエンコードされます。 対応する文字が1回出現した後、繰り返し回数をエンコードする中括弧の文字列を挿入します。 ステップバイステップの例 Input: "abbcccddddeeeeeffffffggggggghhhhhhhh" Step 1: "abcdefgh" with repetitions 0, 1, 2, 3, 4, 5, 6, 7 Step 2: "" "{" …

11
プールを空にします。。。レッドソロカップのみ
あなたは水でいっぱいに満たされているスイミングプールを持っています。空にする必要がありますが、効率的な方法を考えることはできません。あなたは赤いソロカップを使うことにしました。カップをいっぱいまで繰り返し満たし、プールの外に捨てます。 チャレンジ プールを空にするのにどれくらい時間がかかりますか? 入力 [shape of pool] [dimensions] [shape of cup] [dimensions] [speed] shape of pool:これらの文字列のいずれかになりますcircle、triangleまたはrectangle。これらは実際には、円柱、三角柱、四角柱の3次元形状を指していることに注意してください。 dimensions 形状によって異なります。 サークル:[radius] [height]。体積=πr 2 h 三角形:[base] [height] [length]。体積= 1/2(bh)*長さ 長方形:[width] [length] [height]ボリューム= lwh shape of cupそして、dimensions同じように動作します。カップは、円、三角形、または長方形のいずれかです。 speed数秒で1杯の水をいっぱいにするのに要する時間です。 出力 プールを空にするのにかかる秒数。これは、最も近い秒に丸めることができます。 ノート 入力に単位はありません。すべての距離単位は同じであると想定されます(形状の高さはインチで、幅はフィートではありません)。 には3.14を使用しpiます。 入力は、文字列と浮動小数点数で構成されます。 雨は降りません。水は追加されません。 あなたは持っている非常に着実に手を。毎回カップをつばまで正確に満たし、決してこぼさないようにします。 終わりに近づくと、一杯の水をすくうのが難しくなります。これについて心配する必要はありません。あなたは非常に強いので、プールを横に傾けることができます(もう時間を使い果たすことなく)。 計算を行うときはいつでも、最も近い100分の1に丸めても構いません。最終回答は正確である必要はありません。 テストケース 入力:triangle 10 12.25 3 circle …

7
再帰的バイナリ記述
再帰的バイナリ記述 最近、シーケンスA049064に bファイルを拡張および追加することで、OEISに初めて貢献しました。シーケンスはで始まり0、次の値は最後のアイテムの「バイナリ説明」の提供から派生します。 たとえば、最初の要素10に1つあったため、2番目の用語はになり0ます。第三項は次のようになり11101があったので、1一つ0。4番目はになります11110。なぜなら3つ(11バイナリで!) 1と1つだから0です。以下は、このプロセスを明確にするための第5項の内訳です。 > 11110 > 1111 0 (split into groups of each number) > 4*1 1*0 (get count of each number in each group) > 100*1 1*0 (convert counts to binary) > 100110 (join each group back together) そして、6期から7期に移行する例を次に示します。 > 1110010110 > 111 00 1 0 11 …
14 code-golf 

2
チェス盤での爆発
アトミックチェスは、すべてのキャプチャが「爆発」を引き起こし、キャプチャしたピース、キャプチャを行うピース、および1平方半径のポーン以外のすべてを破壊するチェスの(非常に楽しい)バリアントです。この課題の目標は、原子チェスのゲーム全体をプレイすることではなく、単に特定の動きが行われたときに何が起こるかをシミュレートすることです。 免責事項:爆発効果音は含まれていません。 入力 ボードの位置は、フォーサイス・エドワーズ表記法 (一般にFENとして知られています)で与えられますが、最初のフィールドのみです。たとえば、次の入力: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR 開始位置を表します: これは文字列またはあなたの言語の同等物として受け取られなければなりません。有効であることが保証されています。たとえば、10人の王がいるかどうか、または王がまったくいないかどうかを気にする必要はありません。 また、シミュレートする動きが与えられます。これは、2つの正方形の名前として表されます。移動するピースがある正方形と、移動する正方形です。たとえば、上の図でキングのポーンを2スペース前方に移動すると、次のように表されます。 e2e4 これも文字列として解釈する必要があります。移動は常に有効であり、キャストをサポートする必要はありません。en passantをサポートする必要があります。これについては、次のセクションで詳しく説明します。 出力 プログラムの出力は、指定された移動(および必要に応じて分解された部分)が行われ、入力と同じ部分FEN表記である必要があります。 爆発の正確なルールは次のとおりです。 キャプチャされるピースを削除します(これは、キャプチャが一時通過である場合を除き、常に入力で指定された2番目の正方形のピースになります)。 キャプチャを行っているピースを削除します(これは常に入力で指定された最初の正方形のピースになります)。 次のものをすべて削除します。 キャプチャが行われた場所を囲む8つの正方形の1つに位置します(パッサンにとっては、これが爆発しない場合、これはキャプチャポーンが置かれる正方形です)。 ポーンではありません。 不慣れな人のためのパッサンルールの簡単な概要:ポーンが開始ランクから2スペース前方に移動し、1マスだけ前方に移動した場合にそれをキャプチャできるポーンがある場合は、とにかくキャプチャすることができますが、後続の移動のみ。このキャプチャは、「行われると言われて渡しに」(またはフランス語で「アンアンパッサン」)。 テストケース 写真では、緑色の矢印はこれから行われる動きを表し、緑色の円は爆発した破片を表します。 入力:rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR、g1f3 出力:rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R 入力:3kBb1r/pp5p/3p4/4pn2/P7/1P2P1pP/2rP1P2/R1B3RK、f2g3 出力:3kBb1r/pp5p/3p4/4pn2/P7/1P2P2P/2rP4/R1B3RK (http://en.lichess.org/ocoSfS5I/white#36から盗まれた) 入力:rnbqk1nr/1pp5/p2pp1pp/5p2/1bN5/2P1PQ1N/PP1P1PPP/R1B1KB1R、f3b7 出力:3qk1nr/2p5/p2pp1pp/5p2/1bN5/2P1P2N/PP1P1PPP/R1B1KB1R (http://en.lichess.org/NCUnA6LV/white#14から盗まれた) 入力:rnbqk2r/pp2p2p/2p3pb/3pP3/5P2/2N5/PPPP2P1/R1BQKB1R、e5d6 出力:rnbqk2r/pp2p2p/2p3pb/8/5P2/2N5/PPPP2P1/R1BQKB1R (http://en.lichess.org/AvgU4Skq/white#16から盗まれました;これは実際の動きではありませんでしたが、実際に不意を突かれたアトミックゲームを見つけるのは面倒でした: P) 入力:5r2/2k5/p1B5/1pP1p3/1P4P1/3P4/P7/1K3R1q、c6h1 出力:5r2/2k5/p7/1pP1p3/1P4P1/3P4/P7/1K3R2 (http://en.lichess.org/l77efXEb/white#58から盗まれた) 得点 これはcode-golfであるため、バイト単位の最短コードが優先されます。
14 code-golf  chess 

3
最高の周辺ポリオミノ
これはコードゴルフです。勝者は、バイト数が最小の有効なコードです。 チャレンジ 入力MとN、正方形の長方形グリッドの幅と高さを指定すると、次を満たすポリゴンを出力します。 多角形のエッジは正方形のエッジのみで構成されています。斜めのエッジはありません。すべて垂直または水平です。 多角形には穴がありません。多角形の外側のすべての正方形は、長方形の外側の境界にある多角形の外側の正方形から開始して、多角形の外側の正方形の直交ステップによって到達できます。 ポリゴンには自己交差がありません。頂点で交わる正方形のエッジのうち、ポリゴンの周囲の一部は2つまでです。 多角形は接続されています。多角形内の正方形は、多角形内にとどまる直交ステップを介して、多角形の他の正方形から到達可能でなければなりません。 ポリゴンには、次の式に従って、可能な最大の境界線があります。 コードは、1〜255のMおよびNで機能する必要があります。 最大周囲長の式 ここでの課題は、最大の周囲長を持つこれらのポリゴンの中で最もゴルフに適したものを見つけることです。最大境界自体は、常に次の式で定義されます。 これは、最大の境界線ではすべての正方形の頂点が境界線上にある必要があるためです。奇数の頂点の場合、これは不可能であり、達成できる最適なものは頂点が1つ少ないことです(境界は常に偶数であるため)。 出力 改行で区切られた文字列(正確にM文字のN行)として形状を出力します。ここでは、多角形の外側の正方形にスペースを使用し、多角形の内側の正方形に「#」を使用していますが、すべての入力で意味が一貫していれば、視覚的に異なる2つの文字を使用できます。 最大1つの先行改行と最大1つの後続改行を含めることができます。 必要に応じて、代わりに正確にN文字のM行を出力し、一部の入力ではM × N出力を選択し、他の入力ではN × M出力を選択できます。 例 穴のため無効です: ### # # ### 交差(斜めに触れる-周囲に4つの正方形のエッジを持つ頂点)と、偶然に穴があるため無効です: ## # # ### 切断されているため無効です: # # # # 最大周囲の有効なポリゴン: # # # # ### クレジット 私は当初、最大周囲長の値がどれくらい速く計算できるかを過小評価していましたが、その値を出力として求めるだけでした。任意のNとMの最大境界線を計算する方法を説明し、これを複数の回答が続く課題に変えるのを助けてくれた、チャットの非常に役立つ人々に感謝します... 特に感謝します: スパー、ズガルブ、フェールサム、ジミー23013。
14 code-golf  grid 

14
FuzzyFinderを実装する
Redditで見つけたこのリンクに触発されました。 FuzzyFinderは、多くのテキストエディターの機能です。ファイルパスを入力し始めるとSと、FuzzyFinderが起動し、入力した文字列を含む現在のディレクトリ内のすべてのファイルを、ファイル内の位置でソートSして表示します。 あなたの仕事はファジーファインダーを実装することです。それは、(stdin、関数引数、またはコマンドラインを介して)文字列Sと文字列のリストを(L必要に応じて)フォーマットし、ファジーファインダーの実行結果を返すか出力するプログラムまたは関数でなければなりません。検索では大文字と小文字を区別する必要があります。S複数の文字列で同じ位置にある結果は、必要に応じて並べ替えることができます。 例: Input: mig, [imig, mig, migd, do, Mig] Output: [mig, migd, imig] OR [migd, mig, imig] これはコードゴルフであるため、最短のソリューションが優先されます。
14 code-golf 

4
木片の梱包
木が2つあります。どちらも、まっすぐな体と体の下のいくつかの余分なブロックで構成されています。(0-indexed)位置0,4,7,9,10に余分なブロックがある例: XXXXXXXXXXX X X X XX ピースは、thの位置にブロックがあるかどうかを示すth文字を含む01バイナリシーケンスとして表すことができます。上の例はとして表すことができます。ii10001001011 2番目のピースを垂直にフリップすることで、2つのピースをまとめることができます(水平方向にフリップすることもできます)。フリップの後、2つのピースを合わせて高さ3になるように配置することができます。 Two example pieces: XXXXXXXXXXX XXXXXXXX X X X XX XXX Second piece flipped vertically and horizontally: XXXXXXXXXXX X X X XX XXX XXXXXXXX Pieces put together: XXXXXXXXXXX XXXXX X XX XXXXXXXX この例では、合計幅が12ブロックになりました。 2つの部分を表す入力として2つの文字列を受け取り、最小の達成可能な幅 3の整数を出力するプログラムまたは関数を作成する必要があります。 入力 文字からなる二つの文字列0と1。 両方の文字列に少なくとも1つの文字が含まれています。 1つのスペースで結合された2つの文字列を受け取ることを選択できます。 出力 達成可能な最小の合計幅である単一の正の整数。 例 0 …

5
回転した長方形の寸法を決定する
このスタックスニペットは、寸法、位置、角度、およびグリッド寸法のパラメーターを指定して、黒い背景にエイリアスされた白い長方形を描画します。 <style>html *{font-family:Consolas,monospace}input{width:24pt;text-align:right;padding:1px}canvas{border:1px solid gray}</style><p>grid w:<input id='gw' type='text' value='60'> grid h:<input id='gh' type='text' value='34'> w:<input id='w' type='text' value='40'> h:<input id='h' type='text' value='24'> x:<input id='x' type='text' value='0'> y:<input id='y' type='text' value='0'> θ:<input id='t' type='text' value='12'>° <button type='button' onclick='go()'>Go</button></p>Image<br><canvas id='c'>Canvas not supported</canvas><br>Text<br><textarea id='o' rows='36' cols='128'></textarea><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>function toCart(t,a,n,r){return{x:t-n/2,y:r/2-a}}function vtx(t,a,n){return{x:n.x+t*Math.cos(a),y:n.y+t*Math.sin(a)}}function sub(t,a){return{x:t.x-a.x,y:t.y-a.y}}function dot(t,a){return t.x*a.x+t.y*a.y}function inRect(t,a,n,r){var …

1
4ウェイストップをスケジュールする
4方向の一時停止の標識に、たくさんの車が並んで待っています。誰が次に行くのか、誰がどの方向に行くのかなどについて混乱しています。明らかに最適ではありません。 あなたの仕事は、最適な方法で一時停止標識の交通をスケジュールすることです。 4つの主要な方向のそれぞれに1つずつ、ターンリクエストの4つの文字列を入力として受け取ります。各リクエストはL、左、Sストレート、またはR右のいずれかです。 LLSLRLS SSSRRSRLLR LLRLSR RRRLLLL 最初の行は、交差点の北口のラインナップです。列に並んでいる最初の車が左に曲がります(つまり、東を出ます)。後続の行は、入ってくる東、南、および西の入り口用です。それで、西から来る最初の車は南を出ることを望みます。 トラフィックは一連のステップで移動します。各ステップで、行の先頭にある車のサブセットを選択して続行する必要があります。選択した車は互いに干渉してはなりません。2台の車が同じ方向から出る場合、または互いの進路を横断する必要がある場合(標準的な右ハンドル規則が与えられている場合)は干渉します。したがって、両方ともまっすぐに行きたい2つの反対の車は同じステップで行くかもしれません。4台すべてが右折を希望する場合があります。反対側の2台の車は両方同時に左折できます。 あなたの仕事は、最小限の一連のステップで交差点をスケジュールすることです。各ステップについて、入ってくる車のコンパスの方向がリストされた行を出力します。上記の例では、最小スケジュールは14ステップです。1つの最小スケジュールは次のとおりです。 N [L from North] E [S from East] E [S from East] E [S from East] NESW [L from North, R from East, L from South, R from West] NE [S from North] EW [R from East] NESW [L from …
14 code-golf 

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