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

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

13
スパイが多すぎる!
あなたは敵のスパイの大規模なネットワークと戦っています。各スパイには、使用したい偽のIDが少なくとも1つ(場合によっては複数)あることがわかっています。実際に何人のスパイを扱っているのか知りたいのです。 幸いなことに、あなたの反知能エージェントは仕事をしていて、2つの偽のアイデンティティが実際に同じ敵スパイによって実際に制御されていることを把握できる場合があります。 それは言うことです: エージェントは、2つの偽のIDの背後に同じスパイがあることを常に把握しているわけではありませんが、 2つの偽のIDが同じスパイによって制御されているとエージェントから言われた場合、あなたはそれらが正しいと信じます。 エージェントメッセージ エージェントは、どのIDが同じスパイを背後に持っているかを伝える不可解なメッセージを送信します。例: あなたは持っている2つのエージェントと5つの偽のIDをに対処します。 最初のエージェントがメッセージを送信します: Red Red Blue Orange Orange これは、3つのスパイがいると考えることを意味します。 最初の(赤)はID 1と2を制御します 2番目(青)はID 3を制御します 3番目(オレンジ)はID 4と5を制御します 2番目のエージェントがメッセージを送信します。 cat dog dog bird fly これは、4人のスパイがいると考えることを意味します。 最初の1つ(猫)がIDを制御します1 2番目(犬)はID 2と3を制御します 3番目(鳥)はID 4を制御します 4番目(ハエ)は、アイデンティティ5を制御します 表示されるインテルのコンパイル: Identities: id1 id2 id3 id4 id5 Agent 1: |--same-spy--| |--same-spy--| Agent 2: |--same-spy--| Conclusion: |-----same-spy------||--same-spy--| …
38 code-golf 

10
「クールS」を描く
前書き 私たちは皆、クールS(スーパーマンS、ステューシーS、スーパーS、スケーターS、ポインティS、グラフィティSなどとしても知られています)を知っています。あなたが忘れているか、完全に冷静な子供時代を過ごした場合、ここに言われた冷静なSのイメージがあります: n入力としてスケールファクター()を指定すると、ASCIIアートでCool Sが出力されます。1 ≤ N ≤ 201≤n≤201\leq n\leq 20 描き方 Cool SのWikipediaページから: 出力 クールSがn1の場合: ^ / \ / \ / \ | | | | | | \ \ / \ \/ /\ \ / \ \ | | | | | | \ / \ / \ / …

3
(A→B)→(¬B→¬A)
さて、もう1つの証明ゴルフの質問があります。 今回は、よく知られた論理的真理を証明します (A→B)→(¬B→¬A)(A→B)→(¬B→¬A)(A \rightarrow B) \rightarrow (\neg B \rightarrow \neg A) これを行うには、Łukasiewiczの3番目の公理スキーマを使用します。これは命題論理上で完全な3つの公理の非常にエレガントなセットです。 仕組みは次のとおりです。 公理 Łukasiewiczシステムには3つの公理があります。彼らです: ϕ→(ψ→ϕ)ϕ→(ψ→ϕ)\phi\rightarrow(\psi\rightarrow\phi) (ϕ→(ψ→χ))→((ϕ→ψ)→(ϕ→χ))(ϕ→(ψ→χ))→((ϕ→ψ)→(ϕ→χ))(\phi\rightarrow(\psi\rightarrow\chi))\rightarrow((\phi\rightarrow\psi)\rightarrow(\phi\rightarrow\chi)) (¬ϕ→¬ψ)→(ψ→ϕ)(¬ϕ→¬ψ)→(ψ→ϕ)(\neg\phi\rightarrow\neg\psi)\rightarrow(\psi\rightarrow\phi) 公理は関係なく、我々が何を選ぶかの普遍的な真理ですϕϕ\phi、ψψ\psiおよびχχ\chi。証明のどの時点でも、これらの公理の1つを導入できます。公理を導入するとき、ϕϕ\phi、ψψ\psiおよびχχ\chi各ケースを「複雑な式」に置き換えます。複雑な式は、(文字によって表される原子から作られた任意の式であるAAA - ZZZ)、および演算子は意味(→→\rightarrow()としない¬¬\neg)。 たとえば、最初の公理(LS1)を導入したい場合は、 A→(B→A)A→(B→A)A\rightarrow(B\rightarrow A) または (A→A)→(¬D→(A→A))(A→A)→(¬D→(A→A))(A\rightarrow A)\rightarrow(\neg D\rightarrow(A\rightarrow A)) 最初のケースではϕϕ\phiはAAA、ψψ\psiはBBBでしたが、2番目のケースでは両方ともより複雑な表現でした。 ϕϕ\phiであった(A→A)(A→A)(A\rightarrow A)及びψψ\psiあった¬D¬D\neg D。 どの置換を使用するかは、現在の証明で必要なものに依存します。 Modus Ponens ステートメントを導入できるようになったので、それらを関連付けて新しいステートメントを作成する必要があります。ŁukasiewiczのAxiom Schema(LS)でこれを行う方法は、Modus Ponensを使用します。Modus Ponensでは、次の形式の2つのステートメントを使用できます。 ϕϕ\phi ϕ→ψϕ→ψ\phi\rightarrow \psi 新しいステートメントをインスタンス化します ψψ\psi 公理と同じように、ϕϕ\phiとψψ\psiは任意のステートメントに代わることができます。 2つのステートメントは、プルーフ内のどこにあってもかまいません。互いに隣接していたり​​、特別な順序である必要はありません。 仕事 あなたの仕事は反対の法則を証明することです。これは声明です (A→B)→(¬B→¬A)(A→B)→(¬B→¬A)(A\rightarrow …
38 logic  proof-golf 

28
Areciboメッセージを出力する
アレシボメッセージは、地球外の知性がそれを受信して​​解読することを期待して、球状星団M13に送信された人類と地球に関する基本情報を伝える1974年の星間電波メッセージです... 数値1,679が選択されたのは、73行23列の長方形に配置される半素数(2つの素数の積)であるためです。23行73列の代替配置では、理解できない文字セットが生成されます(他のすべてのX / Y形式と同様)。 これは、個別の部分を強調するために色が追加されたメッセージです。実際のバイナリ伝送には色情報は含まれていません。 ソース:ウィキペディア あなたの仕事は、画像に示されている正確な23x73配列でAreciboメッセージを出力することです。これらの出力形式はいずれも受け入れられます。 1つの文字に1つの文字を使用し、ゼロに別の文字を使用するテキスト(行の分離に通常のルールを使用) 2つの異なる値の2D配列 2つの異なる色の23x73画像 2つの異なる値を持つ1679項目の連続したストリーム(つまり、上記の形式のいずれかですが、フラット)。 1679ビットの整数。ソリューションでビットとバイトの順序(エンディアン)を示します。 便宜上、コピーアンドペースト可能なバージョンを次に示します(テキスト形式での出力例もあります)。 00000010101010000000000 00101000001010000000100 10001000100010010110010 10101010101010100100100 00000000000000000000000 00000000000011000000000 00000000001101000000000 00000000001101000000000 00000000010101000000000 00000000011111000000000 00000000000000000000000 11000011100011000011000 10000000000000110010000 11010001100011000011010 11111011111011111011111 00000000000000000000000 00010000000000000000010 00000000000000000000000 00001000000000000000001 11111000000000000011111 00000000000000000000000 11000011000011100011000 10000000100000000010000 11010000110001110011010 11111011111011111011111 00000000000000000000000 00010000001100000000010 00000000001100000000000 00001000001100000000001 11111000001100000011111 00000000001100000000000 00100000000100000000100 00010000001100000001000 00001100001100000010000 00000011000100001100000 00000000001100110000000 00000011000100001100000 …

23
プリティプリント多項式
前書き 人間は注目に値する種ですが、ときどき、特にコンピューターについては理解するのが非常に厄介です。特に、一見arbitrary意的なルールで非常に複雑な方法で多項式を書くのが好きなようです。 これらの規則を使用して多項式を正しくフォーマットするために書くことができる最短のプログラムは何ですか? チャレンジ 入力 多項式の係数を表す-1000から1000までの整数のリスト。最後のエントリはx ^ 0(定数)で、2番目の最後はx ^ 1の係数などです。 出力 人間の正しい形式の数学表記でこの多項式を表す文字列。 ルール: 先行係数の符号は、負の場合にのみ表示されます。 Right: -x^2+3 Wrong: +x^2+3 係数が0のコンポーネントは印刷されません(すべての係数が0 *であるコーナーケースを除く)。 Right: x^5-x^2+3 Wrong: x^5+0x^4+0x^3-x^2+0x+3 係数-1と+1は、定数でない限り、1なしで表示されます。 Right: x^5-x^2+1 Wrong: 1x^5-1x^2+1 指数は1より大きい場合にのみ表示され、変数は指数が0より大きい場合にのみ表示されます。 Right: 3x^3-7x^2+2x+1 Wrong: 3x^3-7x^2+2x^1+1x^0 *コーナーケース:通常、値がゼロの場合、そのコンポーネントは印刷されませんが、すべての係数がゼロの場合、定数0が印刷されます。 Right: 0 Wrong: 0x+0 Wrong: (nothing) これはコードゴルフなので、勝者はバイト数が最も少ないプログラムになります。 入力と出力の例 Input: Output: [0] 0 [0,0] 0 [0,-1,35,0] …

30
非常に長いテルザリマ
説明 非常に長いTerza Rimaの韻体系を出力します。 入力 なし。 出力 ABA BCB CDC DED EFE FGF GHG HIH IJI JKJ KLK LML MNM NON OPO PQP QRQ RSR STS TUT UVU VWV WXW XYX YZY ルール 空白または改行で区切られたスタンザを選択できるため、次のいずれかです。 ABA BCB... または ABA BCB ... 1行につき1つの末尾の空白が許可され、1つの末尾の改行が許可されます。 出力は大文字でも小文字でもかまいません。 これはcode-golfであるため、各言語のバイト単位の最短コードが優先されます。

22
干し草の山に針を隠す(警官)
これは警官と強盗の挑戦の一部です。強盗の部分はここに行きます。 警官の挑戦 文字列を出力する、選択した言語でプログラムまたは関数を作成する必要がありますHaystack。しかし、結果の文字列があるように、あなたのプログラムから(残りの順序を変更せずに)文字のサブセットを除去することが可能でなければならないも印刷し、同じ言語で有効なプログラムNeedleの代わりに。両方のプログラム/関数は、オプションで単一の末尾の改行を(互いに独立して)出力できますが、それ以外は何も出力しません。出力では大文字と小文字が区別され、指定された正確な大文字小文字に従う必要があります。 もちろん、あなたの目標は「針」を非常によく隠すことです。しかし、あなたの提出物は、あなたが意図したものだけでなく、どんな有効な解決策でもクラックされる可能性があることに注意してください。 あなたの答えに含めてください: 提出の言語(および関連する場合はバージョン)。 Haystackプログラムのサイズ(バイト単位)。 Haystackプログラム自体。 STDOUTでない場合の出力メソッド。 可能であれば、選択した言語のオンラインインタプリタ/コンパイラへのリンク。 提出物はプログラムまたは関数のいずれかですが、スニペットではなく、REPL環境を想定してはなりません。入力を受け付けてはならず、STDOUT、関数の戻り値、または関数(出力)パラメーターを介して出力できます。 両方のプログラム/機能は、合理的なデスクトップマシンで5秒以内に完了する必要があり、確定的である必要があります。ハッシュ、暗号化、または乱数生成に組み込み関数を使用しないでください(乱数ジェネレーターを固定値にシードした場合でも)。 公平を期すために、選択した言語用の無料のインタープリターまたはコンパイラーが必要です。 ニードルプログラムが見つかった場合、答えは破られます。回答が7日間クラックされていない場合は、回答で目的のニードルプログラムを公開できます。これにより、提出が安全になります。解決策を公開しない限り、7日が経過していても、強盗によってまだ解読されている可能性があります。最短の安全な Haystackプログラム(バイト単位)が勝ちます。 例 さまざまな言語の簡単な例を次に示します。 Ruby Haystack: puts 1>0?"Haystack":"Needle" Delete: XXXXXXXXXXXXXXX Needle: puts "Needle" Python 2 Haystack: print "kcatsyaHeldeeN"[-7::-1] Delete: XXXXXXXX XX Needle: print "eldeeN"[::-1] 削除された文字のサブセットは連続している必要はありません。 クラックされていない提出 <script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = …

23
トリニティホールプライムを出力する
このMath.SEの質問に基づきます。この回答からコピーされた番号。もともとNumberphileビデオから番号。 あなたの仕事は、次の1350桁の素数を出力することです。 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 オプションで、出力に改行を含めることができます。 ルール これはkolmogorov-complexityなので、入力はありません。 プログラムは、標準のコンピューターで1時間以内に終了する必要があります。近い場合は、テスト用に使用します。プログラムが1分以上実行されるか、TIOで終了しない場合は、コンピューターの時間を含めてください。 これはcode-golfであるため、バイト単位の最短コードが優先されます。

26
二乗言葉を作る
チャレンジ あなたの仕事は、与えられた文字列入力を取り、二乗形式で入力を出力するプログラムを作成することです。空の文字列は空の文字列を返す必要があります。 例 入力が与えられた場合: golf プログラムは以下を出力するはずです。 golf o l l o flog 入力: 123 出力: 123 2 2 321 入力: a 出力: a 入力: Hello, world! 出力(との間のスペースに注意してください-w-ギャップは単なる改行ではありません): Hello, world! e d l l l r o o , w w , o o r l l l d e !dlrow …

22
バラで22.5ターン
16点コンパスローズの方向の1つである文字列が与えられた場合 入力方向にすぐ隣接する2つの方向を時計回りに出力します。 具体的には、これら(およびこれらのみ)の入出力ペアを処理する必要があります。 Input Output N NNW NNE NNE N NE NE NNE ENE ENE NE E E ENE ESE ESE E SE SE ESE SSE SSE SE S S SSE SSW SSW S SW SW SSW WSW WSW SW W W WSW WNW WNW W NW NW WNW NNW …

30
最大2 ^ n-1の出力番号、「ソート済み」
入力として正の整数nを取り、nビットを使用して作成できる10進数(一部)を出力し、次の順序で並べます。 最初に1つだけで作成できるすべての番号をリストし、1残り0をバイナリ表現(ソート済み)でリストし、次に2つの連続 1で作成できるすべての番号、残り0、3つの連続 1などをリストします。 n = 4の場合、次のようになります。 0001 - 1 0010 - 2 0100 - 4 1000 - 8 0011 - 3 0110 - 6 1100 - 12 0111 - 7 1110 - 14 1111 - 15 だから、のための出力はn = 4である:1、2、4、8、3、6、12、7、14、15(オプションの出力形式)。 テストケース: n = 1 1 n = 2 1 2 …

30
独自の「for」命令
独自の「for」命令 次の入力があると仮定します。 a, b, c, d 入力は、「a / b / c / d」または「a、b、c、d」などの形式を使用して1行で入力できます。 4つの入力を使用することもできます。 次の動作をコーディングする必要があります(ここでは疑似コード)。 var i = <a> while (i <b> <c>) print i i = i + <d> print "\n" 以下にいくつかのテストケースを示します。 input : 1,<,10,1 output : 1 2 3 4 5 6 7 8 9 もう一つ: input : …
38 code-golf 

14
単語のリストをバックスペースで再入力
ここではどのようにですバックスペース-と-がretype 1つの文字列から別のものに: 最初の文字列から始めます。 結果が2番目の文字列のプレフィックスになるまで、末尾の文字を削除します。(これには0ステップかかる場合があります。) 結果が2番目の文字列と等しくなるまで、最後に文字を追加します。(これも0ステップかかります。) たとえば、からのパスfooabcをfooxyz次のようになります。 fooabc fooab fooa foo foox fooxy fooxyz 仕事 単語のリストが与えられたら、空の文字列から連続してリスト内のすべての単語にバックスペースで再入力し、空の文字列に戻るプログラムを作成します。すべての中間文字列を出力します。 たとえば、入力リストを指定する["abc", "abd", "aefg", "h"]と、出力は次のようになります。 a ab abc ab abd ab a ae aef aefg aef ae a h ルール 文字列のリスト、または任意の区切り文字を含む単一の文字列を返すか、印刷することができます。オプションで、最初と最後の空の文字列を含めることができます。入力には少なくとも1つの単語が含まれることが保証され、各単語には小文字のASCII文字(a– z)のみが含まれることが保証されます。編集:入力内の連続する文字列は、互いに等しくないことが保証されます。 これはcode-golfです。バイト単位の最短コードが優先されます。 Python 3のリファレンス実装:オンラインで試してみてください!
38 code-golf  string 

30
五つ与えないで!
質問 : シーケンスの開始整数と終了整数が与えられ、その中に数字を含まない整数の数を返す必要があります5。開始番号と終了番号を含める必要があります! 例: 1,9→1,2,3,4,6,7,8,9→結果8 4,17→4,6,7,8,9,10,11,12,13,14,16,17→結果12 50,60→60→結果1 -59、-50→→結果0 結果には5が含まれる場合があります。 開始番号は常に終了番号よりも小さくなります。両方の数値が負になることもあります! 私はあなたのソリューションとそれを解決する方法に非常に興味があります。たぶんあなたの誰かが簡単な純粋な数学の解決策を見つけるでしょう。 編集 これはコードとゴルフのチャレンジなので、最短のコードが優先されます。
38 code-golf  math 

30
この数値は階乗ですか?
タスク 入力として自然数が与えられた場合、あなたの仕事は、入力が自然数の階乗であるかどうかに基づいて、真偽値を出力することです。入力番号は常に言語でサポートされている番号の範囲内にあると想定できますが、問題を簡単にするためにネイティブの番号タイプを乱用しないでください。 標準の抜け穴が適用されます。 入力 (タイプIntegerまたは類似の)自然数が与えられます。 事前定義された変数にあると仮定する以外は、任意の方法で入力を取得できます。ファイル、コンソール、ダイアログボックス(prompt)、入力ボックスなどからの読み取りが許可されます。関数の引数としての入力も許可されています! 出力 プログラムは、入力された数値が自然数の階乗であるかどうかに基づいて、真偽値を出力する必要があります。 真実/偽の値がすべての入力に対して一貫していることを確認してください。つまり、1と0のペアを使用してそれぞれ真実と偽の値を示す場合、プログラムは真実の値を持つすべての入力に対して1を出力し、 falsey値を持つ必要があるすべての入力。 出力は、変数に書き込む以外の任意の方法で取得できます。ファイル、コンソール、画面などへの書き込みが許可されています。機能returnも許可されています! プログラムは、入力に対してエラーを生成してはいけません! テストケース Input Output 1 Truthy (0! or 1!) 2 Truthy (2!) 3 Falsey 4 Falsey 5 Falsey 6 Truthy (3!) 7 Falsey 8 Falsey 24 Truthy (4!) 120 Truthy (5!) 受賞基準 これはcode-golfなので、バイト単位の最短コードが勝ちです!

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