タグ付けされた質問 「logic」

数学的論理とブール代数に関連する課題について。

30
ブール配列を反転する
素敵なシンプルなもの 入力 ブール配列(または受け入れ可能な代替)が与えられた場合、配列の長さが32要素を超えないことを想定できます。 [false, false, true, false, false] 出力 配列のすべての要素を反転して出力します。 [true, true, false, true, true] ルール 完全なプログラムまたは単なる関数を書くことができます 標準的な抜け穴が適用されます 言語ごとのバイト単位の最短コードが勝ちます! テストケース Input: [true, false] Output: [false, true] Input: //Example of acceptable alternative [0,1,1] Output: [1,0,0]

7
積み上げ桁階段
以下に説明するように、正の整数およびhを指定すると、テキストのw列およびh行が出力されます。wwwhhhwwwhhh 最初の行は11 0秒で始まり、2行目は10 1秒で始まり、3 行目は9 2秒で始まり、10行目は2秒で続き9ます。これらの最初の10行のそれぞれで、連続する数字の最初の実行に続いて、次に低い数字が2回現れ、次に2番目に小さい数字が2回現れ、このパターンが永久に繰り返されます。0sの実行が発生した場合、その後の数字は常に9sです。 10番目の行の下の行は、そのすぐ上の行と同じですが、1つ右にシフトします。表示される新しい数字は、それ自体の別のインスタンスの隣にない場合、前の左端の数字と同じです。それ以外の場合は、次に高い桁(9から0に戻る循環)です。 最初の要素は次のとおりです。11×1011×1011\times10 00000000000 11111111110 22222222211 33333333221 44444443322 55555544332 66666554433 77776655443 88877665544 99887766554 パターンをより明確にするために、色付きのテキストを使用した画像を次に示します。 より少ない列/行を作成する必要がある場合は、上記のテキストを切り抜く必要があります。 これより多くの列/行を作成する必要がある場合は、既存の階段を延長する必要があります。さらに列/行が連続する数字の新しい階段を追加する場合、数字は整数から周期的に選択される必要があります。したがって、入力のために出力がなければなりません(15,13)(15,13)(15,13) 000000000009988 111111111100998 222222222110099 333333332211009 444444433221100 555555443322110 666665544332211 777766554433221 888776655443322 998877665544332 099887766554433 009988776655443 100998877665544 このテキストの色付きの画像を次に示します。 ルール 便利な方法で出力できます。 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 必要に応じて、行のリストを返すことができます。 必要に応じて、数字の2D配列または数字のリストのリストを返すことができます。 標準の抜け穴は許可されていません。 最短のコードが優先されます。 テストケース (w,h)(w,h)(w,h) 1,1 0 3,2 000 111 20,1 …

2
真理値表が与えられたら、それを満たすStackylogicプログラムを出力します
Stackylogicは、前の課題で作成したプログラミング言語です:Stackylogicを実行します。詳細と例については、その投稿を読んでください。しかし、次のように機能します。 Stackylogicは、入力用に0とを取り1、単一0 または1完了時に出力します。 プログラムは、文字のみを含む行で構成さ01?だけでなく、正確に一つとして<ラインの1の終わりに。行は空ではないかもしれないとして行が<少なくとも一つ持っている必要があります0、1または ?それ以前に。 2ビットのNANDを計算するサンプルプログラムを次に示します。 1 ?< 11 ? 0 プログラム内のすべての行はスタックと見なされ、左が下、右が上になります。暗黙的に、プログラムの最初の行の前と最後の行の後に空のスタック(つまり空の行)があります。 <プログラムが実行されたときに、カーソルと呼ばれ、マークスタックは上を開始します。実行は次のように進行します。 カーソルが現在指しているスタックから先頭の文字をポップします。 文字がの場合、?ユーザーにa 0またはa を要求し、それが文字であるかのよう1に動作します。 文字がの場合、0カーソルを1スタック上に(現在の行の上の行に)移動します。 文字がの場合、1カーソルを1スタック下に(現在の行の下の行に)移動します。 カーソルの移動先のスタックが空の場合、スタックからポップされた最後の値(常にa 0または1)を出力し、プログラムを終了します。 それ以外の場合、カーソルの移動先のスタックが空でない場合は、手順1に戻ってプロセスを繰り返します。 この課題を実現するために重要なことは、すべてのStackylogicプログラムが真理値表と同等であることです。所定の数のブール値が入力され、正確に1つのブール値が確定的に出力されます。 したがって、あなたのタスクは、満たすかシミュレートするStackylogicプログラムを作成することです。つまり、与えられた真理値表と同じ出力を持ちます。しかし、Stackylogic が任意の真理値表をシミュレートできることは明らかではないため、ここに帰納法による証明があります。 規範事例 2つの0入力の真理値表は、常に0またはを 出力する表です1。これらのテーブルに相当するStackylogicは0<、1< それぞれです。 誘導ステップ Stackylogicが任意のN入力真理値表をシミュレートできると仮定します。M = N + 1とします。 M入力テーブルTは、2つのN入力テーブルT 0およびT 1に追加の入力ビットBを加えて表現できます。Bが0の場合、T 0の結果が使用されます。Bが1の場合、T 1の結果が使用されます。 たとえば、擬似コードに対応する3入力の真理値表 if B: result = x OR y else: result …

2
論理ゲートでのゲリマンダーリング
多数決関数は、3つのブール入力を取り、最も一般的な値を返すブール関数です。たとえば、if maj(x,y,z)が多数決関数であり、TtrueをF示し、false を示す場合: maj(T,T,T) = T maj(T,T,F) = T maj(T,F,F) = F maj(F,F,F) = F この質問は、ブール関数を多数決関数の構成として記述することに関するものです。多数決関数の5進構成の例は(x1,x2,x3,x4,x5) => maj(x1,x2,maj(x3,x4,x5))です。この関数は、これらのサンプル入力ベクトルで次の出力を返します。 (T,T,F,F,F) => maj(T,T,maj(F,F,F)) = maj(T,T,F) = T (T,F,T,T,F) => maj(T,F,maj(T,T,F)) = maj(T,F,T) = T (T,F,T,F,F) => maj(T,F,maj(T,F,F)) = maj(T,F,F) = F (F,F,F,T,T) => maj(F,F,maj(F,T,T)) = maj(F,F,T) = F 仕事 ブール値の正の整数nと長さnのベクトルのリストを入力し、可能であれば与えられたすべてのベクトルでtrueを返す多数決ゲートのツリーを出力するプログラムを作成します。この関数は、制約のリストにないベクトルに対してtrueまたはfalseを返す場合があります。 ベクトルのリストは、任意の形式で入力できます。必要に応じて、ベクトルを入力する代わりに、ベクトル内の真の位置のリストを入力できます。したがって、たとえば、[TTF,TFT,FTT]or [[T,T,F],[T,F,T],[F,T,T]]または[[1,2],[1,3],[2,3]](真の位置のリスト)はすべて問題ありません。 …

7
振動の平等
on [l, r]から始まる、時間単位ごとに1単位の速度で、2つの整数点間で振動するオブジェクトがあります。あなたが仮定することができます。たとえば、オブジェクトがで振動する場合、次のようになります。lt=0l < r[3, 6] t=0 -> 3 t=1 -> 4 t=2 -> 5 t=3 -> 6 t=4 -> 5 t=6 -> 4 t=7 -> 3 t=8 -> 4 しかし、オブジェクトは継続的に振動するため、ともt=0.5 -> 3.5ありt=3.7 -> 5.3ます。 、の間[l1, r1]で振動する2つのオブジェクトが与えられた[l2, r2]場合t、2つのオブジェクトが同じ位置を共有するような時間が存在するかどうかを判断します。l1, r1, l2, r2任意の便利な形式でテイクを作成し、真実/偽の値を出力します。 真実の入力: [[3, 6], [3, 6]] [[3, 6], [4, 8]] …
15 code-golf  array-manipulation  decision-problem  code-golf  math  number-theory  palindrome  integer-partitions  code-golf  math  decision-problem  geometry  code-golf  string  random  code-golf  ascii-art  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  code-golf  graphical-output  code-golf  number-theory  primes  integer  factoring  code-golf  sequence  array-manipulation  integer  code-golf  array-manipulation  matrix  code-golf  sequence  binary  code-golf  game  cellular-automata  game-of-life  binary-matrix  code-golf  string  ascii-art  code-golf  random  generation  logic  code-golf  string  code-golf  code-golf  sequence  array-manipulation  random  apl  code-golf  code-golf  sequence  primes  code-golf  math  sequence  integer  code-golf  number  arithmetic  array-manipulation  decision-problem  code-golf  ascii-art  number  code-golf  restricted-source  quine  code-golf  chess  board-game  code-golf  math  sequence  code-golf  number  sequence  kolmogorov-complexity  code-golf  number  sequence  arithmetic  code-golf  math  number  alphabet  code-golf  ascii-art  classification  statistics  apl  code-golf  array-manipulation  matrix  code-golf  string  kolmogorov-complexity  code-golf  sequence  binary  base-conversion  binary-matrix  code-golf  string  classification  code-golf  tips  python  code-golf  combinatorics  binary  subsequence  restricted-time  code-golf  number  number-theory  code-golf  math  number  complex-numbers  code-golf  string  code-golf  string  code-golf  string  random  game  king-of-the-hill  python  code-golf  number  sequence  code-golf  number  sequence  code-golf  code-golf  math  number  array-manipulation  code-golf  array-manipulation  decision-problem  code-golf  string  code-golf  sequence  integer 

30
プライムパワーからプライムを回復する
定義:素数はp nの形式で表現できる自然数です。pは素数で、nは自然数です。 タスク:プライムパワーp n > 1の場合、プライムpを返します。 テストケース: input output 9 3 16 2 343 7 2687 2687 59049 3 得点:これはcode-golfです。バイト単位の最短回答が優先されます。
13 code-golf  arithmetic  primes  king-of-the-hill  python  board-game  code-golf  number  subsequence  code-golf  ascii-art  code-golf  array-manipulation  decision-problem  grid  fastest-algorithm  logic-gates  logic  code-golf  cards  code-golf  rational-numbers  code-golf  math  number  sequence  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  code-golf  number  sequence  decision-problem  code-golf  ascii-art  number  code-challenge  sequence  arithmetic  sorting  code-golf  date  fastest-algorithm  code-golf  string  number  random  combinatorics  code-golf  combinatorics  code-golf  ascii-art  base-conversion  code-golf  array-manipulation  code-golf  string  code-golf  string  number  arithmetic  code-golf  kolmogorov-complexity  code-golf  string  array-manipulation  json  code-golf  puzzle-solver  code-golf  binary  graph-theory  code-golf  arithmetic  haskell  code-golf  string  cipher  code-golf  code-golf  string  parsing  alphabet  code-golf  string  code-golf  ascii-art  code-golf  string  number  code-golf  string  balanced-string 

3
組み合わせの難問!
はじめに:組み合わせロジック 組み合わせロジック(CL)は、基本的に関数であるcombinatorsと呼ばれるものに基づいています。2つの基本的な「組み込み」コンビネータとがSありK、これについては後で説明します。 左結合性 CLはleft-associativeです。これは、CL を含む別のブラケットの一番左にあるブラケット(スタッフを含む)を削除し、スタッフを解放できることを意味します。たとえば、次のようなものです: ((a b) c) に減らすことができます (a b c) どこ(a b)より大きなブラケットの一番左にある((a b) c)ので、それを除去することができます。 左結合のはるかに大きな例(角括弧は説明です): ((a b) c ((d e) f (((g h) i) j))) = (a b c ((d e) f (((g h) i) j))) [((a b) c...) = (a b c...)] = (a b c (d …

2
Kippleを解釈してください!
前書き Kippleは、2003年3月にRune Bergによって発明されたスタックベースの難解なプログラミング言語です。 Kippleには、27のスタック、4つの演算子、および制御構造があります。 スタック スタックは命名されているa- zと32ビット符号付き整数を含んでいます。また@、数値の出力をより便利にするための特別なスタックがあります。数字がにプッシュされる@と、その数字の数字のASCII値が実際にプッシュされます。(たとえば、12を@に押した場合、49を押し、次に50を押し@ます。) iプログラムが実行される前に、入力が入力スタックにプッシュされます。インタープリターは、i実行前に保存する値を要求します。実行が終了すると、出力スタック上のすべてoがポップされ、ASCII文字として出力されます。これはKippleの唯一のIOメカニズムであるため、Kippleプログラムとの対話は不可能です。 オペレーター オペランドは、スタック識別子または符号付き32ビット整数のいずれかです。 プッシュ:>または< 構文:Operand>StackIndentifierまたはStackIndentifier<Operand Push演算子は、オペランドを左に取り、指定されたスタックにプッシュします。たとえば12>a、値12をstackにプッシュしますa。a>bstackから一番上の値をポップし、stack aにプッシュしますb。空のスタックをポップすると常に0 a<bが返されb>aます。これはと同等です。a<b>c最上位から値ポップbの両方にとプッシュをcしてa。 追加: + 構文: StackIndentifier+Operand 追加演算子は、スタックの一番上の項目とオペランドの合計をスタックにプッシュします。オペランドがスタックの場合、値はそこからポップされます。たとえば、スタックの最上位の値aが1の場合、a+23をプッシュします。aが空の場合、a+22をプッシュします。スタックの一番上の値場合aとbがある1と2は、a+bスタックから値2をポップアップ表示されますbし、スタックに3を押しますa。 減算: - 構文: StackIndentifier-Operand Subtract演算子は、Add演算子とまったく同じように機能しますが、加算ではなく減算する点が異なります。 晴れ: ? 構文: StackIndentifier? Clear演算子は、最上位のアイテムが0の場合、スタックを空にします。 インタープリターは演算子の隣にないものをすべて無視するため、次のプログラムが機能しますa+2 this will be ignored c<i。ただし、コメントを追加する適切な方法は、#文字を使用することです。a #と行末文字の間のすべてのものは、実行前に削除されます。ASCII文字#10は、Kippleの行末として定義されています。 オペランドは2つの演算子で共有a>b c>b c?できますa>b<c?。たとえば、と書くことができます。 プログラム1>a<2 a+aはa、値を[1 4](下から上へ)含むようになり、ではありません[1 3]。-オペレーターも同様です。 制御構造 Kippleには、ループという制御構造が1つしかありません。 構文: (StackIndentifier code ) …
12 code-golf  interpreter  code-golf  string  code-golf  math  string  code-golf  ascii-art  path-finding  code-golf  string  ascii-art  code-golf  interpreter  binary  logic-gates  logic  code-golf  ascii-art  code-golf  graph-theory  code-golf  string  code-golf  number  sorting  code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

3
論理式を論理積正規形に変換する
ゴール: 命題論理式(以降、論理式または式と呼ぶ)の式を取り、その式を論理積標準形で出力する完全なプログラムまたは関数を記述します。そこの2つの定数があり、⊤そして⊥単項演算子、真と偽を表す¬否定を表す、およびバイナリ演算子は⇒、⇔、∧、と∨暗に、同値、接続詞、および論理和を表す、それぞれどの(通常の論理演算のすべてに従わドモルガンの法則を、二重否定の除去など)。 結合標準形は次のように定義されます。 アトミック表現(⊤およびを含む⊥)は、連言正規形です。 以前に作成された式の否定は、接続詞の正規形です。 以前に作成された2つの式の分離は、接続詞の正規形です。 以前に作成された2つの式の結合は、接続詞の正規形です。 他の表現は、接続型の通常の形式ではありません。 すべての論理式は、論理的に等価な論理積形式に変換できます(一意ではありません)(このアルゴリズムを参照)。その特定のアルゴリズムを使用する必要はありません。 入力: 入力は任意の形式で行うことができます。たとえば、シンボリック論理式(言語でサポートされている場合)、文字列、その他のデータ構造。ここで説明するように、true、false、および論理演算子に同じ記号を使用する必要はありませんが、選択は一貫している必要があり、明確でない場合は、回答で選択を説明する必要があります。他の入力を受け入れたり、入力形式で追加情報をエンコードしたりすることはできません。任意の数の原子式を表現する方法が必要です。例:整数、文字、文字列など 出力: 連想標準形の数式。これも便利な形式です。入力と同じ形式である必要はありませんが、違いがあるかどうかを説明する必要があります。 テストケース: P ∧ (P ⇒ R) -> P ∧ R P ⇔ (¬ P) -> ⊥ (¬ P) ∨ (Q ⇔ (P ∧ R)) -> ((¬ P) ∨ ((¬ Q) ∨ R)) ∧ ((¬ P) ∨ (Q …
10 code-golf  math  logic 

1
青い目パズルの変形を解く
オリジナルの「Blue Eyes」パズルはここ(およびその下)にあります。 さまざまな目の色を持つ人々のグループが島に住んでいます。彼らはすべて完璧な論理学者です-結論が論理的に推測できる場合、彼らは即座にそれを行います。彼らの目の色は誰も知りません。毎晩深夜、フェリーが島に停車します。自分の目の色がわかった島民は島を去り、残りは残ります。誰もがいつでも他の人を見ることができ、それぞれの目の色(自分自身を除く)で見た人の数を数えますが、それ以外の方法では通信できません。島の誰もがこの段落のすべてのルールを知っています。 この島には、100の青い目をした人、100の茶色の目をした人、そしてグル(彼女はたまたま緑の目をしています)がいます。したがって、青い目をした人は100人が茶色の目で99人が青い目(および緑の目)を見ることができますが、それでも自分の目の色はわかりません。彼が知る限り、合計は101ブラウンと99ブルーである可能性があります。または100ブラウン、99ブルー、そして彼は赤い目を持っている可能性があります。 グルは、島での終わらない年のすべての日に、1日(正午に言ってみましょう)一度話すことが許可されています。島民の前に立って、彼女は次のように言います: 「青い目をした人が見えます。」 誰が島を出ますか、そして何夜ですか? 答えは、彼らがすべての百日のままにしておくことです。これは、次のロジックによるものです。 青い目の人が1人だけの場合、彼は1日目に出発します。2つの青い目の人だけがある場合、誰も1日目に出発しません。これに続いて、2人とも2日目に出発します。 -目の前の人、誰も1日目に出発しません。誰も2日目に出発しません。青い目をした人が3人いることを誰もが知っています。1人しかいなかった場合、彼は1日目に出発し、2人がいた場合、2人とも2日目に出発したため、3人全員が3日目に出発します。 これで、n個の青い目の人々が目の色を計算して去るのにn日を必要とする場合、n + 1の青い目の人々が同じことをするのにn + 1日を必要とするという帰納的証明を書くことができます。 ただし、作成するコードは、元のパズルだけでなく、わずかに異なる帰納的ステップを必要とするいくつかのバリアントも解決できる必要があります。 青い目をしている人の数とそうでない人の数がわかります。また、島の誰もが聞く神託(方程式/不等式のシステム)による声明が与えられます。青い目の人々が島から解放される時期を決定する必要があります。 オラクルの声明はb、青い目の人の数と青い目のない人の数に使用しrます。方程式には、< > <= >= = + -整数を含めることができます。 テストケース このバリアントセットに基づく 50 50 b>=1 b<b+r 出力: 50 2番目の方程式は新しい情報を提供しないため、この問題は元のパズルとまったく同じになります。 100 50 b+3>=r+4 出力: 25 100 0 b-2>8+1-1 出力: 90 50 50 b>=10 b<=75 出力: 41
8 code-golf  math  logic 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.