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

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

9
Soundex関数
大文字のA〜Zのみを含む姓のAmerican Soundexコードを生成する最短の関数を記述します。関数は、リンクされたページのすべての例(下記を参照)と一致する出力を生成する必要がありますが、プレフィックスを削除する必要はなく、削除するべきではありません。出力のハイフンはオプションです。楽しんで! 注: PHPに含まれている関数または他のプログラミング言語の同等の関数は使用できませんsoundex()。 例: WASHINGTON W-252 LEE L-000 GUTIERREZ G-362 PFISTER P-236 JACKSON J-250 TYMCZAK T-522 VANDEUSEN V-532 ASHCRAFT A-261
13 code-golf  string 

4
ピンインの組み合わせ
引数としてピンイン音節の文字列を取り、組み合わせが存在する場合はtrue、そうでない場合はfalseを返す関数を作成します。 「ü」には「v」を使用します。 以下に組み合わせの完全なリストを示します。 http://www.pinyin.info/rules/initials_finals.html 例 f("bu") == true f("zheng") == true f("nv") == true f("ri") == true f("cei") == false f("ia") == false f("kian") == false f("qa") == false 文字数を減らすためにWebページをスクレイピングしたり、インプットメソッドファイルを読み込んだりしないでください。(その場合、データの長さは文字数にカウントされます)このコードゴルフの目的の1つは、ルールを単純化する方法を確認することです。最短のコードが優先されます。

2
BlackJack KOTHコンテスト
ブラックジャック 元のKOTHチャレンジに取り組んでいたので、別のチャレンジを思いつきました。私にとって、これらのAIチャレンジの楽しみは、非常にシンプルなゲームを微妙にプレイする比較的シンプルなボットを改良することです。カードゲームの確率的性質のため、ブラックジャックはTPDと同様に興味深いKOTHゲームになる可能性があると思います。 すべてのルールは、このウェブサイトのBlackJack with shoesの説明に基づいています カードとデッキに関する規則 ボットは4人の競技者と1人のディーラーのテーブルでプレーします 1つの靴(シャッフルデッキ)は、すべてのプレイヤーとディーラーによって共有されます使い果たされるまで、その時点で新しいランダムにシャッフルされたデッキが追加され、プレイが続行されます。ボットは(この時点では)この新しいデッキの追加について通知されません。この機能の欠如が十分な苦痛/トラブルを引き起こす場合、そのような通知は追加されるかもしれません。 ラウンドごとに10のバイインがあり、カードは無料です パーフェクト/理想的なハンドのスコアは21です すべてのフェイスカードの値は10です すべての数字カードはその価値があります エースは11または1の価値があります。これは、ボットではなくフレームワークによって自動的に処理されます。 あたりとしてのルール、すべてのプレイヤーのカードがフェイスアップを配らと表示されています。ディーラーのカードの1つは裏向きで、もう1つは表向きです。 得点 エースを11として使用する21を超えるスコアは、エースの値を1に強制的に下げます。 21を超えるスコアは、ボットを「バスト」する21のしきい値より下に強制することはできません。 ディーラー ディーラーは彼がバストするまで引きます、または17 点を超えた時点で、彼は立つことを強制されます ベットとチップ 各ラウンドの開始時に、バイイン10のは、そう、最低があり、充電されている株式 10のは、最小賭け 1のNOTE -賭けは賭けの引数の絶対値であるので、気にしないでください負の賭けをしようとしています。 バイインを買う余裕のないボットはコンテストから除外されます 賭けをするとき、ボットは持っているチップよりも多く賭けることはできません 賭けが可能であれば、賭けたチップはボットから即座に取り除かれ、賭け金に追加されます ベットに勝つと、ボットに2xチップがベットされます。ただし、ボットのチップからベットが差し引かれるため、ボットは偶数になり、ベットの1倍になります。 ボットはディーラーのスコアよりもスコアが大きい場合にのみベットに勝ちます ゲームプレイ内訳 片手 ゲームが開始されると、各プレーヤーは1枚のカードを繰り返し配られ、チップから10ドルのバイイン料金/最小ベットが差し引かれます。 ディーラーが描く 2回目のパスが行われ、別のカードがすべてのプレイヤーに配られます。 ディーラーが描く 次に、(それらが配られたのと同じ順序で)各ボットは、「プログラマインタフェース」セクションで説明したように実行されなければならない行動を起こすか、立っています。ベットは動きと見なされます。ベットがボットのさらなる移動能力に影響しないことに注意してください。ベットしてからカードを引くことは非常に可能であり、複数のカードを引いて、立っている前にそれらをベットすることもできます。 すべてのボットが破壊または立ち上がると、ディーラーは17のしきい値までプレイします ボットのスコアはディーラーのスコアと比較され、ベットは勝ち負けになります ワンラウンド 5つのハンドを構成すると見なされます。ハンド間では、競技者のリストがソートされてプレーヤーが削除され、さらに処理されて、すべてのボットが同じ数のハンドをプレイするようにします(エントリ数が4つのボットテーブル間で均等に分割されないという事実の規定) )。 プログラマーのインターフェースと法的動き CardSharkファイルに記載されているとおり: # DOCUMENTATION # INPUT SPECIFICATION # …

5
1P5:地震!
USGSの地震計が大地震を検知しました!緊急時対応チームは、影響を受ける人々の数をすばやく見積もる必要があります。この見積もりを計算するプログラムを作成します。 プログラムは2つの入力を受け取ります。1つ目は、地震自体の詳細です。地震は、損傷が予想される断層からの臨界距離とともに、地球が破裂する線分としてモデル化されました。2番目の入力は、地域内の都市の場所と人口のリストです。あなたのプログラムは、被災地に住んでいる人の数、つまり断層セグメントの臨界距離内にあるすべての都市の人口の合計を計算する必要があります。 入力 まず、断層の開始点と終了点のx、y座標、および臨界距離を含む地震を説明する線。形式はA_x A_y B_x B_y Dです。例えば: 3.0 3.0 7.0 4.0 2.5 (3.0,3.0)から(7.0,4.0)に及ぶ障害と2.5の臨界距離をエンコードします。 次に、エリア内の都市ごとに1行で、都市とその人口のX、Y座標が含まれます。例えば: 1.0 1.0 2500 5.0 7.0 8000 3.0 4.0 7500 9.0 6.0 3000 4.0 2.0 1000 出力 被災地に住んでいる人の数。上記の例では、3番目と5番目の都市のみが危険エリアにあるため、出力は次のようになります。 8500 最短のコードが優先されます。 例2 0.0 0.0 10.0 0.0 5.0 5.0 4.0 10000 5.0 -4.0 1000 5.0 6.0 100 11.0 …
13 code-golf  math  1p5 

5
3点を通る円
平面上の3点のデカルト座標が与えられると、それらすべてを通る円の方程式を見つけます。3つのポイントは直線上にありません。 プログラムへの入力の各行には、3つのポイントxとy座標が順番に含まれA(x),A(y),B(x),B(y),C(x),C(y)ます。これらの座標は、スペースで区切られた1,000,000未満の実数になります。 解はの方程式として印刷され(x-h)^2 + (y-k)^2 = r^2ます。値はh、k、r小数点以下3桁で印刷されることになります。方程式のプラス記号とマイナス記号は、数値の前に複数の記号が付かないように、必要に応じて変更する必要があります。 Sample Inputs 7.0 -5.0 -1.0 1.0 0.0 -6.0 1.0 7.0 8.0 6.0 7.0 -2.0 Sample Outputs (x - 3.000)^2 + (y + 2.000)^2 = 5.000^2 (x - 3.921)^2 + (y - 2.447)^2 = 5.409^2
13 code-golf  math 

12
シミュレートされた爆発のための最もコンパクトなコード
(単純なパーティクルエンジンのように)爆発するピクセルのグループを画面にレンダリングするプログラムを作成できますか。また、非常に少数の文字(キーストローク)でこれを実行できますか。(それらの小さな男が爆発し、小さなピクセルの破片が飛び散るときのゲームのレミングを思い出してください。) 誰かがここで簡単なパーティクルシステムを処理スケッチとしてプログラムしました。しかし、誰かがc ++とsdlで、あるいはjavaやc#でも同じことができたら、もっと感銘を受けるでしょう。
13 code-golf 

4
長い乗算、一度に8ビット
16ビットのマシンが与えられ、任意のサイズの整数の乗算を実装するように指示されます。レジスタは16ビットの数値のみを保持でき、最大の乗算命令は2つの8ビット入力を取り、16ビットの結果を生成します。 プログラムは、入力として2つの任意のサイズの正数を取り、それらの積を出力する必要があります。各入力番号は、各バイトが2桁の16進数であるリトルエンディアンのバイト配列として、独自の行でエンコードされます。出力は同様にフォーマットする必要があります。おそらく例を挙げて説明するのが最も良いでしょう: 入力 1f 4a 07 63 a3 出力 fd 66 03 a7 04 乗算477727 * 41827 = 19981887229をエンコードします。 各入力番号の最​​後の(最上位)バイトがゼロ以外であり、出力する番号の最後のチャンクがゼロ以外であると仮定できます。両方の入力番号の長さは最大100バイトです。 最小のコードが勝ちます。 使用できる最大の乗算は1バイト* 1バイトであり、2バイトを超える整数型は使用できません。
13 code-golf  math 

7
n、nに最も近い素数、nの二乗、nに最も近いフィボナッチ数の平均は何ですか?
これは数学の問題であり、非常に多くのことを疑問視し、かなり挑戦的です。ご想像のとおり、これはコードゴルフですので、できるだけ短くする必要があります。 入力は、n任意のある整数の数(少なくとも支持整数べきで、それに限定される必要はありません)。出力がある平均の: n の正方形 n に最も近い素数 n nフィボナッチ数列の中で最も近い数 まもなく、プログラムはの結果を標準出力チャネルに出力するはずです。(n+(n*n)+closestPrime(n)+closestFib(n))/4 オーバーフローの可能性などを気にする必要はありません。通常の浮動小数点の精度も問題ありません。 入力が与えられる方法は完全にあなた次第です。コードゴルフと同様に、最短のプログラム(キャラクター)が勝ちます。 最も近いものを探しているときに同点になる場合は、次のいずれかを選択します。 上がる 降りる ランダムに選択してください

1
自分の言語でPCREを実装します。
注:これを自分で試した後、すぐにこれがどのような間違いであるかを認識しました。そのため、ルールを少し変更しています。 最低限必要な機能: 文字クラス(.、\w、\W、など) 乗算器(+、*、及び?) 単純なキャプチャグループ あなたの課題は、次の条件に従って、選択した言語でPCREを実装することです。 あなたはないかもしれないであなたの言語のネイティブ正規表現機能を使用どのような方法。サードパーティのRegExライブラリも使用できません。 エントリには、PCRE仕様をできるだけ実装する必要があります。できるだけ。 プログラムは、入力として2行を受け入れる必要があります。 正規表現 照合する文字列入力 あなたのプログラムは、その出力で示す必要があります: RegExが入力文字列のどこかに一致したかどうか キャプチャグループの結果 勝者は、仕様の多くを実装するエントリでなければなりません。できるだけ。同点の場合、勝者は私が判断した最も創造的なエントリーとなります。 編集:いくつかのことを明確にするために、入力と予想される出力の例をいくつか示します。 入力: ^ \ s *(\ w +)$ こんにちは 出力: 一致:はい グループ1:「こんにちは」 入力: (\ w +)@(\ w +)(?:\。com | \ .net) sam@test.net 出力: 一致:はい グループ1:「サム」 グループ2:「テスト」

6
パワーの比較。
次の関数f(a、b、c、d、e、f)を作成して、2つの数値N 1 = a b c、N 2 = d e fを比較します。 N 1 > N 2の場合、1を返します N 1 <N 2の場合、-1を返します 注: N 1とN 2の間の他の関係に値を返す必要はありません。例えば、それらが等しい場合、またはそれらの関係が定義されていない場合(複素数)。 その他の制約: すべての数字は整数です a、b、c、d、e、fは正でも負でもかまいませんが、ゼロではありません。 | a |、| d | <1000 | b |、| c |、| e |、| f | <10 10 実行時間が数秒未満 例: f(100,100,100,50,100,100) = 1 f(-100,100,100,50,100,100) …
13 code-golf 

13
eの最初のN桁を計算します
チャレンジ eの最初のN(<= 10 ^ 3)桁を計算するプログラムを作成します。 プログラムは入力として整数Nを取る必要があります。 入力: 100 出力: 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427 入力: 7 出力: 2.718282 入力: 1000 出力: 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035 最短のソリューションが勝ちます!
13 code-golf  math 

2
ローマ数字変換機能
ローマ数字の文字列を整数に変換する最短の関数を作成します。 各手紙の規則は、ウィキペディアのページで見つけることができます。1,000を超える文字には、高い値を示すために括弧が配置されます。 要件: ローマ数字1から500,000に変換する必要があります 1分以内に完了する必要があります 利点をもたらす可能性のある組み込み関数を使用しません(例:ローマ数字を整数に変換する関数) 関数です 関数は分数をサポートする必要はありません。無効な入力は、0を返します。 最短の機能が優先されます。同点の場合、最も投票数の多いものが勝者となります。 テストケース 入力 III 出力 3 入力 IIII 出力 0 入力 XVI 出力 16 入力 (C)(D)(L)MMI 出力 452001

20
アップタイムプログレスバー
uptime現在の稼働時間と同じ長さの解剖学的に示唆的なプログレスバー(図を参照)を生成し、生成するプログラムを作成します。 $ uptime 23:01 up 34 days, 7:30, 5 users, load averages: 0.23 0.27 0.24 $ uptime|<command> 8==================================D (34日= 34等号) 最短回答が勝ちます。

6
グラハム数の最後の桁を計算します
グラハムの数は7で終わります。理論的には、宇宙自体のサイズよりも多くの情報を保存する必要があります。ただし、グラハム数の最後の数桁を計算することは可能です。 最後の数桁は次のとおりです。 02425950695064738395657479136519351798334535362521 43003540126026771622672160419810652263169355188780 38814483140652526168785095552646051071172000997092 91249544378887496062882911725063001303622934916080 25459461494578871427832350829242102091825896753560 43086993801689249889268099510169055919951195027887 17830837018340236474548882222161573228010132974509 27344594504343300901096928025352751833289884461508 94042482650181938515625357963996189939679054966380 03222348723967018485186439059104575627262464195387 プログラムにはこれら(または同様の数)が含まれていない場合がありますが、計算する必要があります。200桁以上を計算する必要があります。 stdoutへの出力。適切なハードウェアでの最大実行時間は2分です。最短のプログラムが勝ちます。
13 code-golf  number 

5
複数の方法で完璧な力?
チャレンジ あなたの仕事は、正の整数Nが与えられると、複数の方法で完全なベキとして表現できるN以下のすべての正の整数を見つけるプログラムまたは関数を書くことです。 定義 完全なパワーは、m ^ kで見つかった数値iとして定義されます。ここで、 mとiは正の整数です m!= k テストケース 入力->出力 1000-> 16、64、81、256、512、625、729 56-> 16 999-> 16、64、81、256、512、625、729 81-> 16、64、81 1500-> 16、64、81、256、512、625、729、1024、1296 読みやすいコメント付きのバージョンも提供してください。

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