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

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

3
文字列を一意に保ちながら文字を削除する
私の謙虚な意見では、答えが少なすぎるというこの素晴らしい(意見と投票数に基づく)チャレンジに触発されました。 文字列のリストを(何らかの方法で)与えられ、与えられた文字列から削除されたときに、文字列の合計の長さ(残っているもの)を可能な限り小さくしながら、文字列のセットを(何らかの方法で)返します一意の文字列と少なくとも1文字の長さ。 例: 「日」と「日」を指定します。文字「ay」が削除されると、指定された文字列は「D」と「d」になるため、「ay」を返します。 「Hello World!」、「Hello world。」、および「Hello world」を指定します。文字 "Helo Wrd"(スペースを含む)が削除されると、文字列が "!"、 "w。"、および "w"になるため、 "Helo Wrd"が返されます。 「世紀」、「10年」、「年」、「月」、「週」、「日」、「時間」、「分」、および「秒」を指定します。文字「centurdowi」の場合、指定された単語は「y」、「a」、「ya」、「mh」、「k」、「ay」、「h」、「m」、「s」になるため、「centurdowi」 」が削除されます。 返されるセットの順序と形式は重要ではありません。

2
Befunge Brain Teasers
前書き Befungeとは一体何なのか疑問に思う人にとっては、1993年にChris Pressyによって作成された2次元スタックベースの言語です。Befunge-93で解決する必要がある7つの頭の体操を作りました。これは非常に実験的な挑戦ですが、一見の価値があると思いました:)。Befunge-93で使用されるすべてのコマンドの完全なリストは、ここにあります。 遊び方? タスクは、警官のいない警官と強盗のようなものです。基本的にポイントを獲得するために提出物をクラックしているだけです。すべてのパズルには疑問符が含まれています。これら32 - 127は、空白を含む範囲内の印刷可能なASCII文字に置き換える必要があります。次の例を参照してください。 ??????@ 出力はでなければならないということhiです。いくつかの不可解な後、解決策があったことがわかります。 "ih",,@ だが!あなたは解決策を与えません。それは不正行為の防止のためです。ソリューションを投稿するのではなく、ハッシュを投稿します。ハッシュは次のスニペットで生成されます: String.prototype.hashCode = function() { var namevalue = document.getElementById("inputname").value; var namenumber = 123;for (var character = 0; character < namevalue.length; character++) {namenumber += namevalue.substring(0, 1).charCodeAt(0);}var hash = 123 + namenumber, i, chr, len;if (this.length === 0) {return 0;}for (i = …

2
配列をシャッフル解除できますか?
バックグラウンド 非常に熟練したカードハンドラーは、デッキを完全に半分にカットしてから、カードを完全にインターリーブする技術を使用できます。並べ替えられたデッキから始めて、この手法を52回連続して完璧に実行すると、デッキは並べ替えられた順序に復元されます。あなたの挑戦は、カードのデッキに整数配列を取り、ファロシャッフルのみを使用してソートできるかどうかを判断することです。 定義 数学的には、ファロシャッフルは、任意の正の整数nに対する2 n個の要素の順列であり、位置i(1からインデックス付け)の要素を位置2 i(mod 2 n +1)に置き換えます。また、奇数長のリストを処理できるようにしたいので、その場合、リストの最後に1つの要素を追加し(便利な場合はジョーカー)、上記のようにFaroは新しいリストをシャッフルしますが、無視しますリストの順序をチェックするときに追加されたダミー要素。 ゴール 整数のリストを取得し、いくつかのファロシャッフルによりそのリストが非降順でソートされる場合(その数がゼロであっても、小さなリストが真実を示す必要がある場合)、真実を返すか出力するプログラムまたは関数を記述します。それ以外の場合は、偽物を返すか出力します。 例 [1,1,2,3,5,8,13,21] => True [5,1,8,1,13,2,21,3] => True [9,36,5,34,2,10,1] => True [1,0] => True [0] => True [] => True [3,2,1] => True [3,1,2] => False [9,8,7,6,5,4,3,2,1,0] => True [9,8,7,6,5,4,3,2,0,1] => False [3,1,4,1,5,9,2,6,9] => False [-1,-1,-1,-2] => True 得点 これはコードゴルフなので、バイト単位での最短ソースが優先されます。

12
五角形の数字から作られた五角形の数字
前書き 五角数(A000326は)式によって生成されたP N = 0.5×(3N 2 -n) 。または、使用されたドットの量を数えるだけです: 式または上記のgifを使用して、最初のいくつかの五角形の数字を見つけることができます。 1, 5, 12, 22, 35, 51, 70, 92, 117, 145, 176, 210, 247, 287, 330, 376, 425, 477, etc... 次に、x個の連続した数字の合計を計算する必要があります。 たとえば、x = 4の場合、P n + P n + 1 + P n + 2 + P n + 3(4つの用語で構成される)を調べる必要があります。五角形の数の合計も五角形の数である場合、これを五角形の五角形の数と呼びます。 ためX = …

8
正確にnになる合計数の最小数
ここでの最初の質問は、これが重複するのか悪い挑戦なのかを私に怒鳴らないでください。 前書き 私はこの挑戦を自分で考えましたが、初心者のコード愛好家には良い基本的なパズルのようです。また、学習するコードゴルフ言語を決定するのに役立つかもしれません。 チャレンジ 以下の整数の配列が与えられた場合、n正確に合計する配列からの最小数の数値を出力または返しnます。 関数を書くか、完全なプログラムを書くかを選択できます。 入力 あなたは安全に仮定することができ0 <= n < 2^31ます。 任意の種類の配列またはリスト(vectorC ++またはJava LinkedListが許可されている場合)と、配列の長さを指定nするオプションのパラメーターを取りますlength。 入力はn、コンマまたはスペースで区切られたスペースで区切られた文字列として受け取ることもできます。 1 5 7 3 7 3 6 3 2 6 3,10 1 5 7 3 7 3 6 3 2 6 3 10 それが簡単な場合。 出力 出力するか、正確に合計する配列の最小数を返しnます。上記の例を使用します。 1 5 7 3 7 3 6 3 …

11
和のセットを見つける
このサイトを読んで楽しんできました。これが私の最初の質問です。編集は大歓迎です。 正の整数を考えると、NとMのすべての注文のパーティション計算メートルを正確にn個の部品の正の整数部分、およびそれらを印刷には、カンマと改行で区切られました。どの順序でも構いませんが、各パーティションは1回だけ表示される必要があります。 たとえば、m = 6およびn = 2の場合、可能なパーティションは正の整数のペアであり、合計は6になります。 1,5 2,4 3,3 4,2 5,1 [1,5]と[5,1]は異なる順序のパーティションであることに注意してください。出力は正確に上記の形式で、オプションの末尾の改行が必要です。(編集:パーティションの正確な順序は関係ありません)。入力/出力を介している標準コード-ゴルフI / O。 m = 7、n = 3の別の出力例: 1,1,5 1,2,4 2,1,4 1,3,3 2,2,3 3,1,3 1,4,2 2,3,2 3,2,2 4,1,2 1,5,1 2,4,1 3,3,1 4,2,1 5,1,1 1週間後のバイト単位の最小コードが勝ちます。 繰り返しますが、必要に応じて編集してください。 補遺: @TimmyDは、プログラムがサポートする整数入力のサイズを尋ねました。例以外にハードミニマムはありません。実際、出力サイズは指数関数的に増加し、おおよそ次のようにモデル化されます:lines = e ^(0.6282 n-1.8273)。 n | m | lines of output …

7
非同期の囚人のジレンマゲームを記録する
囚人のジレンマエクササイズのラウンドでは、2人のプレイヤーがそれぞれ、そのラウンドに協力するか、または敗走するかを決定します。ラウンドの得点は次のとおりです。 プレーヤーAとプレーヤーBの両方が協力:両方に対して1ポイント プレーヤーAとプレーヤーBの両方の欠陥:両方とも2ポイント プレイヤAの協働とプレイヤB不良:3点プレイヤーAの協働および0点プレイヤーBを逃走するための ただし、戦略について心配する必要はありません。プログラムは単にゲームのスコアを集計するだけです。(あなたがすでに囚人のジレンマに精通している場合、ここでの私の「ポイント」は「刑務所での年」に対応します。) あなたの課題は、数ラウンドにわたるプレイヤーの選択を表す入力を取得し、それぞれの合計スコアを計算することです。一人のプレイヤーの提出小文字での選択肢、cおよびd(のための協力や欠陥)、およびその他の提出の選択肢大文字で、CとD。これらの選択肢は文字列としてプログラムに提供されます。 通常、囚人のジレンマに陥っているプレイヤーは、動きを同時に、繰り返し送信します。ただし、このチャレンジでは、プレーヤーは一度に複数のラウンドの選択肢を提出した可能性があります。プレーヤーの動きが順不同の場合、スコアリングプログラムはそれを記憶し、それを相手プレーヤーから次に利用可能な動きと照合します。 入力文字列のサンプルは次のとおりです。 cDCddDDCcCc この入力に存在する一致を表示するには、小文字と大文字を別々に呼び出して、それらをペアにします。 cDCddDDCcCc c dd c c => cddcc DC DDC C => DCDDCC これらはラウンドにペアリングされます: c vs D (3 pts for lowercase-player, 0 pts for uppercase-player) d vs C (0 pts for lowercase-player, 3 pts for uppercase-player) d vs D (2 pts …
15 code-golf 

20
すでに短い数式を短くする
かつて、私はいくつかの実際の作業を行い、古いコードを更新し、古き良き時代の数学でπx+ e xとして書かれたものと同等の式にぶつかりました。私が使用している言語(APL)で書かれているよりも短く書くことが可能であると思ったため、この非常に簡単な課題を提示します。 (任意の手段によって)は、(任意の手段によって)、ゼロ以上の数字、およびリターンを受け入れることについての上記式の結果を関数またはプログラムを書くX = 所与の数値の各各結果のために少なくとも3桁の有効数字を有します。 言語にπやeがない場合は、値3.142および2.718を使用します。 スコアリングはバイト数であるため、答えの先頭にを付け# LanguageName, 00 bytesます。 標準のループ穴は許可されていません。 編集:今、私が思いついた解決策は、○+*、発見されました。元のコードは(○x)+*xです。
15 code-golf  math  number  pi 

3
時間の管理を手伝ってください
私は最近、新年までに物理教科書全体を読むように言われました(残念ながら実話)。毎日どの章を読むべきかを決めるのにあなたの助けが必要です。ここがあなたの出番です。 入力 任意の形式の2つの日付。2番目の日付は常に最初の日付より後です。 章番号のリスト。このコンマ区切りリストには、単一の章(12)または包括的範囲(1-3)を含めることができます。例 1-3,5,6,10-13。 Monday -> Moスケジュールから除外する曜日のリスト(名前の最初の2文字で表されます)。例 Mo,Tu,Fr。 出力 出力は、改行で区切られた日付と章番号のリストになります(以下の形式を参照)。支部は、指定された平日を除き、範囲内のすべての日に均等に分散する必要があります。チャプターが均等に分配されない場合は、期間の終わりにチャプターの量が少ない日があるようにします。出力の日付は、入力とは異なる形式にすることができます。チャプターがない日は省略できますが、単にチャプターがない場合もあります。 例: 入力: 9/17/2015 9/27/2015 1-15 Tu 出力: 9/17/2015: 1 2 9/18/2015: 3 4 9/19/2015: 5 6 9/20/2015: 7 8 9/21/2015: 9 10 9/23/2015: 11 9/24/2015: 12 9/25/2015: 13 9/26/2015: 14 9/27/2015: 15

3
ハイフネーションを削除します
新しいタイポグラフィの挑戦の時間です!さまざまなドキュメント形式間でコピーアンドペーストするときの一般的な問題:ハイフネーション 左揃えのレイアウトの不揃いや、正当なレイアウトの均等な間隔を減らしますが、PDFが適切に構築されず、レイアウト内にハイフンが保持されると、コピーしたテキストの編集やリフローが難しくなります。 幸いなことに、数え切れないほどのセルフヘルプの本を信じるなら、それを挑戦と見なしても何も問題はありません。これらの自助の本は例外なくPPCGに言及していると思います。PPCGでは、課題として提示された場合に問題が解決されます。あなたの仕事は、テキストから問題のあるハイフネーションと改行を削除して、テキストエディタに貼り付ける準備ができるようにすることです。 問題の説明 必要に応じて、ハイフネーションと改行を削除するプログラムまたは関数を作成します。入力は、上で文字列になりますstdin(または最も近い代替)または関数の入力として。出力(上stdoutまたは一番近い代替または関数の出力)は、テキストを「修正」されます。このテキストは、直接コピーアンドペーストできる必要があります。つまり、先頭または末尾の出力は問題ありませんが、修正されたテキストの途中の追加出力(たとえば、各行の先頭のスペース)はそうではありません。 最も基本的なケースは次のとおりです(注:末尾のスペースはありません) Lorem ipsum dolor sit amet, con- sectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus. 問題のハイフンと改行は、取得するために削除する必要があります Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus. ただし、いくつかの例外があります。 二重改行は段落区切りを示し、保持する必要があります。 適切な名詞と名前は、既にハイフンが含まれている場合を除き、2行に分かれることはありません(例:Navier-Stokes方程式)。改行を削除する必要がありますが、ハイフンは保持されます。これらのケースは、最初の文字のみを大文字にすることで識別できます。 場合によっては、ハイフンは単語グループを示します(たとえば、19世紀および20世紀)。これが2行にわたって発生する場合、次の行の先頭スペースで示されます。 例:(この例で表現されている見解は架空のものであり、必ずしも著者の見解を表しているわけではありません。ルンゲクッタフェルバーグ法の反対者もこの課題に参加することを歓迎します) Differential equations can be solved with the Runge-Kutta- Fehlberg …

16
単純なタスクを3回解決
1つの言語で3つのプログラムや関数を作成する必要があります。 これらのプログラムはすべて同じタスクを解決する必要がありますが、すべて異なる(ただし有効な)出力を提供する必要があります。(つまり、プログラムのすべてのペアに対して、異なる(しかし有効な)出力番号のセットを生成する入力が必要です。) タスク n1より大きい整数が与えられます n 別個の正の整数を返すか出力する必要があり、それらのいずれもで割り切れないようにする必要がありますn。 数字の順序は重要ではなく、数字の順列は異なる出力としてカウントされません。 いくつかのinput => outputペアを持つプログラムの有効なトリプレット: program A: 2 => 5 9 4 => 5 6 9 10 5 => 2 4 8 7 1 program B: 2 => 1 11 4 => 6 9 1 2 5 => 4 44 444 4444 44444 program C …

18
化学のクラスに戻る
前書き 化学で最初に学んだことの1つは、アルカンの燃焼式を与えることでした。最も基本的な例は次のとおり2CH4 + 4O2 > 4H2O + 2CO2です。すべての係数を2で除算することにより、方程式を簡略化できたことに注意してください CH4 + 2O2 > 2H2O + CO2。物事を簡単にするために、このステップを無視します。 アルカンを燃焼させると、酸素が使用されることがわかります。反応後、CO2とH2Oのみが生成されます。 タスク: STDINまたは最も近い同等物からの入力を受け取り、STDOUTまたは最も近い同等物を使用して反応全体を出力する完全なプログラムを提供します。 入力は、常にの形式C(n)H(2n+2)になりn > 0ます。これらはいくつかの入力例です: CH4 C2H6 C3H8 C4H10 C5H12 C6H14 etc. 役に立つヒント: すべてのアルカンには、燃焼反応の標準パターンがあります。 2C(n)H(2n+2) + (3n+1)O2 > (2n+2)H2O + (2n)CO2 例えば C4H10次の方程式が得られます2C(4)H(2*4+2) + (3*4+1)O2 > (2*4+2)H2O + (2*4)CO2。すべてを計算した後、次の最終式が得られます。2C4H10 + 13O2 > 10H2O + …

2
三角形の球面過剰
三角形の球面過剰 ご存知のように、平面三角形の角度の合計は180度に等しくなります。 ただし、球面三角形の場合、角度の合計は常に180度より大きくなります。球面三角形の角度の合計と180度の差は球面過剰と呼ばれます。タスクは、与えられた頂点座標で三角形の球面過剰を計算することです。 いくつかの背景 球面三角形は、球の3つの大円で定義される球の一部です。 球面三角形の両側と角度は、角度測定の用語で測定されます。これは、各側面が球体と球体の中心にある頂点との平面角度の交点と見なすことができるためです。 3つの異なる大円はそれぞれ8つの三角形を定義しますが、 適切な三角形考慮します。角度と側面の測定値が満たされる三角形 地理座標系の観点から三角形の頂点を定義すると便利です。両端の経度λと緯度Φが与えられた場合、球の弧の長さを計算するには、次の式を使用できます。 、 どこ またはより明示的に: (ソース:https : //en.wikipedia.org/wiki/Haversine_formula) 球面三角形を解くために使用できる2つの基本式は次のとおりです。 余弦の法則: サインの法則: (ソース: https //en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules) 3つの側面がある場合、コサインルールを使用して角度を簡単に計算できます。 最後に、三角形の球面過剰が定義されます。 三角形の球体過剰とその面積との関係について興味深いのは: 単位球では、三角形の過剰はその三角形の面積に等しくなります! タスク 三角形の頂点座標を指定して、三角形の球面過剰を角度で計算する関数またはプログラムを作成します。頂点座標は、地理座標系で提供されます。 各頂点はで渡す必要があります[latitude in degrees][N|S][longitude in degrees][E|W]。経度、EまたはW緯度が90の場合はスキップできます。 90N、90S、10N100E、30S20W一方で、適切な頂点記述されている80Nか55Sではありません。 テストケースでは、緯度と経度は常に整数です。 エラーが1度未満の回答は受け入れられます(以下の例のように)。したがって、結果は実数または整数の両方としてレンダリングできます。 例 入力 90N0E 0N0E 0N90E 出力 89.999989 入力 90N 0N0E 0N90E 出力 89.999989 入力 0N0E …

3
次元分析
SI単位の積または比率を計算します。 たとえば、kg m / s s(キログラム/秒の平方)はN(ニュートン)を返す必要があります。 入力は常に次のいずれかです。 スペースで区切られた(製品を表す)SIユニットのシンボルのリストまたは 上記、/および上記(比率を表す)。 入力に他の文字(数値リテラルやその他の句読点など)が含まれることはありません。 これは常に単一のSIユニットに等しいと仮定できます。 次の記号を使用します。 Base quantities: s # second m # meter kg # kilogram A # ampere Derived quantities: N = kg m / s s # newton J = N m # joule W = J / s # watt …

9
キーパッドの主題について
Keep Talking and Nobody Explodesは、1人のプレイヤーが仮想の「爆弾」を制御できるローカルマルチプレイヤーゲームであり、別のプレイヤー、「爆弾除去マニュアルにアクセスできる」「エキスパート」に導かれなければなりません。ゲームで武装解除するモジュールの1つはキーパッドモジュールです。これは、この課題で対処するものです。 タスク 入力は、スペース(0x21〜0x7E)を除く印刷可能なASCII文字の1行で始まります。これらは、目に見えるキーパッドボタンを表します。 次の数行は「キー」を表します。最初の行のすべての文字が含まれるのは1行だけであり、必ずしも順序どおりではありません。タスクは、キーパッドの文字を一致するキー行の順に出力することです。 たとえば、入力が 5~Fy HrD7K!#} Ui%^fHnF )Tf;y~I5 ~Fi(&5gy ,'Xd#5fZ その後、キーパッドのボタンがあり5、~、Fとy。4番目のキー行のみ~Fi(&5gyにこれらの文字がすべて含まれているため、キーパッド文字を表示順に出力します~F5y。 規則と説明 入力は、キーパッドボタンとキー行が別々の行にある単一の複数行文字列でなければなりません。 すべてのキーパッド文字を含むキー行が1行だけあります。 すべての行、つまり最初のキーパッド行とそれに続くキー行には、重複する文字はありません。 ゲームとは異なり、キーパッドの文字数、各キー行の長さ、またはキー行の数については何も想定できません。ただし、すべてのキー行は同じ長さであることが保証されています。 出力には、単一のオプションの末尾の改行が含まれる場合があります。同様に、入力のオプションの末尾の改行についてはどちらの方法でも想定できますが、前提が必要な場合は回答で指定してください。 これはすでに一般的な慣行のようですが、STDOUT出力が正しい限り(エラーが出力の選択形式である場合)、この課題に対してエラーで終了してもかまいません。これにより、入力の処理が簡単になることを願っています。 テストケース 7 4?j01C3"ch KP.OG>QB)[ z#)Kn"I2&. ]#,D|sBFy5 Qzj*+~7DLP 出力: 7。最後の行のみに7。 0b~ Ob+hy{M|?;>=dtszPAR5 *8rCfsw|3O9.7Yv^x>Hq $ip.V@n}|La:TbIt^AOF jZ[Ec4s0|%b*$id',~J6 z*#b}-x$Ua&!O2;['T+? NVj_X8rlhxfnS\.z}];c bykscf.w^dnWj+}-*2g_ VP`AJH|&j5Yqmw/"9IMc 出力:0b~。4番目のキー行には、すでに正しい順序で文字が含まれています。 MTuz bIAr>1ZUK`s9c[tyO]~W oMGIi/H&V"BeNLua%El= j*uYbplT:~);BM|_mPZt Q}z5TC@=6pgr<[&uJnM% YOA(F~_nH6T{%B7[\u#5 y&t"8zQn{wo5[Idu4g:? [0tZG"-fm!]/|nqk,_2h …
15 code-golf  string 

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