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

初等算術に関連する課題。

6
8ビット加算器を実装する
チャレンジ 値の範囲が0〜255の2つの整数を受け入れ、256を法とする整数の合計を返す関数を実装します。ビット単位の否定(〜)、ビット単位のOR(|)、ビットシフト演算子(>>、<<)のみを使用できます、および割り当て(=)。 使用できないものには次のものが含まれます(ただし、これらに限定されません) 加算、減算、乗算、除算 ループ 条件文 関数呼び出し バイナリまたはバイナリ否定、ビットシフト演算の使用回数が最も少ない。同点の場合、最も人気のあるソリューションが勝ちます。いつものように、標準の抜け穴が適用されます。 簡単な2ビット加算器の例を次に示します。77個のバイナリ否定、28個のバイナリor、および2ビットシフトを使用して合計スコア107を取得します(これは、Cプリプロセッサをで実行することで確認できますgcc -E)。#definesを削除し、結果の式を単純化することにより、はるかに効率的にすることができますが、わかりやすくするためにそれらを残しました。 #include <stdio.h> #define and(a, b) (~((~a)|(~b))) #define xor(a, b) (and(~a,b) | and(a,~b)) int adder(int a, int b) { int x, carry; x = xor(and(a, 1), and(b, 1)); carry = and(and(a, 1), and(b, 1)); carry = xor(xor(and(a, 2), and(b, 2)), (carry …

7
最大の操作を見つける
課題は、基本的な算術演算子(加算、減算、乗算、単項否定)を使用して整数のリストから取得できる最大数を見つけることです 入力 整数のリスト 出力 入力のすべての整数を使用した最大結果。 入力順序は関係なく、結果は同じである必要があります。 すべての操作を出力する必要はなく、結果だけを出力する必要があります。 例 Input : 3 0 1 Output : 4 (3 + 1 + 0) Input : 3 1 1 2 2 Output : 27 ((2+1)*(2+1)*3)) Input : -1 5 0 6 Output : 36 (6 * (5 - (-1)) +0) Input : -10 …

4
カクロの組み合わせ
カクロの組み合わせ 暗算はできないので、カクロパズルに苦労することがよくあります。カクロパズルでは、被害者が、1〜9の範囲内の異なる数字の合計を1〜45の範囲の別の数字と繰り返し計算する必要があります。多くの数字があります。たとえば、3つの数字から23を取得する方法を知りたい場合、答えは6 + 8 + 9だけです(これに精通している場合、これはKiller Sudokuと同じ考えです)。 場合によっては、数字1 が存在できないなど、他の情報があるため、2つの数字だけで8を達成するには、2 + 6と3 + 5しか使用できません(4 + 4は使用できないため、4 + 4は使用できません)明確ではありません)。あるいは、ソリューションで既に3を見つけている可能性があるため、3の数字の19のようなものは3 + 7 + 9でなければなりません。 あなたの仕事は、与えられた問題に対するすべての可能な解決策を厳密な順序で、厳密なレイアウトでリストするプログラムを書くことです。 入力 ソリューションは、入力を単一のASCII文字列として、stdin、コマンドライン引数、関数の引数、スタックに残された値、またはお気に入りの難解な言語が採用している狂気のいずれかを介して受け取ることができます。文字列は次の形式です number_to_achieve number_of_numbers_required list_of_rejected_numbers list_of_required_numbers 最初の2つの引数は、それぞれ1から45および1から9の範囲の典型的な10進数の非負の非ゼロ整数です(小数点を使用すると無効な入力になります)。2つのリストは、繰り返しのない特定の順序、または空のリストの場合は「0」。リスト間で共有数字を使用することはできません(0を除く)。区切り文字は単一のスペースです。 出力 出力は、可能な解決策の数を含む行で始まる必要があります。プログラムでは、重要度の高い各桁でソートされた改行区切りのソリューションを出力する必要があります。各桁は、1〜9の数字をリストした場合の位置に配置されます。 無効な入力が提供された場合、あなたのプログラムが何をするかは気にしませんが、ブートセクタをゼロにしたくはありません。 例 この入力例 19 3 0 0 予想される出力は 5 2 89 3 7 9 4 6 9 4 78 …

30
整数の整数平方根[閉じた]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 閉じた2年前。 問題: 選択した言語で、符号なし64ビット整数の平方根の下限を返す最短関数を記述します。 テストケース: 関数はすべての入力に対して正しく動作する必要がありますが、アイデアを説明するのに役立ついくつかの例を次に示します。 INPUT ⟶ OUTPUT 0 ⟶ 0 1 ⟶ 1 2 ⟶ 1 3 ⟶ 1 4 ⟶ 2 8 ⟶ 2 9 ⟶ 3 15 ⟶ 3 16 ⟶ 4 65535 ⟶ 255 65536 ⟶ 256 18446744073709551615 ⟶ 4294967295 ルール: 関数には好きな名前を付けることができます。(名前のない関数、匿名関数、またはラムダ関数は、何らかの方法で呼び出し可能であれば問題ありません。) この課題では文字数が最も重要ですが、実行時間も重要です。非常に少ない文字数でO(√n)時間で答えを繰り返し上方にスキャンできると確信していますが、O(log(n))時間は本当に優れています(つまり、nの入力値を仮定すると、 n)のビット長ではありません。 …

1
整数操作によりIEEE 754 64ビットのバイナリ浮動小数点数を実装します
(とりあえず質問「C」にタグを付けましたが、共用体をサポートする別の言語を知っている場合は、それも使用できます。) あなたの仕事は+ - * /、次の構造体の4つの標準的な数学演算子を作成することです。 union intfloat{ double f; uint8_t h[8]; uint16_t i[4]; uint32_t j[2]; uint64_t k; intfloat(double g){f = g;} intfloat(){k = 0;} } 演算自体は整数部分のみを操作またはアクセスするため(演算中にdoubleと比較することはありません)、結果はまったく同じです(またはのような非数値の結果の場合は機能的に同等ですNaN)対応する数学演算がdouble代わりに直接適用されたかのように。 操作する整数部分を選択できます。おそらく、異なる演算子間で異なる部分を使用することもできます。(ユニオンのフィールドのいずれかから「unsigned」を削除することもできますが、それを実行するかどうかはわかりません。) スコアは、4つの演算子のそれぞれの文字のコードの長さの合計です。最低スコアが勝ちます。 IEEE 754規格に慣れていない私たちの人のために、ここではウィキペディアにそれについての記事です。 編集: 03-06 08:47 intfloat構造体にコンストラクタを追加しました。double /などを手動で設定するのではなく、テストに使用できます。

5
ASCIIアートで長い乗算を視覚化する
チャレンジ 標準入力からコンマで区切られた2つの整数を取得し、それら2つの整数の長い乗算の視覚化を標準出力に出力するプログラムを作成します。 例えば: 入力 14, 11 プログラム出力 14 x11 _____ 14 14 ______ 154 入力 -7, 20 プログラム出力 -7 x20 _____ 00 14 _____ -140 [-999、999]の範囲の入力と数値は常に正しいと仮定します 受賞基準 最短のコードが勝ちます!

9
n番目のハイパーオペレーションを評価する
私はこれが少し数学的なものであることを理解していますが、ここに行きます。 数学では、ハイパーオペレーションシーケンスは、後継者の単項演算で始まり、加算、乗算、べき乗のバイナリ演算で続行する算術演算(ハイパー演算と呼ばれる)の無限シーケンスであり、その後、シーケンスはさらにバイナリ演算を超えて進みます右結合を使用した累乗。 あなたの目標は、入力として3つの整数x、y、およびnを取り、xおよびyに対するn番目のハイパーオペレーションの結果を出力するプログラムを作成することです。 例えば 1 1 1 出力2 2 4 4 出力65536 3 3 4 出力7625597484987 プログラムは、コードの最短ビットで作成する必要があります。 STDINファイルからまたはファイルから入力を取得できます。 ライブラリ関数は許可されていません。 入力制約:nは1以上です。 http://en.wikipedia.org/wiki/Tetrationには、これで頭を包めない場合の良い説明があります。

2
nを法とする数論のインタープリター
(私たちの目的のための)数論の文は、次の記号のシーケンスです。 0および'(後継者)-後継者は+1、0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加算)と*(乗算) = (に等しい) (と)(括弧) 論理演算子nand(a nand bis not (a and b)) forall (ユニバーサル数量詞) v0、v1、v2、など(変数) ここに文の例があります: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) ここでnot xは省略形ですx nand x-実際の文が使用する(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

5
この追加ピラミッドパズルには独自のソリューションがありますか?
追加のピラミッド与えて、それが解決できるかどうかを判断します。追加ピラミッドは、複数のレイヤーで構成され、各レイヤーはその下の数字よりも1つ小さい数字を持ちます。レイヤーはとして記号化されています。はベースレイヤーで、は上のレイヤーです。の番目の番号はとして示されます。はの左端の数で、は右側の数です。あなたが視覚化できるの上に存在するPPPi P i P 1 P i + 1 P i j P i P i 、j P i 、1 P i P i 、j + 1 P i 、j P i + 1 、j P i 、j私iiP私PiP_iP1P1P_1Pi + 1Pi+1P_{i+1}P私PiP_ijjjP私PiP_iPi 、jPi,jP_{i,j}P私、1Pi,1P_{i,1}P私PiP_iPi 、j + 1Pi,j+1P_{i,j+1}Pi 、jPi,jP_{i,j}Pi + 1 、jPi+1,jP_{i+1,j}Pi 、jPi,jP_{i,j}そしてミドル、その名"付加でピラミッド "。Pi …

1
四つんばいパズルだけではありません
この変形例では四つの四つんばいパズルあなたまで使用してはならないx x's場合は0から100までのすべての番号に到達するために(および他の数)と操作の定義された一連x = 4その後、あなたは4つまで使用することができます4sし、この質問は、古典的な4つの4となりパズル(ただし、4つを正確に4つ使用するのではなく、4つまで使用できます)。と仮定し1 < x <= 9ます。 このバージョンでは、次の演算子のみが許可されます。 加算(+)、減算(-)、乗算(*)、除算(/)。これは実際の除算であることに注意してください5/2 = 2.5。 指数(例:4 ^ 4)。これは、通常手で書かれた場合、余分な記号を含まないためです。 を連結することにより、新しい整数を作成できますxs。たとえば、整数を作成できます4, 44, 444, 4444。 演算子の評価の順序を制御するためだけに、括弧を使用して番号をグループ化することもできます。たとえば、のように括弧を連結と組み合わせることはできません(4/4)(4/4) = (1)(1) = 11。 他の記号は使用できず、標準の操作順序が適用されます。 あなたのプログラムが与えられ、生成する必要がありますx定義された範囲内とnの間0と100、それが存在する場合は、包括その入力のための正しいソリューションを。それ以外の場合、コードは何かを出力して、そのような解決策が存在しないことを示す必要があります。 許容範囲内xおよびn許容範囲内の入力値に対して、マシン上で提出を完了できる必要があります。これはコードゴルフであるため、最短のソリューションが優先されます。 この古い関連する質問は、より多くの演算子(および4のみ)を使用するため、0〜100のすべての数値が解けるため、この課題には当てはまりません。 入出力 コードは入力として2つの整数xをn受け取り、人間が読める便利な形式でソリューション(またはソリューションがないことを示す)を出力する必要があります。入力は、4 6例えば、「数6を作り、4つの4Sまでの使用」を意味します。入力されたのであれば4 6出力は可能性があり(4+4)/4+4。

20
Sumacシーケンスの長さ[終了]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 2年前に閉店。 Sumacシーケンスは、t 1およびt 2の2つの整数で始まります。 次の項、t 3、= t 1 -t 2 より一般的には、t n = t n-2 -t n-1 シーケンスは、t n <0のときに終了します。 あなたの課題:Sumacシーケンスの長さをt 1およびt 2から印刷するプログラムまたは関数を作成します。 t 1およびt 2は、使用言語の範囲内の整数です。 標準の抜け穴が適用されます。 テストケース t1 t2 sumac_len(t1,t2) 120 71 5 101 42 3 500 499 4 387 1 3 ボーナス通りの信用: 3 -128 1 -314 …

15
繰り返される相互
あなたがする必要があるのは、入力として小数を取り、数が整数になるまで、小数部分の逆数を繰り返し取った結果を出力する関数/プログラムを作成することです。 より具体的には、プロセスは次のとおりです。 xを入力とします xが整数の場合、それを出力します。 そうでない場合:。2に戻ります。x←1frac(x)バツ←1frac(バツ)x \leftarrow \frac{1}{\mathrm{frac}(x)} frac(x)frac(バツ)\mathrm{frac}(x)はの小数成分であり、等しくなります。最大整数未満であるXのある床、。xバツxx−⌊x⌋バツ−⌊バツ⌋x - \left\lfloor x \right\rfloor⌊x⌋⌊バツ⌋\left\lfloor x \right\rfloorxバツx テストケース: 0 = 0 0.1 = 1/10 -> 10 0.2 = 1/5 -> 5 0.3 = 3/10 -> 10/3 -> 1/3 -> 3 0.4 = 2/5 -> 5/2 -> 1/2 -> 2 0.5 = 1/2 -> …

7
2つの数値に一意の階乗が含まれていますか?
2つの数値を階乗に分解します。共有している場合は、偽の値を返します。それ以外の場合は、真実の値を返します。(この最近の質問に触発された) 言い換えれば、各入力番号を可能な限り貪欲な方法で(正の整数の)階乗の合計として書き込みます。両方の表現に階乗が現れない場合は真実の値を、そうでなければ偽の値を返します。 例 20と49が与えられた場合: 20 = 3! + 3! + 3! + 2! 49 = 4! + 4! + 1! 両方の表現に階乗が現れないため、真理値を返します。 32と132が与えられた場合: 132 = 5! + 3! + 3! 32 = 4! + 3! + 2! 3!両方の表現に表示されるため、falsey値を返します。 I / O 入力と出力は、任意の標準的な手段で行うことができます。 入力は常に2つの非負整数になります。言語が必要とするもの以外のこれらの整数の上限はありません。 出力は、真偽値または偽値でなければなりません。すべての出力が正しく真実/偽である限り、これらの値は必ずしも異なる入力に対して一貫している必要はありません。 テストケース 1つの入力がの0場合、答えは常に真実です。他の真実のテストケース: {6, 3}, {4, 61}, {73, …

6
ビットごとに指数を計算する
あなたの仕事は、次の手順でゆっくりとべき乗を計算することです。 2つの入力(この例では4と8)が与えられた場合、ビットごとに方程式を計算して累乗を計算する必要があります。すると4^8、ベース値が大きくなり(4)、指数が小さくなります(8)。より多くのべき乗と除算を使用してこれを行うことができます。指数を値Xで除算し(Xが指数の素因数である場合)、ベース値(B)をにすることができB^Xます。たとえば、次のことができます。 4^8 = (4 ^ 2)^(8 / 2) = 16^4 前の方程式でXを2に置き換えました。 次のようにして16^4、さらに「単純化」できますX = 2。 16^4 = (16 ^ 2)^(4 / 2) = 256^2 そして最後に数を計算します(もう一度X = 2): 256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536 したがって、 4^8 = 16^4 = 256^2 = 65536 これはあなたが与えるべき出力です。出力セパレーターは少し柔軟性があります。たとえば、数式をの代わりに改行またはスペースで区切ることができます=。または、それらをリストに入れることもできます(ただし^、区切り文字として数字や文字を使用しないでください)。 Martin Enderが指摘したように、これ^も柔軟性があります。たとえば、あなたが使用することができます[A, B]またはA**B代わりのA^B出力に。 …

2
繰り返しを解釈する!
この課題は、繰り返しに関する2チャレンジシリーズの最初の課題です。2つ目はすぐにアップします。 繰り返し(私がちょうど作っ何か)と呼ばれる言語では、無限の文字列が構成さ12345678901234567890...と、1234567890永遠に繰り返すことを。 数値を出力するには、次の構文を使用できます。 +-*/:これにより、繰り返し数字の文字列に演算子が挿入されます。 例: +-> 1+2= 3(間にandを+挿入)+12 +*-> 1+2*3= 1+6= 7(2つの演算子が現在使用されていることを除いて、上記と同じです) /-> 1/2= 0(繰り返しは整数除算を使用) //-> 1/2/3= 0/3= 0(繰り返しは複数の減算と除算で「左の関連付け」を使用します) 各演算子は、c' がない限り、左に1桁の数字が挿入されるように挿入されます(以下を参照)。 c:文字列の次の数字と連結します。 例: c+-> 12+3= 15(をc「継続」1し、次の数字と連結して2、を形成します12) +c-> 1+23=24 ccc -> 1234 ():数字を処理するための括弧。 例: (c+)*-> (12+3)*4= 15*4= 60(繰り返しは操作の順序を使用します) (c+)/c-> (12+3)/45= 15/45=0 (cc+c)/-> (123+45)/6= 168/6=28 s:番号をスキップします(無限の文字列から番号を削除します)。 s+-> 2+3= 5(sスキップ1) csc- > 124(第一cconcats …

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