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

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

11
PPCGを出力するプログラム…を出力するプログラムを出力します
チャレンジ: 実行すると、別の言語で実行可能な2番目のプログラムのソースコードを出力するコードを記述します。2番目のプログラムは、3番目の言語で実行できる3番目のプログラムのソースコードを出力する必要があります。最後のプログラムはPPCG、オプションの単一の末尾改行で出力する必要があります。 勝者は、ほとんどの言語で提出されます。最初のプログラムのコード長がタイブレーカーになります。 重要なルール: どのプログラムも同一にすることはできません 各言語は、いずれかのソースコードでのみ機能する必要があります。チェーンの2つの場所で同じ言語を壊さずに使用することはできません(例を参照)。 短縮されたチェーンは壊れたチェーンではありません。意図した場所とは異なる場所で言語を使用でき、最終結果がまだPPCGである場合、それは無効です 言語のすべてのバージョンは一意の言語としてカウントされます(ただし、ルール番号2に留意してください) 例: 無効な提出: print("""print'disp("PPCG")'""") Python 3:print("""print'disp("PPCG")'""")プリントprint'disp("PPCG")' Python 2:print'disp("PPCG")'印刷disp("PPCG") オクターブ:disp("PPCG")プリントPPCG これは正常に動作、しかし:あなたは、チェーンを壊すことなく、Pythonの2に、第1および第2のコードの両方を実行することができますので、これはルール番号2に違反します。 スコア3の有効な提出: print("""print'disp("PPCG")'""") Python 3:print("""print'disp("PPCG")'""")プリントprint'disp("PPCG")' Perl:print'disp("PPCG")'印刷disp("PPCG") オクターブ:disp("PPCG")プリントPPCG これは、無効な例とまったく同じコードです。違いは、ルール番号2に従う言語を選択したことです。最初のコードはPerl / Octaveで、2番目のコードはPython 3 / Octaveでも、最後のコードはPython 3 / Perlでも実行できません。Python 2を言語の1つとして使用していないため、Python 2は最初の2つのプログラムを実行できますが、これは有効です。

16
クズネツォフのシーケンス
クズネツォフのシーケンス (I made the name up, don't bother with Wikipedia or Google) 任意の数を与えて、数の逆を表しn > 0ましょう。最終結果がゼロになるまで反復し、以下の操作を実行して、再帰または選択した方法論を使用して各反復の結果を関数に戻します。rn もしr > n結果はその繰り返しのためにr % n。 もしn > r結果はその繰り返しのためにn % r。 n % r = 0またはの場合r % n = 0、反復を終了します。 各実行の中間結果を取得し、最終的な答えのために配列に保存します。初期番号nはシーケンスの一部ではなく、0; もありません。例は、すべてをもう少し明確にする必要があります。 の例を見てみましょうn=32452345。 54325423 % 32452345 = 21873078 # r > n, uses r % n …

19
欠落している素数を印刷する
タスク 数値入力を渡すと、の因子ではない1のx平方根の下の素数を表示または返すプログラムまたは関数を記述します。xx 例 ましょうf(x)と呼ばれる関数であります: >>> f(4) [] >>> f(5) [2] >>> f(20) [3] >>> f(60) [7] >>> f(100) [3, 7] >>> f(10000) [3, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] ボーナスルール あなたの言語が提供するビルトインを使用できます。 プログラムはx、言語で定義された上限と同じ高さの入力をサポートする必要があります。 1平方根の下の素数のみとして平方根を使用することは、実際にの因子に含まれxます。この制限を行わないと、大きな数字には多くの余分な数字が印刷されます。

9
メタポリグロット馬
PPCGに取り組んでいた頃、私は、クインの問題とポリグロットの問題が非常に一般的であることに気付きました。また、問題のメタソリューション、つまり問題の解決策であるプログラムを生成するスクリプトは、コミュニティから多くの肯定的なフィードバックを得る傾向があります。したがって、これらの3つのアイデアを実装するこの課題を作成しました。 読者でありコードゴルフ愛好家であるあなたの仕事は、2つの言語AとBで実行できるスクリプトをできるだけ短く作成して、AとBのクインを生成することです。プログラムを言語Aで実行すると、言語Bのクインであるが、言語Aのクインではないプログラム。言語AとBは、生成されたクインがいずれかのバージョンでのみ機能することを念頭に置いて、同じ言語の異なるバージョンにすることができます。 標準の抜け穴は閉じていると見なされるべきであり、適切なクインのみが許可されること に留意してください。 幸運なことに、最少のキャラクターが勝ちます!

16
Plus and Times、Ones and Nines
この繰り返し関係を、負でない整数を入出力する関数またはプログラムとして実装します。 F(0)= 0 F(N)= 10を底とする数字の和および/または積がNになるようなF(N-1)より大きい最小の整数 Nはプログラムの入力であり、F(N)はその出力です。 明確にするために、913などの数字の合計は9 + 1 + 3 = 13です。積は9×1×3 = 27です。1桁の数値の場合、合計と積は同じ数値です。もちろん、0を含む数字の製品は0です。 F(70)による結果は次のとおりです。 N F(N) 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 19 11 29 12 34 13 49 14 59 15 69 …

17
PPCG Jeopardy:強盗
このサイトをどれだけ知っていますか?確認してみましょう。 これは警官と強盗の挑戦です。 警官のスレッド。 強盗として、あなたはする必要があります: 警官の提出に一致する、削除されていない、閉じられていないチャレンジを見つけます。チャレンジには、警官と強盗、人気コンテスト、コードトローリング、人手不足、ビジービーバー、キングオブザヒル、ヒント、アンサーチェーンのタグを含めることはできません。チャレンジには、有効な出力に制限が必要です。 ここにチャレンジを投稿し、クラッキングしている警官にリンクします 警察官の投稿に「ひびの入った」コメントを追加し、この回答に戻るリンクを追加します 1ポイントと、提出物がクラックされずに残っていた24時間ごとに1ポイント(最大7)を受け取ります。Tiebreakerは、クラックされたサブミッションの総数です。 ノート: チャレンジにの出力が必要な場合、ユーザーがX出力するXYかYX、Y空白以外の場所にある場合、そのチャレンジに対して送信は有効ではありません。 2016-11-17より新しいチャレンジは許可されていません。 特定の課題が広く適用可能な場合(すべての提出の大部分に適用できる場合)、私は特定の課題を禁止する権利を留保します。 説明として1つまたは2つの文を追加することを確認してください(また、提出物をコメントに変換するのに役立ちます) 最初のアイデアをくれたダニエルに感謝します!

6
Minecraft城フラクタル
仲間のPPCGユーザーからのyoutubeビデオに触発されました... あなたが挑戦するのは、ASCIIアートを使用して、安山岩と閃緑岩のMinecraft城壁を描くことです。壁の形はカンターセットです。参照用に、カンターセットは、次のN回繰り返して作成されます。 現在のステップを3倍に 真ん中のスペースを空白に置き換えます その下に完全な行を追加します これにより、最初の4つのステップで次が作成されます。 * * * *** * * * * *** *** ********* * * * * * * * * *** *** *** *** ********* ********* *************************** ただし、あなたの挑戦はそれほど単純ではありません。ご覧のとおり、カンターセットが非常に大きくなった後、同じキャラクターを何度も繰り返し見るのは退屈になります。そのため、アスタリスク*とポンド記号を交互に重ねて表示することで、これを変更します#。3文字ごとに水平方向に、すべての行を垂直方向に交互に配置する必要があります。(もちろんスペースは同じままにします)たとえば、2番目の例は次のようになります。 * * ### 3番目の例は次のようになります。 * * * * ### ### ***###*** 完全を期すために、ここに例4と5を示します。 #4 * * * * …

13
Goldbachパーティション
ゴールドバッハ予想では、2より大きいすべての偶数は2つの素数の合計として表現できると述べています。例えば、 4 = 2 + 2 6 = 3 + 3 8 = 5 + 3 ただし、10に達すると、興味深いことが起こります。10と書けるだけでなく、 5 + 5 しかし、次のように書くこともできます 7 + 3 10は2つの素数の和として2 つの方法で表現できるため、10 の「ゴールドバックパーティション」はであると言います2。またはより一般的には、 数のゴールドバッハパーティションが書き込みの異なる方法の合計数であるn = p + q場合pとq素数であり、そしてp >= q あなたの課題は、番号のGoldbachパーティションを見つけるプログラムまたは関数を書くことです。現在、技術的には「Goldbachパーティション」という用語は偶数を指すためにのみ使用されています。ただし、p> 2が素数の場合、奇数の整数p + 2は2つの素数の和としても表現できるため、これをすべての正の整数(A061358)に拡張します。 入力は常に正の整数であり、関数の引数と戻り値、STDINとSTDOUT、ファイルの読み取りと書き込みなど、許可されているデフォルトのメソッドのいずれかで入力と出力を受け取ることができます。 100までの正の整数のGoldbachパーティションは次のとおりです。 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, …

14
数字のペアをギターの音に変換する
ギターのフレットボード図は次のようになります。 0 1 2 3 4 5 6 7 8 9 10 11 12 <- Fret number (0 means it's open) |-E--F--F#-G--G#-A--A#-B--C--C#-D--D#-E |-B--C--C#-D--D#-E--F--F#-G--G#-A--A#-B |-G--G#-A--A#-B--C--C#-D--D#-E--F--F#-G |-D--D#-E--F--F#-G--G#-A--A#-B--C--C#-D |-A--A#-B--C--C#-D--D#-E--F--F#-G--G#-A |-E--F--F#-G--G#-A--A#-B--C--C#-D--D#-E ご覧のとおり、開いている最初の文字列(上から)はEです。最初の文字列の最初のフレットはFです。3番目の文字列の4番目のフレットはBです。最初の音は、最初ではなく、ゼロフレットであることに注意してください。 これは、形式上の数字で記述できますstring, fret。文字列には、上から下に1〜6の番号が付けられています。フレットには、左から右に0〜12の番号が付けられています。Eしたがって、最初はです1, 0。他の例: 1, 0 --> E 1, 1 --> F 3, 5 --> C 5, 1 --> A# 6, 6 --> …

19
メルテンス関数を計算する
正の整数nが与えられた場合、Mertens関数 M(n)の値を計算します。ここで、 そしてμ(kは)であるメビウス関数μ(kは)場合は1 = kが異なる素因数の偶数を有する場合、-1 kは異なる素因数の奇数であり、0素因数が明確でない場合。 これはコードゴルフなので、入力整数n > 0 に対してメルテンス関数を計算する関数またはプログラムの最短コードを作成します。 これは、OEISシーケンスA002321です。 テストケース n M(n) 1 1 2 0 3 -1 4 -1 5 -2 6 -1 7 -2 8 -2 9 -2 10 -1 117 -5 5525 5 7044 -25 8888 4 10000 -23

11
自動スーパー対数を行う
正の整数で指定されたN及び数A、N番目のテトレーションのように定義される^(^(^(^ ... )))、^はべき乗(または電力)を示し、発現が含ま数を正確にN回。 言い換えれば、テトラションは右結合反復累乗法です。以下のためのN = 4、および= 1.6テトレーションは、1.6 ^(1.6 ^(1.6 ^ 1.6))≈3.5743です。 nに関するテトラションの逆関数は、超対数です。前の例では、4は「スーパーベース」1.6の3.5743のスーパー対数です。 チャレンジ 正の整数nが与えられた場合、nがスーパーベースxにおけるそれ自体のスーパー対数になるようなxを見つけます。つまり、見つけるのx、このようなことのx ^(X ^(X ^(... ^ xは)))(と、xが登場するのn倍)に等しいn個。 ルール 許可されたプログラムまたは機能。 入出力形式は通常どおり柔軟です。 アルゴリズムは、すべての正の整数に対して理論的に機能するはずです。実際には、メモリ、時間、またはデータ型の制限により、入力は最大値に制限される場合があります。ただし、コードは100少なくとも1分未満で入力に対して機能する必要があります。 アルゴリズムは、理論的には0.001正確な結果を提供する必要があります。実際には、数値計算の累積誤差により、出力精度が低下する場合があります。ただし、0.001指定されたテストケースに対して出力は正確でなければなりません。 最短のコードが優先されます。 テストケース 1 -> 1 3 -> 1.635078 6 -> 1.568644 10 -> 1.508498 25 -> 1.458582 50 -> 1.448504 100 -> 1.445673 リファレンス実装 Matlab / …
18 code-golf  math  number 

11
ソースコードGO!
拡張現実を使用して、ソースコードに隠された小さな生き物を狩りましょう。変更され、PCG-monを表示する5つの連続した文字を除いて、独自のコードソースを出力するクインプログラムを作成します。(^_^) 5つの連続した文字は、(位置からソースコードのどこにでも配置することができる0までn-5、nソースコードの長さです)。ソースコードの最小長は5文字でなければなりません。文字列(^_^)またはその長さが2以上の部分文字列は、初期ソースコードには表示されず、出力にのみ表示されます。 有効な提出の例: ソースコードmy source code、出力my (^_^)e code 無効: ソースコード(^_^) copy;、出力(^_^) (^_^) 受賞基準 バイト単位の最短コードが優先されます。

16
特定のイベントのすべての組み合わせの確率
確率が0.0〜1.0のイベントのシーケンスを指定して、各組み合わせが発生する確率を生成および導出します。選択した言語が提供するものであれば、どのような構成でも一連の数字が提供されると想定できます。 以下に例を示します。シーケンスの組み合わせの長さがメモリに収まると仮定できます。 { 0.55, 0.67, 0.13 } プログラムは、各組み合わせと、そのシーケンスが発生する関連確率を出力します。1は入力シーケンスのそのインデックス内のイベントが発生したことを示し、0はそのイベントが発生しなかったことを示します。望ましい出力は以下のとおりです(作業の印刷は気にしません。これはアルゴリズムの情報提供のみを目的としています)。 [0,0,0] = (1 - 0.55) * (1-0.67) * (1-0.13) = 0.129195 [0,0,1] = (1 - 0.55) * (1-0.67) * (0.13) = 0.019305 [0,1,0] = (1 - 0.55) * (0.67) * (1-0.13) = 0.262305 [0,1,1] = (1 - 0.55) * (0.67) * (0.13) …

2
次の動きは?
この課題は、書くことですミニマックス関数の出力に、お好みの言語での次の最善手のNxNのゲーム三目並べ与えられた現在のボードの状態を。ボード入力は、Matrix、2D Collection、またはユーザーにとって理にかなっているものの、ルールを順守するものとして受け入れることができます。出力はされて次善の動きのためのは、それが現在で回す誰でも、Xが起動していると考えられています。 Minimaxアルゴリズムの簡単な背景 ミニマックスアルゴリズムの基本的な考え方は、考えられるすべての結果をDAGとして列挙し、最初の動きによってキー付けされた一連の動きがプレーヤーに与える利益によってそれらを重み付けすることです。可能なすべての結果は、最初の動きによって「バケット化」され、すべての結果の合計に基づいてスコアリングされます(損失の場合は-1、同点の場合は0、勝利の場合は1)。複数のプレイヤーがプレイする必要がある実装では、プレイヤーによるすべての可能な動きと、対戦者によるすべての可能な反応も列挙します。たとえば、三目並べのゲーム(最初の動きの後)では、8つの可能な最初の動きがあり、次のターンだけを分析するときはすべて同じように見えるかもしれません。しかし、最終的な結果をもたらす可能性のある一連の動きごとに考えられるすべての結果を反復処理し、それらをすべて合計することにより、 tic-tac-toeの観点から見たmini-maxアルゴリズムのより詳細で詳細なコンテキストの概要については、http://neverstopbuilding.com/minimaxを参照してください。 XKCD(3x3ソリューションのみ) ルール 任意の言語を使用できますが、外部ミニマックスライブラリは許可されていません。 出力は、次の最適な動きを示す座標(0-n、0-n)または数値(1-n * n)にすることができます。 これに加えて、ベストケースシナリオが勝利ではなく損失または同点である場合を特定できる必要があります。 あなたが損失や同点を示す方法は、あなた次第です。 入力は従来のXとOを使用する必要があり、Xが最初に移動すると想定する必要があります。空白は何でも表すことができます。 プログラムに入力される入力には、n個のOとn + 1個のXがあると仮定できます。言い換えると、整形式のボードを取得していると仮定できます。 ボードの現在の状態がプログラムへの唯一の入力である必要があります。再帰を使用している場合、入力要件を容易にするためにヘルパーメソッドを作成する必要があります。詳細については、https://codegolf.stackexchange.com/a/92851/59376を参照してください。 10> = n> = 1の値をサポートする必要があります。プログラムがn> 10で「タイムアウト」になった場合、一部の言語の処理能力が大幅に低いため(特にWebに面したコンソールを使用しているため)、これも受け入れられます。 審査 これはコードゴルフであるため、プログラムの最小バイト数が優先され、標準的な抜け穴は一般的に許可されません。 同点の場合、最大の「n」をサポートするプログラムが勝ちます。 入力例 2x2 [[X,O] [-,-]] 出力: 2または[0,1](3または[1,1]も間違いなく正しいでしょう)(使用した形式を簡単に説明できる限り、場所の表示の任意の形式) 3x3 [[X,O,X] [O,X,-] [-,-,-]] 出力: -1(損失) 繰り返しますが、必要な入力形式はすべて許可されますが、XとOを使用する必要があります。提供される例は、単にその形式に制約することを意図したものではなく、単に刺激を与えるためのものです。

24
バイナリカウントダウンの長さ
無限からカウントダウンに触発 負でない整数を指定するとN、0に到達するまでにかかる次のステップの繰り返し回数を出力します。 変換Nバイナリに(4812390 -> 10010010110111001100110) 各ビットを反転(10010010110111001100110 -> 01101101001000110011001) 先行ゼロのトリム(01101101001000110011001 -> 1101101001000110011001) 10進数に戻す(1101101001000110011001 -> 3576217) ルール 入力と出力は、明確で一貫性のある任意の形式にすることができます 入力は、言語のネイティブで表現可能な整数範囲内にあります(言語が任意の大きな整数をサポートしている場合、制限はありません) テストケース 0 -> 0 1 -> 1 42 -> 6 97 -> 3 170 -> 8 255 -> 1 682 -> 10 8675309 -> 11 4812390 -> 14 178956970 -> 28 2863311530 -> …

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