プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

17
レイヤードケーキを印刷する
チャレンジ input nを指定すると、ASCIIアートケーキnレイヤーを横から見た高さで印刷し、上に2本のろうそくを載せます。詳細については、以下の例を参照してください。 出力 >> cake(1) _|_|_ | | +-----+ >> cake(3) _|_|_ | | +---------+ | | +-------------+ | | +-------------+ ...等々。 ルール 禁止されている標準的な抜け穴 賢い解決策を試みてください これはcode-golfであるため、バイト単位の最短回答が優先されます。ただし、答えは選択されません。 楽しんで!

9
ゴルフABCのコード:ASCIIボックスチャレンジ
2つの正の整数 'a'および 'b'を指定すると、幅がa文字、高さがb文字のASCIIアート「ボックス」が出力されます。たとえば、「4」と「6」の場合: **** * * * * * * * * **** 簡単でしょう?ここにひねりがあります:ボックスの境界線は、交互に「a」と「b」の文字でなければなりません。これは左上隅から始まり、時計回りのスパイラルで続きます。たとえば、4と6の前の例は次のようになります。 4646 6 4 4 6 6 4 4 6 6464 AとB は 2桁の数字です。たとえば、入力「10」および「3」はこれを出力する必要があります。 1031031031 1 0 3013013013 出力を比較的小さく保つために、3桁以上の数字をサポートする必要はありません。また、入力は正の整数に制限されているため、「0」は無効な入力であり、処理する必要はありません。 以下に、さらにいくつかのテストケースを示します。 Input: (3, 5) Output: 353 5 5 3 3 5 5 353 Input: (1, 1) Output: 1 …

14
ピギーバックシーケンス
私は最近自分のシーケンスを作成し(ピギーバックシーケンスと呼ばれます)、次のように動作します。 P(1)、P(2)およびP(3)= 1。 すべてのP(n)where n>3について、シーケンスは次のように機能します。 P(n) = P(n-3) + P(n-2)/P(n-1) したがって、シーケンスを続行します。 P(4)= 1 + 1/1=2 P(5)= 1 + 1/2= 3/2 =1.5 P(6)= 1 + 2/(3/2)= 7/3 =2.33333... P(7)= 2 + (3/2)/(7/3)= 37/14=2.6428571428... P(8)= 3/2 + (7/3)/(37/14)= 529/222 =2.3828828828... あなたのタスクは、与えられたとき、浮動小数点数または(im)適切な分数としてn計算しP(n)ます。 これはcode-golfなので、バイト単位の最短コードが優先されます。 誰かがシーケンスの名前を見つけられる場合は、それに応じて投稿を編集してください。 現在のリーダー:MATLおよびJelly(両方とも15バイト)。
14 code-golf  math 

12
Linusシーケンスを生成
定義 OEIS A006345の説明から: 見つけるa(n)には、1またはのいずれかを検討してください2。それぞれについて、最も長い繰り返しの接尾辞を見つけます。つまり、それぞれについてa(n)=1,2、sシーケンスがでa(1),...,a(n)終わるプロパティを持つ最も長いシーケンスを見つけますss。そのような接尾辞が短くなる数字を使用します。a(1) = 1。 完成した例 a(1)=1。 の場合a(2)=1、1 1最後から2倍になった部分文字列が最も長いシーケンスになり1ます。場合はa(2)=2代わりに、それは空のストリングになります。したがってa(2)=2。 ときn=6、我々は、のいずれかを選択1 2 1 1 2 1して1 2 1 1 2 2。最初の選択肢で1 2 1は、末尾から連続して2倍になります。2番目の選択肢では、2代わりになります。したがって、a(6)=2。 ときn=9、我々は、のいずれかを選択1 2 1 1 2 2 1 2 1 して1 2 1 1 2 2 1 2 2。最初の選択肢では、最長の2倍連続部分文字列はですが2 1、2番目の選択肢で1 2 2は、最後に連続して2倍になります。したがってa(9)=1。 仕事 与えられたn、戻りa(n)ます。 スペック n ポジティブになります。 1インデックスの代わりに0インデックスを使用できます。その場合は、回答にその旨を明記してください。また、その場合、nすること0もできます。 …

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 …

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