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

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

9
階乗の逆数を計算する
入力として1より大きい実数を取り、その正の逆階乗を出力する最短コードを記述します。つまり、「この数に等しい階乗の数」という質問に答えます。ここで説明するように、ガンマ関数を使用して、階乗の定義を任意の実数に拡張します。 例えば: input=6 output=3 input=10 output=3.390077654 理由3! = 6と3.390077654! = 10 ルール 組み込みの階乗関数またはガンマ関数、またはこれらの関数に依存する関数の使用は禁止されています。 プログラムは、任意の精度で計算できる理論上の能力を使用して、5桁の10進数で計算できる必要があります(任意の精度を得るために、任意の大小にできる数値を含む必要があります) 任意の言語が許可され、文字の最短コードが優先されます。 ここで実例を作成しました。ご覧ください。

12
コンピュータサイエンスの先駆者に挨拶
1942年以前に生まれたお気に入りの有名なコンピューター科学者またはコンピューターサイエンスのパイオニアを選択してください(1943年は「最初の」コンピューターの作成の始まりです)。彼らには、ウィキペディアのページや、生まれた年をリストし、その成果がコンピューターサイエンスとどのように関連しているかを示す他のサイトが必要です。他の人と同じものを選択できますが、新しい人を選択することをお勧めします。 彼らがよく知っている名前をつけてください。これはほとんどの場合、姓と名になりますが、より一般的な場合は略語またはミドルネームが含まれる場合があります。例えば、のためのアントニー・ホーアの両方Tony HoareとC. A. R. Hoare許容可能です。 名前のすべての文字は印刷可能なASCIIでなければなりません。名前に印刷可能なASCII以外の文字が含まれている場合は、おおよそのものを選択しても問題ありません。例えばのKurt Godel代わりにKurt Gödel。 名前に含まれる一意の文字セット(例C. ARHoare:)を取得し、科学者の誕生年までに印刷可能なASCIIスケールにシフトし~、スペースからスペースにループします。(基本的に95年生年を追加します。)これにより、印刷可能なASCII文字の(ほとんどの場合)新しいセットが得られます。 たとえば、CARホアは1934年に生まれたので、1934年までにすべてのキャラクターをシフトC. ARHoare(34 mod 95)すると、が得られePBctj2$5(ます。 このスタックスニペットは、すべての移行を行います。 function go() {var name = document.getElementById("name").value;var year = parseInt(document.getElementById("year").value);var unique = {};for (var i = 0; i < name.length; i++) { unique[name.charAt(i)] = true; } var result = ''; for (var char in unique) …

23
複数のセッションでの番号の増分
グッドイブニングゴルフエージェント、 あなたの使命は、悪名高いエンターテイメントの巨人Eviltronic Artsを代表しています。世界の奴隷化と娯楽のための悪質な計画の一環として、彼らはできるだけ多くのSimStation Vのコピーを販売しなければなりません。これは、数回起動した後、ソフトウェアが不思議なことに動作を停止しなければならないことを意味します。 目標は、実行された回数をカウントするプログラムを作成することです。プログラムは、整数をstdoutに書き込む以外は何もしません。初めて実行されたときは、「1」を返します。次の「2」など。プログラムは、少なくとも数値「14」に到達できる必要がありますが、必要な上限はありません。 ただし、プログラムは新しいファイルを書き込まないでください。自分自身、レジストリ、またはインターネットにアクセスすることもできます。しかし、一部のユーザーは新しいファイルを疑っており、単にそれらを上書きするだけです!神経!合法的に購入したソフトウェアの制限を破ります! プログラムは、安定したインタープリターまたはシェルを想定できません-インタープリター全体がシェル実行中にコンピューターが再起動された場合、プログラムは引き続き動作する必要があります。 できるだけ検出できないようにする必要があるため、最短のソースコードが優先されます。 幸運のエージェント。エンターテインメント業界はあなたを頼りにしています。
30 code-golf 

6
化学式のバランスをとる!
ベルントは化学にいくつかの問題がある高校生です。クラスでは、ヘプタンの燃焼など、彼らが行っているいくつかの実験のために化学方程式を設計する必要があります。 C 7 H 16 + 11O 2 →7CO 2 + 8H 2 O 数学は正確にベルントの最強の主題ではないので、彼はしばしば反応のプロダクトとエダクトの正確な比率を見つけるのに苦労しています。あなたはベルントの家庭教師なので、彼を助けるのはあなたの仕事です!有効な化学式を得るために必要な各物質の量を計算するプログラムを作成します。 入力 入力は、量のない化学式です。これを純粋なASCIIで実現するために、サブスクリプションを通常の番号として記述します。要素名は常に大文字で始まり、その後に極小が続く場合があります。分子は+記号で区切られ、ASCIIアートの矢印->が方程式の両側に挿入されます。 Al+Fe2O4->Fe+Al2O3 入力は改行で終了し、スペースは含まれません。入力が無効な場合、プログラムは何でも好きなように実行できます。 入力が1024文字より長くなることはないと想定できます。プログラムは、標準入力、最初の引数、またはどちらも不可能な場合は実行時に定義された実装から入力を読み取ることができます。 出力 プログラムの出力は、追加の数値で増補された入力方程式です。各要素の原子の数は、矢印の両側で同じでなければなりません。上記の例の場合、有効な出力は次のとおりです。 2Al+Fe2O3->2Fe+Al2O3 分子の数が1の場合、ドロップします。数値は常に正の整数でなければなりません。プログラムは、合計が最小になるような数値を生成する必要があります。たとえば、次は違法です。 40Al+20Fe2O3->40Fe+20Al2O3 解決策がない場合は、印刷してください Nope! 代わりに。解のないサンプル入力は Pb->Au ルール これはコードゴルフです。最短のコードが優先されます。 プログラムは、すべての妥当な入力に対して妥当な時間内に終了する必要があります。 テストケース 各テストケースには、入力と正しい出力の2行があります。 C7H16+O2->CO2+H2O C7H16+11O2->7CO2+8H2O Al+Fe2O3->Fe+Al2O3 2Al+Fe2O3->2Fe+Al2O3 Pb->Au Nope!

19
数値を「4」が最も多い基数に変換します
これに触発された。整数、文字列、または数字の配列(任意)として指定された数値があります。数値の表現が最も「4」になるベースを見つけ、そのベースを返します。 番号結果 624 5 444 10 68 16 制限: 返されるベースは、入力を超えてはなりません。 abs(4)以下の数値は有効な入力とは見なされないため、未定義の戻り値は受け入れ可能です
30 code-golf  number 

3
木を植えて成長を観察する
成長しているツリーには、成長方法を定義するいくつかのルールがあります。 成長ルール: 木は枝だけで構成されています。 ブランチは、以下の記号の組み合わせで構成されています _、\、|、/、&_ ツリーは|、地面(_)上の単一の垂直ブランチ/トランク()として始まります。 __________________|___________________ 枝の成長のための食物は光から来ています。 光は空の各ポイントで2の強度から始まり、まっすぐ下に進みます。 各枝は、利用可能な光の半分を食べることができ、残りは下の枝を通過します。 したがって、上に他のブランチがないブランチは、毎シーズン1単位の軽食を獲得し、その上に1ブランチがあるブランチは、毎シーズン0.5単位の食べ物を獲得します。毎シーズン1 /(2 ^ n)単位。 各シーズンの終わりに、トランクから始まり、新しい枝と果物に変換された食料が合計されます(枝が果物に変わるか、食料が1ユニット未満になるまで、次のルールを適用します)。 ブランチのシーズン終了時に食料が1ユニット未満の場合、そのブランチのすべての食料は、次のシーズンまでそのブランチに保存されます。 ブランチに1ユニット以上の食物があり、成長する余地がある場合、利用可能な成長パターン(下記参照)を使用して新しいブランチをランダムに成長させ、次のシーズンのために残りの食物を保存します。 枝に1単位以上の食物があり、どこにも成長せず、枝が分かれている場合、枝を枝に均等に分配します 枝に1単位以上の食物があり、どこにも成長せず、枝が枝がない場合、果実になります(で表されますO) 可能な成長構成は次のとおりです 成長の構成: _ \ | / _ _ \ | / \ | / _ | | | | | \ \ \ \ / / / / __ \_ |_ …

11
ハイトマップをデプスマップに交換する
説明 あなたの仕事は、「深度マップ」、つまりオブジェクトの高さマップですが、上からではなく正面から見たものを出力することです。 たとえば、画像に示されている次のオブジェクトを考えます。高さマップは左側に表示されます。対応する深度マップは次のとおりです(矢印の位置から見た場合)。 010 211 <- Depthmap 322 矢印の前に立つと、左下のポイントに3つの立方体、左の中央のポイントに2つ、左上の点に0などがあります。 入力 入力は、任意のサイズの2次元配列です(必ずしも正方形ではありません)。 出力 出力は、深度マップを表す別の2次元配列です。推測できるように、そのサイズは(height x width)です。画像では、になります(3 x 3)。キューブの最高の塔が5だった場合、深度マップはの配列になることに注意してください(5 x 3)。 勝利条件 最短のコードが優先されます。 不許可 すべての言語が許可され、明示的な制限はありません。(あなたが何を思い付くことができるかわかりませんが、公正にプレーしてください。) 例 Input: Ouput: 5321 0001 1456 1012 2105 1112 1212 2222 3323 Input: Output: 22 01 13 12 00 22 Input: Output: (of the sample image) 232 …
30 code-golf 


16
数字を使用せずに2つの数字を掛ける
入力として"12345"、10などの正の整数を表す2つの文字列(やなど)が与えられます"42"。"518490"この場合、タスクは製品を含む文字列を出力することです。 ひねりは、コードで数値型を使用できないことです。いいえints、floats、unsigned longsなど、組み込みの複素数型または任意の精度の整数、またはそれらの行に沿ったものはありません。多くの場合、これらのタイプのリテラルも、それらを返す関数、メソッド、演算子なども使用しません。 君は することができ、文字列、ブール値、配列、または通常の数を表すために使用されない何か他のものを使用しています。(どちらの配列へのインデックスもその長さを取得するには。数値型を呼び出すことなく可能である可能性があることをしかしノート)charsは許可されていますが、それらに任意の算術演算やビット演算を実行するか、そうでない場合以外の何か他のものとして扱うないかもしれません文字列の一部を表すトークン。(charsの辞書編集による比較が可能です。) 制限を回避することはできません。これには、eval型関数内での数値型の使用、数値型への暗黙的な型変換、それらをサポートする非数値型での数値演算子またはビット単位演算子の使用、コンテナ型内に格納された数値型の使用、または関数の呼び出しが含まれます(ただし、これらに限定されません)文字列形式で数値結果を返す外部プログラム。(他の回避策が回答に表示される場合、このリストに追加する権利を留保します。)非数値型のみを使用して自分で乗算を実装する必要があります。 データが文字列の形式でコードに出入りする限り、入出力は任意の便利な方法で行うことができます。2つの入力引数のそれぞれにASCII文字のみが含まれており、で[0-9]始まらないと想定でき0ます。出力の先頭にゼロを付けないでください。 もう一つ:あなたのコードがなければなりません正しくまでの入力に扱うの長さの少なくとも10の文字、としなければならないため、現代のコンピュータ上の分の下で実行するすべてのその範囲で入力。投稿する前に、入力9999999999およびを指定したとき9999999999に、プログラムが999999999800000000011分以内にの出力を提供することを確認してください。この制限は、サイズの配列を割り当ててa*bそれを反復することで機能する回答を防ぐために特に存在するため、そのフォームの回答は勝つ資格がないことに注意してください。 これはcode-golfであるため、最短の有効なソリューション(バイト単位)が優先されます。

30
+、-演算を使用せずに、整数が2のべき乗かどうかを確認します[終了]
整数が2のべき乗かどうかをチェックするプログラムを作成します。 サンプル入力: 8 サンプル出力: Yes サンプル入力: 10 サンプル出力: No ルール: +、-操作を使用しないでください。 何らかの入力ストリームを使用して、数値を取得します。入力は、最初は変数に保存されることは想定されていません。 最短のコード(バイト単位)が優先されます。 真実/偽の応答(たとえば、true/ false)を使用できます。入力数がより大きいと仮定できます0。

30
インタラクティブなDeadfishインタープリターを作成する
Deadfishは、4つのコマンドを備えたジョーク「プログラミング言語」です。Esolangページは少し矛盾しており、そのページのインタープリターはまったく同じように機能しないため、次のバリエーションを実装する必要があります。 仕様 少なくとも 16ビットのサイズのアキュムレータがあり、それ以上は許可されますが、それ以下は許可されません。負の数をサポートする必要はありません。アキュムレーターは0、プログラムの開始時にあります。 次の2セットの4つのコマンドがあり、プログラムは両方を同時にサポートする必要があります。 標準Deadfish│XKCDバリアント│意味 ─────────────────────┼──────────────────┼─────────── ────────────────────────────── i│x│累積アキュムレーター d│d│アキュムレーターを減少させる s│k│平方(acc = acc * acc) o│c│数値としての出力アキュムレーター コマンドの実行後、アキュムレータがまたはのいずれ-1かである256場合、アキュムレータをゼロにリセットする必要があります。これは通常のラップアラウンドではないことに注意してください。たとえば、アキュムレータが20であり、sコマンドが実行された場合、アキュムレータは400その後になります。同様に、アキュムレータが257あり、dコマンドが実行されると、アキュムレータはになり0ます。 これらのコマンドのいずれでもない入力は無視する必要があります。 テストプログラム xiskso 出力する必要があります 0 xiskisc 出力する必要があります 289 I / O プログラムにプロンプ​​トが表示されます>>。プロンプトは、新しい行の先頭にある必要があります。次に、ユーザー入力の行を読み取り、指定されたコマンドを左から右に実行します。数字を出力するときは、数字を区切る必要があります。すなわち、12 34大丈夫、12,34大丈夫、 12 34 大丈夫ですが、そうで1234はありません。 プログラムは、少なくともこれにEOF達するまで、ループでこれを実行し続ける必要があります。 セッションの例: >> xiskso 0 >> xiskisc 289 >> ddddo ddddo 285 281 >> ddddo ddddo 277 …

30
猫はあなたの入力を再び食べました!
catプログラムを作成します。別名、入力を受け取って出力するプログラムです。 ...ただし、プログラムは入力から文字をランダムに削除し、代わりに印刷します。 入力の各文字は、プログラムで削除されるオッズが一般的に等しい必要がありますが、それを作成するのは難しいため、各文字のオッズは最大で10%しか変化しません。 プログラムは入力を受け取り、入力から文字をランダムに削除してから、そのバージョンを再度印刷する必要があります。(言語で改行を印刷する必要がある場合は、末尾の改行または他の文字で印刷できます。) 入力がの場合、BOOOWLすべてのOを等しい確率で削除するべきではありません。各文字(一意ではない)を考慮する必要があるため、結合されたすべてのOが1/5の確率を持つ代わりに(たとえば)、各Oは1 / 5のチャンスです。したがって、1/5のチャンスではなくBWL、1/5のチャンスがBOWLありBOOWLます。 入力はSTDINまたはそれに最も近いものに制限されます。 各キャラクターは、最低10%、最高30%の確率で除去されなければなりません。 各キャラクターのオッズは個別に計算する必要があります。 ランダムアクションをサポートする言語の任意のコンポーネントを使用できます。それが機能していても、他のものでもかまいません。 出力はSTDOUTまたは最も近い同等のものである必要があります。言語にSTDOUTがある場合は、他の方法で出力しないでください。あなたの言語が文字列をテキストとして出力できない場合、最も近いものを使用してください(Cの文字配列出力はここでOKです)。 これはコードゴルフです。最短のプログラムが勝ちます。

19
ミュンヒハウゼン番号ですか?
A ミュンヒハウゼン数ベースでbbbとしても知られる、完全桁対桁不変またはPDDIは、その塩基の合計の正の整数の特有のタイプであるbbb自身に上げ桁数自体に等しいです。架空の男爵ミュンヒハウゼンにちなんで名付けられました。関連する概念は、自己陶酔的な数字です。 たとえば、1111 = 1であるため、11=111=11^1=1はすべてのベースで簡単にミュンヒハウゼン数です。さらに、すべての正の整数は、定義によりベース1のミュンヒハウゼン数です。 さらに興味深いことに、3 3 + 4 4 + 3 3 + 5 5 = 3435であるため、343534353435は10進数のミュンヒハウゼン数であり、実際は33+44+33+55=343533+44+33+55=34353^3+4^4+3^3+5^5=3435唯一の他のベース10ミュンヒハウゼン番号。 35までのすべてのベースのMunchausen番号の部分的なリストは、OEISでシーケンスとして見つけることができます A166623。 正の整数で指定されたn>0n>0n>0が任意の塩基でミュンヒハウゼン番号である場合、判断b≥2b≥2b\geq2。 ルール デフォルトのI / Oルールが適用されます。 完全なプログラムまたは機能が許容されます。 入力は関数の引数としてSTDINから、出力は関数の戻り値などとしてSTDOUTにできます。 デフォルトの抜け穴が適用されます。 出力は、2つの異なる一貫した結果のいずれかでなければなりません。だからTRUE、真実に対しては罰金であり、偽造に対してFALSEは罰金であるが、あなたはそれを逆にするか、あるいはNone真実に対して、偽造などの1ために戻ることができる。回答で選択した結果を指定してください。 あなたの答えは、正の整数に対して少なくとも理論的に機能する必要があります。 ミュンヒハウゼン番号は00=100=10^0=1規則を使用しているため、222は11+00=211+00=21^1+0^0=2基本とするミュンヒハウゼン番号です。コードはこの規則に従う必要があります。 提出物がブルートフォース検索方式を使用する可能性が高い場合でも、説明を強くお勧めします。 ミュンヒハウゼンは明らかに奇妙な人物だったため、難解な言語を使用するとブラウニーポイントを獲得できます。 テストケース Truthy 1 (all bases) 2 (base 2) 5 (base 3) 28 (base 9 and base 25) …

3
亀がポータルを見つける
カメはグリッドに沿って移動して餌を取りたいと考えています。彼はそこに着くまでにどれだけの動きが必要かを知りたがっています。 同様に、彼は遅いので、彼は自分のドメインの周りにテレポーターをセットアップします。または、パスが長くなる場合は避けてください。 亀に会う 🐢 グリッド上のカメの生活 XXXXXXXXXXXX🐢XXXXXXXXXXXXXXXXXXXXXXXX🐢XXXXXXXXXXXX\begin{matrix} X&X&X&X&X\\ X&X&X&X&X\\ X&X&🐢&X&X\\ X&X&X&X&X\\ X&X&X&X&X\\ \end{matrix} カメは、任意の隣接するマスに移動することができます... バツバツバツバツバツバツ↖←↙バツバツ↑🐢↓バツバツ↗→↘バツバツバツバツバツバツバツバツバツバツバツバツ↖↑↗バツバツ←🐢→バツバツ↙↓↘バツバツバツバツバツバツ\begin{matrix} X&X&X&X&X\\ X&\nwarrow&\uparrow&\nearrow&X\\ X&\leftarrow&🐢&\rightarrow&X\\ X&\swarrow&\downarrow&\searrow&X\\ X&X&X&X&X\\ \end{matrix} しかし、カメは山の正方形に移動することはできません XXXXX🌄↖🌄🌄🌄X↑🐢↓XX↗→↘XXXXXXX🌄XXXX↖↑↗XX🌄🐢→XX🌄↓↘XX🌄XXX\begin{matrix} X&🌄&X&X&X\\ X&\nwarrow&\uparrow&\nearrow&X\\ X&🌄&🐢&\rightarrow&X\\ X&🌄&\downarrow&\searrow&X\\ X&🌄&X&X&X\\ \end{matrix} カメは彼のイチゴを食べたい、それが彼のイチゴを取得するのにかかるどのくらい知っていただきたいと思い X🐢XX🌄🌄🌄X🍓XXXX🌄🍓🐢🌄XX🌄XXXX\begin{matrix} X&🌄&🍓\\ 🐢&🌄&X\\ X&🌄&X\\ X&X&X\\ \end{matrix} 亀を取るだろう。この例で555ターン X↓↘X🌄🌄🌄↗🍓↑↑XX🌄🍓↓🌄↑↘🌄↑X↗X\begin{matrix} X&🌄&🍓\\ \downarrow&🌄&\uparrow\\ \searrow&🌄&\uparrow\\ X&\nearrow&X\\ \end{matrix} 幸いにも、カメはテレポーターを見つけました!グリッドには、相互にマップする2つのテレポートがあります。テレポーターを踏むと、すぐにカメが対応するテレポーターに移動します。テレポーターは非常に不安定で、一度使用すると消えてしまい、使用できなくなります。 🔵🐢XX🌄🌄🌄X🍓🔴XX🔵🌄🍓🐢🌄🔴X🌄XXXX\begin{matrix} 🔵&🌄&🍓\\ 🐢&🌄&🔴\\ X&🌄&X\\ X&X&X\\ \end{matrix} 亀が二度上に移動することが高速化されました。今カメ最短パスは222 …

10
最適なアルファベットのステッピング
文字のみで構成される入力文字列を指定すると、任意の文字で始まるラッピングアルファベット上ですべての文字を順番に表示するために必要な最小ステップ数になるステップサイズを返します。 たとえば、という単語を取りdogます。ステップサイズ1を使用すると、次のようになります。 defghijklmnopqrstuvwxyzabcdefg Alphabet ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ defghijklmnopqrstuvwxyzabcdefg Visited letters d o g Needed letters 合計30ステップ。 ただし、ステップサイズ11を使用すると、次のようになります。 defghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefg ^ ^ ^ ^ ^ ^ d o z k v g Visited letters d o g Needed letters 合計6ステップ。これは最小ステップ数であるため、返される結果dogはステップサイズです。11。 テストケース: "dog" -> 11 "age" -> 6 "apple" -> 19 "alphabet" -> 9 "aaaaaaa" …

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