(とりあえず質問「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 /などを手動で設定するのではなく、テストに使用できます。
1
うわぁ!解決策があると教えてください。
—
dmckee ---元モデレーターの子猫
うーん...おそらくそれを定義する方がよいであろう
—
dmckee ---元モデレーター子猫
intstruct
という点でuint8_8
、uint16_t
そのための絶対的な大きさなどにshort
、int
というように規格によって定義されていない(各タイプは、最小のサイズを有し、サイズは厳密な順序付けがあるが、それでおしまい)。
私は、これは、もしゴルフをしなくても素晴らしい(そしてやりがいのある)練習だと思う
—
ジョン・ドヴォルザーク
この質問では、丸めの処理方法のドキュメントと優れたテストスイートを使用できます。
—
ピーターテイラー
私はそれが仕様にあると確信していますが、実際の仕様には数百ドルの費用がかかります。おそらく無料で利用可能な説明がありますが、IMOはその種の詳細(または、少なくとも数年後にまだ存在する可能性が高いサイトへのリンク)を含めるために質問者にあるべきです。質問が実際に何を望んでいるかを知るために必要な資料を自分で探しに行くのではなく、回答者に質問します。
—
ピーターテイラー