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

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

4
小さな冒険
テキストアドベンチャーゲームには、かなり定式化されています。一連の部屋/スペースで構成される世界があり、プレイヤーはこれらの部屋を動き回ることができ、部屋にはいくつかのアイテムがあります。アイテムはプレイヤーが拾い上げ、置いて、他の部屋(鍵など)にアクセスするために使用し、他のアイテムと組み合わせて新しいアイテムを作成できます。 チャレンジ あなたの課題は、テキストアドベンチャーランタイムを最小限のバイト(コードゴルフ)で記述することです。物事を単純にするために、あなたがする必要があるのは、与えられた一連のコマンドが与えられたゲームに勝つかどうかに応じて、真実または偽の値を出力することです(対話性、人間に優しい出力などはありません) ゲームのルール 世界は常に、接続された10の部屋がある廊下で構成されています。各部屋には入室するためのキーが必要ですが、キーなしでいつでも退出することができます(だから、ある種のラッチロックだと思います)。 プレイヤーは部屋0から始まり、部屋9に入れば勝ちます(部屋9に到達すると、別の部屋に行くなど、好きなことを行うことができ、勝ちます)。 各部屋には、任意の数のアイテムを含めることができます。 AZという名前のアイテムは最大26個あり、世界中でアイテムが複数回表示されることはありません。 プレイヤーは、現在の部屋からアイテムを拾ってインベントリに入れることができます(インベントリからアイテムを現在のルームにドロップすることもできます)。 プレーヤーの最大インベントリサイズは有限であり、レベルの詳細が提供されます。 ゲームの開始時には、プレイヤーのインベントリは常に空です。 ルーム内のアイテムの最大数に制限はありません(ただし、アイテムの総数であるため、暗黙的な制限は26になります)。 アイテムAJは、0から9の部屋に入るために使用できるキーです(つまり、プレーヤーはアイテムAがある場合は部屋0に、Bがある場合は部屋1に移動できます。部屋を出るためにキーは必要ありません。プレーヤーは部屋0から始まるため、キー「A」はプレーヤーが戻りたい場合にのみ必要です。部屋0。 プレーヤーのインベントリ内のアイテムを組み合わせて、新しいアイテム(プレーヤーのインベントリ内に作成されます)を作成できます。許可された組み合わせには、レベルの詳細が提供されます。 アイテムを結合すると、元のアイテムが消費されます(つまり、アイテムの1つがキーだった場合、そのキーを使用することはできなくなります)。 プレイヤーが不可能なことをしようとする場合(例えば、現在の部屋にないアイテムを拾う/持っていないアイテムをドロップする/持っていないアイテムを組み合わせる/鍵のない部屋に行くのため)、何も起こらず、継続することができます。 プレイヤーは決して意味のないコマンドを出すことはありません(部屋11に行くなど)。 したがって、単純なゲームは次のようになります。 v +---+---+---+---+---+---+---+---+---+---+ | C | | J | | | | | | | | +---+---+---+---+---+---+---+---+---+---+ | CORRIDOR | +---------------------------------------+ Inventory capacity: 99 部屋0にはアイテム「C」が含まれています(これは部屋2の鍵です)。部屋2にはアイテム「J」が含まれています(これは部屋9の鍵です)。プレイヤーは、Cを拾い、部屋2に移動し、Jを拾い、次に部屋9に移動することでゲームに勝つことができます。 より複雑なゲームは次のとおりです。 v +---+---+---+---+---+---+---+---+---+---+ | C | | X …

14
ウォルステンホルムの定理を検証する
定義 ウォルステンホルムの定理は次のように述べています。 ここで aand bは正の整数でpあり素数であり、大きな括弧は二項係数です。 仕事 それを確認するには、3つの入力を与えられます:a、b、p、どこaおよびb正の整数であり、p素数です。 計算: ここで aand bは正の整数でpあり素数であり、かっこは二項係数です。 スペック 以来: ここで、かっこは二項係数です。 あなたはそれを仮定することができます 2b <= a テストケース a b p output 6 2 5 240360 3 1 13 3697053 7 3 13 37403621741662802118325

5
代数曲線プロッター
代数曲線は{(x,y) in R^2 : f(x,y)=0 }、多項式のゼロのセットとして記述できる「2D平面」の特定の「1Dサブセット」ですf。ここでは、2D平面を実際の平面と見なし、R^2そのような曲線がどのように見えるかを簡単に想像できるようにします。基本的には鉛筆で描くことができます。 例: 0 = x^2 + y^2 -1 半径1の円 0 = x^2 + 2y^2 -1 楕円 0 = xy十字形状、基本的にx軸の組合とy軸 0 = y^2 - x 放物線 0 = y^2 - (x^3 - x + 1)楕円曲線 0 = x^3 + y^3 - 3xy デカルトの葉 0 = x^4 …

6
電力グリッドのリソースコスト
電力グリッドのリソースコスト 前書き ボードゲームPower Gridでは、ゲームの不可欠な部分は、発電所に燃料を供給するためにリソースを購入する行為です。ゲームで使用されるリソースには4つのタイプがあります(再生可能エネルギーを含めると5つですが、明らかにそのためのリソースを購入することはできません)。これらは、石炭、石油、ごみ、およびウランです。リソース市場は次のようになります。 1---- | 2---- | 3---- | 4---- | 5---- | 6---- | 7---- | 8---- | 10 | 12 CCC | CCC | CCC | CCC | CCC | CCC | CCC | CCC | U | U OOO U | OOO U | OOO U …
14 code-golf 

12
インデックスのリストの反転リスト
この StackOverflowの投稿に触発されました。 前書き ボブの仕事は、スプレッドシートを作成して整理することです。彼がそれらを整理する方法は、ボブを除いてほとんど知られていないが、同じグループに属する各スプレッドシートのリストを作成する。彼が作成したスプレッドシートには大量のデータがありますが、現在確認しているデータは1つだけです。このジョブを開始してからスプレッドシートを作成した日までの日数です。初日、彼は2つのスプレッドシートを作成し、両方のメモを書き、0適切な場所に分類しました。 現在、彼の上司は毎日どのような種類のスプレッドシートが発生したかをレビューするよう求めています。ボブにとってそれを把握するコードを書くのはあなたの仕事です。彼はスプレッドシートが多すぎて手作業ではできません。 入力 彼があなたに提供するボブの情報は、各データがの形式である(0または1のインデックス付き)ギザギザの配列の形式で提供されx = a[i][j]ます。 aは、私がジャグ配列自体と呼んでいるものでiあり、スプレッドシートのタイプでありx、配列が作成された日付です。 j重要ではありません。 タスク タイプごとに整理されたスプレッドシート作成日のぎざぎざの配列がある場合、スプレッドシート作成日ごとに整理されたスプレッドシートの種類のぎざぎざの配列を返します。 例 ボブは、この抽象的なデータをただ残すだけではありません。彼は、スプレッドシートの一部のサブセットを提供してくれて、すべてがどうあるべきかを理解するのを助けてくれます。 入力例(0から始まる): a = [ [3,2,5,0], # Bob doesn't necessarily sort his lists [1,3], [2,1,0,4], [4,5,3], [6,6] ] 出力例(コメントはもちろん必須ではありません): output = [ [0,2] # On day 0, Bob made one type 0 and one type 2 …

13
それは最大ヒープですか?
ヒープも優先キューとして知られているが、抽象データ型です。概念的には、すべてのノードの子がノード自体以下であるバイナリツリーです。(最大ヒープと仮定します。)要素がプッシュまたはポップされると、ヒープはそれ自体を再配置し、最大の要素が次にポップされるようにします。ツリーまたは配列として簡単に実装できます。 受け入れを選択した場合の課題は、アレイが有効なヒープかどうかを判断することです。すべての要素の子が要素自体以下の場合、配列はヒープ形式になります。例として次の配列を取り上げます。 [90, 15, 10, 7, 12, 2] 本当に、これは配列の形に配置された二分木です。これは、すべての要素に子があるためです。90には、15と10の2つの子があります。 15, 10, [(90), 7, 12, 2] 15には子もあり、7と12: 7, 12, [90, (15), 10, 2] 10には子供がいます: 2 [90, 15, (10), 7, 12, ] 次の要素も10の子になりますが、スペースがないことを除きます。配列が十分に長ければ、7、12、および2にもすべて子があります。ヒープの別の例を次に示します。 [16, 14, 10, 8, 7, 9, 3, 2, 4, 1] そして、これは前の配列が作るツリーの視覚化です: これが十分に明確でない場合に備えて、i番目の要素の子を取得するための明示的な式を次に示します //0-indexing: child1 = (i * 2) + …

11
私はドルでのみ支払います
タイトルとして-個別にではあるが-ヒントとして、私はドルでのみ支払う。 チャレンジ 入力として文字列をとる関数/プログラムを作成します。これは、記号が前に付いた金額です。ex) £4.99。次に、同じ金額を米ドルに換算して返します。 入力 入力として文字列を取得します。通貨記号の後に小数点以下2桁の数字が続きます(これは可能性があります.00)。数字を区切る小数点.および/またはコンマがあります,。次の通貨記号が入力に含まれます。 ユーロ:€英ポンド:£ 人民元:¥ また、通貨に応じてコンマまたは小数点があり、「ドル」を「セント」から分離します。 ユーロ:#。###、##英ポンド:#、###。## 元人民元:#、###。## 出力 入力を、シンボルで決定された通貨からUSDに変換し、小数点以下2桁に丸めます。出力はの形式$#,###.##になり、必要に応じて出力の左側にさらに数字があります(編集:これは、入力と同様に、出力に任意の数のコンマがあることを意味します)。使用する為替レートは以下のとおりです。 入力には、上記(€ £ ¥ . ,)の1つだけであるシンボルが含まれていると想定できます。これは常に有効です。 為替相場 €1 : $1.10 £1 : $1.37 ¥1 : $0.15 例 Input: €1,37 £4.00 ¥2,782,122.78 Respective output: $1.51 $5.48 $417,318.42 最後の言葉 上記の記号(€、£、¥)のいずれかを使用する場合、1バイトとしてカウントできます。 これはコードゴルフなので、バイト単位の最短コードが勝ちです!
14 code-golf  math  string 

2
チェス盤迷路
チェスの駒(キング、クイーン、ルーク、ビショップ、ナイト)とポーンはボード上にありますが、a1またはh8スクエアにはありません。あなたの仕事は、空のa1から空のh8のマスに移動し、空のマスのみを通過することです。移動の規則は次のとおりです。 空の四角から隣の空の四角(同じランク、次または前のファイル、または同じファイル、次または前のランク)に進むことができます。 あなたは、斜め横に空の正方形(次または前の順位、次または前のファイル)に空の正方形から進むことができ提供猫のようなコーナー正方形は()は、2つのポーン又は反対の(B)ポーン/個のいずれかを含むこと色。(同じ色の2つのポーン以外のピース、またはポーン以外のピースとポーンは、コーナーでの進行を妨げるのに十分な強さですが、2つのポーンはそうではありません。反対の色のピース/ポーンは機能しませんたとえば、c4でd5が空の場合、c5とd4にポーンが含まれているか、反対の色のピース/ポーンが含まれている場合は、続行できます。写真については、以下の「対角線の例」セクションを参照してください。 入力 FENのボードの説明。つまり、入力は、ランク8の説明、スラッシュ(/)、ランク7の説明、スラッシュ、…、およびランク1の説明を含む文字列になります。各ランクの説明は、ファイルaからファイルhまでの数字と文字で構成されます。文字はピースとポーンを示します(黒いものはp= pawn、n= knight、b= bishop、r= rook、q= queen、k= king、およびwhiteです。 1つは同じものの大文字バージョンです)、数字は空の正方形の連続数を示します。たとえば、rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBN1プライ移動後のボード(キングのポーンはe4)チェスゲームで。 入力ではa1とh8は空になります。つまり、最初のスラッシュの前に数字があり、最後のスラッシュの後に数字があります。 出力 真実か偽か。h8への移行が成功したかどうかを示します。 入力が有効なFENボードの説明(つまり、上記の説明と一致するもの)でない場合、またはa1またはh8が使用されている場合、出力は何でもまたは何でもかまいません。(言い換えると、入力が上記の要件を満たしていると仮定できます。) 得点 これはコードゴルフです。最少バイトが勝ちます。 入出力の例 コードは、例だけでなく、すべての有効な入力に対して機能する必要があることに注意してください。 w各FENの後にスペースとaを追加して、で視覚化しhttp://www.dhtmlgoodies.com/scripts/chess-fen/chess-fen-3.htmlます。(他の一部のオンラインFENビジュアライザーは、チェスで違法なボード(ランク1または8のポーンなど)を許可しないため、この目的には使用できないことに注意してください。) 真実の例 8/8/8/8/8/8/8/8 —空のボード 1p1Q4/2p1Q3/2p1Q3/2p1Q3/2p1Q3/2p1Q3/Q1p1Q3/1q3q2—パスa1、b2、b3、b4、b5、b6、b7、c8、d7があります(e8ではなく 、ブロックされていますが)d6、d5、d4、d3、d2、d1、e1、f2、f3、f4、f5、f6、f7、f8、g8、h8 8/8/KKKKK3/K3K3/K1K1p3/Kp1K4/K1KK4/2KK4 —ある時点でブロックされた正方形を後で通過させる必要がある例(正方形を通過不可として設定しないようにするため) K1k1K1K1/1K1k1K1k/K1K1k1K1/1k1K1K1k/K1k1K1k1/1K1k1k1K/K1K1k1K1/1k1k1K1k—単一のパスがあります(鼻をたどるだけです。後方に一歩を踏み出さない限り、各ステップで移動する正方形は1つだけです)。これは、正方形が1つのポイントでブロックされているが、後で必要になる例でもあります 偽の例 6Q1/5N2/4Q3/3N4/2Q5/1N6/2Q5/1N6 —パスへの試みは、斜めに位置する2つの同じ色の部分を通過する必要があります。 N1q1K1P1/1R1b1p1n/r1B1B1Q1/1p1Q1p1b/B1P1R1N1/1B1P1Q1R/k1k1K1q1/1K1R1P1r— a8-h1の対角線を通る唯一の方法はf2-g3ですが、それは両方とも不可能なe1-d2またはf2-e3を通る必要があります。 4Q3/4q3/4Q3/5Q2/6Q1/3QqP2/2Q5/1Q6 4q3/4Q3/4q3/5q2/6q1/3qQp2/2q5/1q6 対角線の例 上記の散文が不明瞭な場合のために、ここにいくつかの写真があります。 通行可能対角線 通過できない対角線
14 code-golf  chess  maze 

19
連続した文字の実行をnの長さに切り捨てます
チャレンジ 入力文字列と整数nを指定すると、連続する文字の実行を最大長nまで切り捨てます。文字は、特殊文字を含め、何でもかまいません。関数は大文字と小文字を区別する必要があり、nの範囲は0から無限です。 入力/出力の例: f("aaaaaaabbbccCCCcc", 2) //"aabbccCCcc" f("aaabbbc", 1) //"abc" f("abcdefg", 0) //"" f("aaaaaaabccccccccCCCCCC@", 4) //"aaaabccccCCCC@" 得点 スコアリングは、使用されるバイト数に基づいています。かくして function f(s,n){return s.replace(new RegExp("(.)\\1{"+n+",}","g"),function(x){return x.substr(0, n);});} 104ポイントになります。 ハッピーゴルフ! 編集:言語の制限を削除しましたが、私はまだJavaScriptの回答を見たいです
14 code-golf  string 

21
ゴルフビット織り
注:この課題の前半は、Martin Enderの前の課題であるVisualize Bit Weavingから来ています。 難解なプログラミング言語の悪には、「織り」と呼ばれるバイト値に対する興味深い操作があります。 基本的には、バイトの8ビットの順列です(パターンが対称であるため、どちらの端からカウントを開始してもかまいません)。 ビット0はビット2に移動します ビット1はビット0に移動します ビット2はビット4に移動します ビット3はビット1に移動します ビット4はビット6に移動します ビット5はビット3に移動します ビット6はビット7に移動します ビット7はビット5に移動します 便宜上、置換のその他の3つの表現を示します。サイクルとして: (02467531) マッピングとして: 57361402 -> 76543210 -> 64725031 そして、マッピングのペアのリストとして: [[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]] 8織った後、バイトは本質的にリセットされます。 例えば、数織り10011101(ある157ベース10に)を生成します01110110(これは118ベース10に)。 入力 唯一存在する256、すなわち有効な入力は、すべての整数間0と255包括的に。これはどのベースでも使用できますが、一貫している必要があり、選択したベースがベース10でない場合は指定する必要があります。 入力をゼロで埋めることはできません。 出力 ビットウィービングの結果を任意のベースで出力する必要がありますが、これもベース10でない場合は一貫性があり、指定する必要があります。 出力をゼロで埋めることができます。 関連:ビットウィービングの視覚化

9
最も近い7-Distinct-Prime製品
(チャット経由) OEISエントリA123321には、7つの異なる素数の積である一連の数字がリストされています。簡潔にするために、これを7DP番号と呼びます。最初のいくつかの数字とそれに対応する除数は以下のとおりです。 510510 = 2 * 3 * 5 * 7 * 11 * 13 * 17 570570 = 2 * 3 * 5 * 7 * 11 * 13 * 19 690690 = 2 * 3 * 5 * 7 * 11 * 13 * 23 746130 = 2 …

11
バイナリ時間は何ですか?
バイナリ時間は何ですか? 誰もが通常時が何であるかを知っています。画面の右上(またはどこに置いても)にあります。しかし、人々がめったに自問しない質問はこれです。バイナリ時間は何ですか? バイナリ時間 バイナリ時間(True Binary Time)は、最初に数値の最上位ビット(MSB)を読み取ることで機能します。その数がの場合、0表現される時間は正午までです。その数がの場合、1表現される時間は正午以降です。次のビットは、1日の半分を、最初のビットがさらに2つの等しい半分に分割します。今回は6時間です。次のビットは3時間、次の90分などに分割されます。のような時代は12:00:00、どちらでもないはずのようになり1ます。 私はこの奇妙なタイミングのシステムしか理解できないので、私のためにそれに変換するプログラムが必要です。ただし、2進数は2進数であり、2は小さい数なので、プログラムはできるだけ短くする必要があります。 必要条件 プログラムは、入力(24時間制)として時間を取り、対応するバイナリの時間数を出力する必要があります。 出力番号は16ビット精度である必要があります(番号は16桁である必要があります)。 すべての変換を行うビルトインを使用することはできません。 丸くする必要がある場合は床を張る必要があります。 ルール 標準的な抜け穴は禁止されています。 プログラムはに何も書き込まないでくださいSTDERR。 テストケース 00:00:00==> 0000000000000000 12:00:00==> 1000000000000000 01:30:00==> 0001000000000000 10:33:06==> 0111000010001101 09:57:30==> 0110101000111000 06:00:00==> 0100000000000000 18:00:00==>1100000000000000 得点 先に述べたように、勝つためには最小バイト数が必要です。 提出 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes N提出のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 # Perl, 43 + …

11
出現回数でソートされたカラーカウント
これは説明するのが簡単で、これは以前はゴルフではなかったとは信じられませんでした。 特定の画像(言語でサポートされている形式)に対して、一意の色を見つけて、色のリストを出力します。 カラーコードを16進数のRGBで印刷します。これは、ハッシュ記号の#後にRに2桁、Gに2桁、Bに2桁が続きます(#xxxxxxxは0〜9、AFおよびafのいずれかです)。 16進コードの後に​​は、スペースと10進数のピクセルカウント、改行(\nまたは\r\n)が続きます。 リストは、カウントの降順(最上部の最も頻繁な色)でソートされます。 同点の場合(同量の2色)、順序は重要ではありません。 画像には透明度が含まれないため、アルファ値は重要ではありません。アルファ値は出力の一部ではない場合があります。 4000x3000の画像サイズをサポートする必要があります(タイプ定義に関係する場合があります) サンプル画像「10red 20blue 30black 40white」: 期待される出力: #FFFFFF 40 #000000 30 #0000FF 20 #FF0000 10 サンプル画像「青のグラデーション」: 期待される出力の1つ(同じ色の順序は異なる場合があるため): #718DFF 19 #5571FF 15 #3855FF 11 #8DAAFF 11 #1C38FF 7 #AAAAFF 7 #8D8DFF 6 #AAC6FF 6 #C6C6FF 5 #C6E2FF 4 #001CFF 3 #E2E2FF 3 #FFFFFF 3 @Luis …

9
CRC32ハッシュの計算
クレジット このチャレンジは@milesから始まりました。 入力文字列のCRC32ハッシュを計算する関数を作成します。入力は、任意の長さのASCII文字列です。出力は、その入力文字列のCRC32ハッシュになります。 説明 CRC32と他のCRCのアルゴリズムは基本的に同じであるため、ここではCRC3のみを示します。 まず、生成多項式があります。これは実際には4ビットの[n + 1]整数です(CRC32では33ビットになります)。 この例では、生成多項式は1101です。 次に、ハッシュされる文字列があります00010010111100101011001101。この例ではになります。 00010010111100101011001101|000 (1) append three [n] "0"s 1101 (2) align with highest bit 00001000111100101011001101|000 (3) XOR (1) and (2) 1101 (4) align with highest bit 00000101111100101011001101|000 (5) XOR (3) and (4) 1101 (6) align with highest bit 00000011011100101011001101|000 (7) XOR (5) …

16
配列内の最小グループ
前書き 次の配列を見てみましょう。 [1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1] グループは、互いに隣接して同じ桁で構成されています。上記の配列には、5つの異なるグループがあります。 [1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1] 1, 1, 1 2, 2 1, 1, 1, 1 2, 2, 2 1, 1, 1 これらの最小グループはです[2, 2]ので、出力します[2, …

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