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

他のタグでカバーされていないアスペクトの最適化に焦点を当てた課題。

2
最前面のパズルソルバーを構築する
トップフロントサイドパズルは、3つの直交ビュー(上面図、正面図、側面図)が与えられた(通常は立方体)ブロックの3D形状を構築する必要があるパズルです。 たとえば、次のように上面図、正面図、および側面図を指定します。 Top: Front: Side: . . . . . . . . . . . . . x x . . x x . . x x . . x x . . x x . . x x . . . . . . . . . . …

3
トロリー問題を解く
哲学者はトロリー問題を長い間熟考してきた。残念ながら、この問題を解決した人はいません。幸運なことに、プログラマーとしてコンピューターを使用して問題を解決できます! 入力 プログラムは、(より多くても1つのエッジで入力として有向グラフを(有限の)を取るxのyいずれかのために、xおよびy)、指定されたノードと、各エッジに取り付けられた非負の整数(そのトラックに関連付けられた人々の数を表します) 。さらに、すべてのノードには少なくとも1つの出口エッジがあります。 トロリーは指定されたノードで開始します。各ターン、トロリーがnodeにあるx場合、功利主義者はedgeを選択します(x,y)。その端の人々は死に、トロリーは今や端にいyます。このプロセスは永遠に続きます。 死ぬのは一度しかできないので、端(x,y)にn人が縛られていて、トロリーがその上を100回走ったとしても、n死に至るだけです。 出力 功利主義者は、死ぬ人の数を最小限にするような方法で彼の選択をします(有限の人しかいないので、それは有限であることが保証されます)。プログラムはこの番号を出力します。 入力フォーマット 任意の合理的な方法で入力グラフを取得できます。たとえば、マトリックスとしてそれを取り、指定されたノードを0とラベル付けされたノードとしてカウントできますx1,y1,n1;x2,y2,n2;...。または、のようなものを使用することもできます。たとえば0,a,0;a,b,5;a,c,1;b,b,0;c,c,0、標準的なトロリーの問題を表すために(最後にループがある場合)。 テストケース 0,a,0;a,b,5;a,c,1;b,b,0;c,c,0 -> 1(0からa、aからc(1人を殺す)に移動してから、トロリーをcからcにループし続けます)。 0,0,1;0,a,5;a,a,0 -> 1(0から0に進み、永遠に1人以上走る)、 0,a,5;0,b,1;a,a,1;b,b,6 -> 6(0-> a-> a-> a-> a-> ...(bへ行く欲張りな解は間違っていることに注意してください) 0,a,1;0,b,5;a,b,1;b,a,1 -> 3(0-> a-> b-> a-> b-> ...) 0,a,1;0,b,1;a,a,0;b,b,0 -> 1(実利主義者が取る可能性のある2つの異なるオプションがあり、どちらも1人だけを殺すことに注意してください) これはcode-golfなので、最短の答えが勝ちです!幸運を。 注:病気のループデループはなく、マルチトラックドリフトは禁止されています。また、私はこの問題をアシモフの3つの法則(/ s)の観点から考えることを好みますが、ピーターテイラーはサンドボックスで、この問題は重みが最小のrho(ループ自体に戻るパス)を見つけることと数学的に同等であると述べています。

2
行って星空にする
このコンテストでは、白​​黒のピクセル画像を受け入れ、変更を試みて、できるだけ少ない変更で白色の形状が星の領域を形成するようなプログラムを作成する必要があります。 許可される変更は、白いピクセルを黒いピクセルに変え、黒いピクセルを白いピクセルに変えることです。 出力も同じ画像で構成されている必要がありますが、今回はすべての変更があり、中央にマークが付いています。白から黒に変更されたピクセルは青で表示され、黒から白に変更されたピクセルは黄色で表示され、少なくとも1つの中心ピクセルは赤で表示されなければなりません。(正確な色はあなた次第です。)プログラムは、指定された画像と加えられた変更の総数を出力する必要があります。 定義 スタードメイン 画像の白いピクセルのセットは、(少なくとも)中央に 1つのピクセルがある場合(そしてその場合のみ)、スタードメインを表します。中心画素は、によってconnecedすることができる白画素の1つであり、直線ラインが白画素のみを通過するように、他の白画素の全てに。(したがって、中心ピクセルは必ずしも一意ではありません。) 2つのピクセル間の直線 (開始および終了は、以下の図の両方赤)2つの画素所与、straigth線二つの画素間の全ての画素からなり、そのタッチ(数学下図で黄色)線最初の中心から導くこと最後のピクセルの中心へのピクセル。ピクセルが角に接している場合、ピクセルはラインに接触していないため、ピクセルがピクセルラインに属するためには、(数学的な、黄色の)ラインが問題のピクセルをゼロ以外の長さで横切らなければなりません。(コーナーポイントのみに触れる場合、これは長さゼロと見なされます)。以下の例を検討してください。 例 最初の画像は、テストケースの「入力」の例を表し、他の2つの画像は、与えられた例の2つの有効な出力を表します。 黄色の領域(以前は黒)も「白」の領域にカウントされ、青色の領域(以前は白)は領域外の「黒」の部分にカウントされ、赤い点は毎回1つの可能な中心ピクセルを表します。 テストケース 次のテストケースは、それぞれ256 x 256ピクセルのサイズのpngです。 得点 次のテストケースでプログラムを実行し、回答に出力(イメージ/変更の数)を含めてください。各テストケースのリーダーボードを作成します。スコアはリーダーボードの各ランキングの合計になります-スコアが低いほど良いです。標準の抜け穴が適用されます。プログラムにこれらのテストケースを認識させ、それらの特別なケースを実行させることは許可されていません。(これらの各テストケースの最適な中心ピクセルを事前に計算して保存することはできません。)プログラムはすべての画像に対して機能するはずです。 リーダーボード Name | Score | 1 - rk | 2 - rk | 3 - rk | 4 - rk | 5 - rk | 5 - rk | Total Changes ------------+-------+------------+------------+------------+------------+------------+------------+-------------- …

2
このゲームで勝った単語のセットを見つけるための最速のpythonコード
これは、子供向けの一連のアクティビティカードからの単語ゲームです。ルールの下には、/ usr / share / dict / wordsを使用して最適なトリプレットを見つけるためのコードがあります。私はそれが面白い最適化問題だと思い、人々が改善を見つけることができるかどうか疑問に思っています。 ルール 以下の各セットから1つの文字を選択します。 選択した文字(およびその他の文字)を使用して単語を選択します。 単語を採点します。 選択したセットの各文字には、セットに表示されている番号が付けられます(繰り返しが含まれます)。 AEIOU カウント0 他のすべての文字は-2 上記の手順1〜3(手順1で文字を再利用しない)をさらに2回繰り返します。 最終スコアは、3つの単語スコアの合計です。 セット (1点を1点に設定、2点を2点に設定など) LTN RDS GBM CHP FWV YKJ QXZ コード: from itertools import permutations import numpy as np points = {'LTN' : 1, 'RDS' : 2, 'GBM' : 3, 'CHP' : 4, …

1
ビル・ゲイツをアウトゴルフできますか?
パンケーキソーティングは、スパチュラをスタックの任意の位置に挿入して、その上にあるすべてのパンケーキを裏返すことができるときに、サイズの乱れたパンケーキのスタックをソートする数学的問題の口語的な用語です。パンケーキ番号P(n)は、n個のパンケーキに必要なフリップの最小数です。1 1979年、若いBill GatesとChristos Papadimitriouは、P(n)=(5n + 5)/ 3の上限を証明する論文を書きました。2 Gates(および/またはPapadimitriou)が開発したアルゴリズム(おそらく1979年以降)を使用してパンケーキソートを実行するプログラムを作成したと想定するのは安全だと思います。ゲイツは熟練したプログラマーだったので、おそらくこのコードをできる限りゴルフしようとしましたが、ソースコードのサイズは公開されていません(AFAIK)。 チャレンジ: パンケーキのソートを実行する関数/プログラムを作成します。ここで、フリップの最大数は、GatesとPapadimitriouによって検出された境界を超えません。3リストが一貫している限り、リストを昇順または降順で選択できます。 n <50と仮定することができます。したがって、フリップの数を(ランダムに選択されたn値)に制限する必要があります。 n P(n) 38 65 49 83 50 85 出力は、各フリップの前のヘラの位置になります。出力は0または1のインデックスが付けられ、上からカウントするか下からカウントするかを選択できます。 追加のルール: ランタイムは確定的でなければなりません 固定の時間制限はありませんが、50要素のリストの出力を提供できる必要があります テストリスト: 私は最も難しいリストを提供することはできません(もしそうなら、私は挑戦ではなく論文を書きます)、関数/プログラムをテストできる数のランダムなリストを提供します。これらのリストが「簡単」であることが判明した場合、他の人を追加できます。 9, 63, 62, 75, 45, 78, 59, 75, 69, 3, 28, 94, 51, 10, 45, 93, 97, 80, 72, 36, 80, 88, 30, 93, …

2
他のすべてからどれくらい離れているかを数えます
等しい長さの2つのストリング間のハミング距離は、対応するシンボルが異なる位置の数です。 してみましょうP長さのバイナリ文字列にするnとT長さのバイナリ文字列です2n-1。のすべての長さの部分文字列のn間のハミング距離を左から右に順番に計算し、それらを配列(またはリスト)に入れることができます。PnT ハミング距離シーケンスの例 させP = 101てくださいT = 01100。このペアから得られるハミング距離のシーケンスは2,2,1です。 近さの定義 次に、このようなハミング距離のシーケンスを2つ考えてみましょう。と言うx = (0, 2, 2, 3, 0)とy = (2, 1, 4, 4, 2)例として。私たちはそれを言ってxおりy、closeもしy <= x <= 2*yそうならx <= y <= 2*x。ここで、スカラー乗算と不等式は要素ごとに取られています。つまり、2つのシーケンスAとB、A <= B iff A[i] <= B[i]すべてのインデックスに対してi。 ハミング距離のシーケンスは、これらの比較方法では半順序を形成することに注意してください。言い換えれば、シーケンスの多くのペアは、互いに大きくも等しくも小さくも等しくありません。たとえば(1,2)と(2,1)。 したがって、上記の例を使用して、(0, 2, 2, 3, 0) <= 2*(2, 1, 4, 4, 2) = (4, …

13
フィボナッチ製品
正のフィボナッチ数の一意の合計として、0より大きい数を分解できます。この質問では、可能な最大の正のフィボナッチ数を繰り返し減算することでこれを行います。例えば: 1 = 1 2 = 2 3 = 3 4 = 3 + 1 12 = 8 + 3 + 1 13 = 13 100 = 89 + 8 + 3 ここで、フィボナッチ積を上記と同じリストと呼びますが、加算は乗算に置き換えられます。たとえば、f(100) = 89 * 8 * 3 = 2136。 正の整数nを指定して、その数のフィボナッチ積を返すプログラムまたは関数を作成します。 テストケース: 1: 1 2: 2 3: 3 4: …
13 code-golf  math  sequence  fibonacci  code-golf  word  code-golf  cipher  code-golf  string  math  subsequence  code-golf  regular-expression  code-golf  brainfuck  assembly  machine-code  x86-family  code-golf  math  factorial  code-golf  math  geometry  code-golf  math  arithmetic  array-manipulation  math  number  optimization  stack  metagolf  code-golf  tips  assembly  code-golf  tips  lisp  code-golf  number-theory  path-finding  code-golf  number  sequence  generation  code-golf  math  geometry  code-golf  grid  permutations  code-golf  code-golf  graphical-output  geometry  fractal  knot-theory  code-golf  math  arithmetic  code-golf  interpreter  balanced-string  stack  brain-flak  code-golf  math  set-theory  code-golf  math  array-manipulation  code-golf  code-golf  string  natural-language  code-golf  code-golf  math  linear-algebra  matrix  code-golf  string  encode 

6
決定要因の最適化の課題
30 x 30のテプリッツを検討する エントリがすべて0または1である行列をます。この課題は、可能な最大の行列式を持つ行列を見つけるための単純な最適化課題です。 入力なし 出力すべてのエントリが行列式とともに0または1である30 x 30のテプリッツ行列をます。 スコア出力する行列の行列式。2人が同じスコアを獲得した場合、最初の答えが勝ちです。 これまでの主要なエントリー Matlabで 65,455,857,159,975Nick Algerによる(およそ(10 ^ 13.8) Pythonの 65,455,857,159,975 65,455,857,159,975(約10 ^ 13.8) Mathematicaの 39,994,961,721,988で39,994,961,721,988(約10 ^ 13.6) 39,788,537,400,052 in R by Flounderer(おおよそ10 ^ 13.6) Vioz-によるPythonの 8,363,855,075,832(約10 ^ 12.9) アレックスAによるジュリアの 6,984,314,690,903 (約10 ^ 12.8) 迷惑な追加の制約2015年7月16日 可能な場合は、任意のまたは高精度の算術を使用して最終出力の決定要因を計算し、実際に何であるかを確認できるようにしてください(常に整数である必要があります)。Pythonでは、これが役立つはずです。

1
テトリスタングラム
前書き タングラムは、ブロックをさまざまな形に配置/適合させる古典的なパズルです。中国の七巧板から-文字通り「7つのスキルボード」を意味します。このアイデアを活用して、7つのテトロミノスのピースを使用してグリッドを埋めましょう。 チャレンジ 入力としてグリッド座標の配列を受け取り、指定された座標を除き、テトリスの破片で満たされた10 x 20の完成したグリッドを出力する関数またはプログラムを作成します。 ピースの分布を均一に保つようにして、スコアを最適化します。 基準 この座標のペーストビンを使用して、タスクを完了します。5組の座標があります。座標を書き込む形式は自由に変更できますが、値は変更しないでください。 データセット#2は解決できません-この場合、入力セルが埋められた状態でグリッドを出力するだけです(つまり、X穴のある場所)。 入力 グリッド座標は、グリッドの「穴」を表します。これらはテトロミノの部分を含むことができないセルです。 グリッド座標: (0,0), (1,0), (2,0), ... (9,0) (0,1), (1,1), (2,1), ... (9,1) . . . (0,19), (1,19), (2,19), ... (9,19) プログラミング言語の配列スタイルを使用して、座標を入力します。 Xまたはその他の印刷可能なASCIIでグリッドの穴を表します。 出力 幅10セル、高さ20セルの標準テトリスグリッドサイズを使用して、Tetrominoピースを使用してグリッドを完全かつ完全に埋めることができる場合にのみ、ソリューショングリッドを印刷します。 手紙で構成小品I、O、L、J、T、Z、Sとして、次のとおりです。 I I L J I OO L J T ZZ SS I OO LL …

3
Brainfuckのビット演算子
あなたの仕事は、以下の二項演算子のそれぞれに対して1つのBrainfuckプログラムを作成することです。各プログラムは、入力から1つまたは2つの8ビット数(AおよびB)を取得し、指定された操作を計算する必要があります。 A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A 5つすべてを実装する必要はありません。スコアは次の方法で計算されます。 #totalCharacters + {4000 * #problemsNotCompleted} したがって、有効なスコアはゼロ(最高)から20,000(何も完了していない)までです。 結果を保存する場所や、入力を保存するかどうかは気にしません。8ビットセル、および必要なだけの空のセルを右側にのみ想定します。 最適なメモリ位置に番号がすでにあると仮定することができるので、IO操作を心配する必要はありません。
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

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 

4
映画のシーンを選択する
前書き 最後に、映画会社はあなたの映画に資金を提供しています。彼らはあなたに最大限の予算を与え、またあなたの映画の実行時間を設定しました。 これで、プリプロダクションから始めることができます。すでに多くのシーンが計画されていますが、それらのすべてが予算に収まるわけではなく、映画も長すぎます。ただし、各シーンの重要性は知っています。あなたの目標は、映画が高すぎず、長すぎず、平凡であるシーンを選択することです。 入力 あなたが得るrunning timeとbudgetスタジオが承認しました: [25, 10] あなたはを含むシーンのリストを持ってrunning time、costsそしてimportanceそれらのそれぞれについて: [ [5, 2, 4], [7, 1, 3] ] 配列が機能しない場合は、最適な別の入力形式を選択してください。時間は分単位です。予算と費用は、数百万のランダム通貨です。重要度は〜の範囲です[1–9]。すべての数値は整数です。 出力 次の事項について、ムービーに含めるシーンのリストを出力します。 の合計importanceが最大化されます。 コストは予算を超えません。 長さは、承認された実行時間の±5分以内です。 シーンの順序は重要ではなく、保存する必要はありません。 数値のリストまたは配列を出力できます。出力には、ゼロまたは1ベースのインデックスを含めることができます。 [0,2,5] – 0, 2, 5 – 0 2 5 [1,3,6] – 1, 3, 6 – 1 3 6 複数のソリューションが任意の入力に適用される可能性があります。必要なのは1つだけです。 制約 シーンを短くしたり、安くしたりすることはできません。 各シーンは1回のみ含めることができます。 必要条件 プログラムは、映画の実際の長さの時間内に終了する必要があります。 …

2
戦利品の折り目
前書き 長い戦いの後、謎のコンテストでスフィンクスを倒すことに成功しました。あなたのスキルに感銘を受けたスフィンクスは、あなたにあなたの賢さに見合った報酬を与えたいと望み、それぞれ数字を含む8つの箱に分割された魔法の羊皮紙のストリップを存在に想起させます。 「羊皮紙を減らしてください」とスフィンクスは言います、「箱が重なり、それらの箱が足し算または掛け算のいずれかによって融合するように。1つの箱が残っているとき、その価値は金貨であなたの報酬になります。」 仕事 8つの自然数のリスト/配列/いずれかを入力として受け取り、一連の「折り目」操作を通じて取得可能な最大の報酬を返す/印刷するプログラムまたは関数を作成する必要があります。 力学 「折り目」操作は、いくつかのセルに対して、+または*演算子として、または演算子として実行されます。リストの最初のn個のセルは折り返され、演算子を使用して宛先セルとマージされます。マージ操作で消費されないセルは変更されません。 n = 3セルを使用して折り目を付ける例を次に示します。 いずれかの追加を使用すると、次の結果になります。 または乗算。これは次のようになります。 注:簡単にするために、リストの長さ以上のセル数で折り目を付けるのと同様に、1セル未満の折り目は許可されません。ただし、リストは、そのセル数の半分以上増加する可能性があります。 8セルのリストは、5ずつ折りたたむことができ、長さ5の新しいリストに なります。演算子を[0,1,2,3,4,5,6,7]使用して5セルずつ折りたたむと、+[9,9,9,1,0] 得点 標準コードゴルフルール-正しい出力を生成し、バイト数が最も少ないコードが勝ちます。 ボーナス:コードが最大の報酬につながる折り目操作のシーケンスも返す/印刷する場合は、スコアに0.8を掛けます。出力例は次のようになります。 crease 5 + crease 2 * crease 2 + crease 1 * 例 次の形式で、これらの入力と結果を使用してコードをテストしますinput - maximum reward。 [0, 1, 2, 3, 4, 5, 6, 7] - 7560 [0, 9, 0, 3, 2, …

1
有効な迷路の数
与えられたWxHグリッドを、どのように多くの可能な迷路がありますか? 迷路について知っていること: グリッドのH高さは正確に正方形で、W幅は正方形です。 開始、終了、空の3つのタイプの正方形があります。迷路には、開始と終了がそれぞれ1つだけ含まれている必要があり、残りのすべての正方形は空です。 迷路全体を囲む壁があります。 以下の規則に違反しない限り、壁は任意の2つの正方形の間のエッジに存在できます。 開始広場から終了広場までのパスが存在する必要があります。 したがって、との2つの数値を指定するWとH、可能な正方形/壁構成の数を表す単一の数値を返す必要があります。あなたは保証されていますW*H > 1 たとえば、2x2迷路の100構成はまったく異なります。 これはコードゴルフなので、最短の答えが勝ちです!

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 /などを手動で設定するのではなく、テストに使用できます。

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