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

課題には数学が含まれます。また、より具体的なタグの使用を検討してください:[数値] [数値理論] [算術] [組み合わせ] [グラフ理論] [形状] [抽象代数]。

2
x86アセンブリで大きさの順序を計算する最速の方法
タスクは簡単です。可能な限り少ないクロックサイクルを使用して整数の大きさを計算するアセンブリを記述します。 大きさの順序はと定義されてlog10いlog2ます。 有効な入力の範囲はある0に、包括的。その範囲外の入力の動作は未定義です。1012 値は、最も近い整数に切り捨てる必要が0あります0。ただし、入力を指定した場合、出力はである必要があります。(これは符号なし整数で可能な負の無限大の最良の表現であると考えることができます)。 x86アセンブリでなければなりません。 整数は、静的/インライン整数ではなく、ランタイム値である必要があります。そのため、コンパイル時にそれが何であるかはわかりません。 既にレジスタに整数がロードされていると仮定します。(ただし、明確にするために回答のレジスタに値を設定することも含めてください)。 外部ライブラリまたは関数を呼び出すことはできません。 Intelのドキュメントに記載されている手順を自由に使用できます。 いいえC 〜7個のIntel Coreアーキテクチャのいずれでも使用できます(10ページにリスト)。理想的にはNehalem(Intel Core i7)。 勝利の答えは、可能な限り少ないクロックサイクルを使用するものです。つまり、1秒あたりの操作数が最も多くなります。おおよそのクロックサイクルの概要は、http://www.agner.org/optimize/instruction_tables.pdfにあります。クロックサイクルの計算は、回答が投稿された後に発生する可能性があります。

5
正方形のデラコルテ数を計算する
課題:任意の言語でデラコルテ数の計算を実装します。最短のコードが優先されます。 異なる整数1..n²(少なくとも3〜27の間の可能な辺の長さn)の特定の正方行列の場合、そのデラコルテ数は、gcd(a、b)×distance²(a、b)の積の合計です。各個別整数のペア{a、b}。 次の例は、160のデラコルテ数を持つ3×3の正方形を示しています。 3 2 9 4 1 8 5 6 7 この正方形には、計算する36の異なるペアがあります。たとえば、ペア4と6です。gcd(4、6)× 距離 ²(4、6)= 4 テスト用の別の正方形の例-これには、5957のデラコルテ番号があります。 10 8 11 14 12 21 4 19 7 9 5 13 23 1 16 18 3 17 2 15 24 22 25 6 20 デラコルテ番号は、このプログラミングコンテストから取得されます -詳細については、こちらをご覧ください...コンテストは2015年1月に終了しました。とても楽しかったです! ルール: 必要な改行は1文字としてカウントされます。改行付きのゴルフソリューションを投稿できますが、その言語で必要な場合にのみカウントされます。 入出力の処理方法を選択でき、標準インクルードやメイン関数ヘッダーなど、言語の必要なフレームワークを数える必要はありません。このC#の例のように、実際のコードカウント(ショートカット/エイリアス定義を含む)のみ: namespace System { …
12 code-golf  math 

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 …

5
力を上げる
チャレンジ 課題は、正の数aとゼロ以外の数を取り、b出力a^b(aの累乗b)を行うプログラムを作成することです。+ - * / abs()数学関数/演算子としてのみ使用できます。これらはスカラー値にのみ適用できますが、リスト全体または配列には適用できません。 例: 1.234 ^ 5.678 = 3.29980 4.5 ^ 4.5 = 869.874 4.5 ^-4.5 = 0.00114959 関連:http : //xkcd.com/217/ 詳細 コンソールで使用するための関数または同様の構造を作成できます。コンソール入力を使用できない場合は、両方の数値が標準出力またはファイルへの書き込みを介して変数と出力に保存されていると想定できます。出力は、少なくとも4桁の有効数字に修正する必要があります。両方がゼロでないaと仮定できbます。1分を大幅に超えるランタイムは受け入れられません。最小バイト数が勝ちます。プログラムとアルゴリズムを説明してください。 編集:ポジティブベースのみを考慮する必要があります。あなたが仮定することができa>0ます。両方の数値が整数である必要はないことに注意してください!!!

3
バイアルを遠心分離機に入れます
この質問は、redditユーザーtaho_tegによるこのredditスレッドに由来していますが、より一般的な「パズル」に拡張されています。 中心軸を中心とする円に均一に分布するバイアル用の24穴の遠心分離機があります。多数のバイアルがあり、遠心分離機を起動する場合は、それらがバランスの取れた状態で配置されていることを確認する必要があります。バランスをとることができないバイアルの数は1と23だけです。たとえば、明らかに4のバランスをとることができますが、3つのバイアルで「三角形」を作り、他の2つを反対側の2つの場所に置くことで5のバランスを取ることもできます。 ゴール 遠心機の穴の数(回転軸を中心とする円に均一に分布している)を入力として受け入れ、遠心機でバランスを取ることができないバイアルの数のリストを出力するプログラムを作成する必要があります。 計算を行う必要があり、事前に計算されたソリューションをハードコーディングすることはできません。 入力と出力は、異なる入力に対してプログラムを呼び出すためにプログラムコードを変更する必要がないように実装する必要があります。コンソールを介して呼び出すことができる関数(または言語の同様の構成体)を記述することもできます。 また、遠心機に6つの穴がある場合は、2個と3個のバイアルを遠心分離できますが、「三角形」と反対側の2個が1点で重なるため、5個のバランスを取ることはできません。別の例では、n = 15の場合、11バイアルのバランスを取ることはできず、6バイアルと5バイアルのバランスを取ることができますが、これらのソリューションの組み合わせは重複します(もちろん、これはまだ不可能な基準ではありません)。 更新 特定の例を理解していない人もいるようですので、ここでグラフィックを作成しました。PLEASEあなたのアルゴリズムがどのように動作するかの簡単な説明だけでなく、検証のためのいくつかの例の出力を書き込みます。次の例を含めてください。 n = 1, 6, 10, 24, 63, 100 = 10^2, 163 (prime), 40320 = 8!, 65536=2^2^2^2^2, 105953 (prime) 40320と65536は巨大なリストを生成することに注意してください。おそらくそれらのリストの長さのみを示すことは良い考えでしょう。 そのリストに追加する興味深い数字を知っているなら、私に知らせてください!アルゴリズムは、少なくともn = 1'000'000まで機能する必要があります。 出力例: これらはいくつかの出力例ですが、たぶん手動で計算しただけなので、間違いがあります。 1: 1 2: 1 3: 1,2 4: 1,3 5: 1,2,3,4 6: 1,5 7: 1,2,3,4,5,6 8: …
12 code-golf  math 

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)のビット長ではありません。 …

24
数値の立方根を計算する
このゴルフの目標は、入力として与えられた数値の立方根を計算して出力するプログラムまたは関数を作成することです。 ルール: 外部リソースなし 組み込みのキューブルート関数は使用しません。 数値を累乗する(平方根、4番目の根などを含む)メソッド/演算子を使用しません。 関数/プログラムは、入力として浮動小数点数と負数を受け入れられる必要があります。 立方根が浮動小数点数である場合は、小数点以下4桁に丸めます。 これはコードゴルフで、バイト単位の最短コードが勝ちです。 テストケース: 27 --> 3 64 --> 4 1 --> 1 18.609625 --> 2.65 3652264 --> 154 0.001 --> 0.1 7 --> 1.9129 上記のすべてのテストケースを使用して-27 --> -3、負の数(、-64 --> -4...)をテストできます。
12 code-golf  math 

8
スティックをペイントするにはどれくらい時間がかかりますか?
(このMath.SE問題に基づいて、グラフィックも提供します) 私はこのように見える棒を持っています: 私はそれをちょっとこのように見せたいです: 私は専門の画家ではありませんが、このような野心的なDIYプロジェクトを始める前に、頭の中にいないことを確認したいと思います。 あなたのプログラムは、このスティックをペイントするのにいくつのステップが必要かを教えてくれるはずです。各ステップでは、前のペイント層を覆う無地の連続領域をペイントします。上記の例では、左半分を青、右半分を赤、そして2つの別々の緑の領域を合計4ステップでペイントできます(緑は連続的にペイントされません)。 これはASCII形式です。 ------ bbb--- bbbrrr bgbrrr bgbrgr このスティックをペイントして同じ結果を得るには、いくつかの異なる方法があります。ただし、時間の見積もりにのみ興味があり、これは4つのステップです。 ゴール プログラムは、指定された配色でスティックをペイントするために必要な最小ステップ数を出力する必要があります。ペイントスキームは文字列の形式になり、出力は数字になります。これはコードゴルフです。最短のプログラムが勝ちます。 入力 プログラムは、文字列の形でスティックの配色を受け取ります。一意の文字(大文字と小文字が区別されます)はそれぞれ、一意の色を表します。 YRYGR grG GyRyGyG pbgbrgrp hyghgy 出力 これらの数値は、スティックをペイントするのに必要な最小ステップ数です。 4 3 4 5 4 説明 これが私が上記の数字に到達した方法です。プログラムはこれを出力する必要はありません: ----- YYY-- YRY-- YRYG- YRYGR --- g-- gr- grG ------- GGGGGGG GyyyGGG GyRyGGG GyRyGyG -------- pppppppp pbbbpppp pbbbrrrp pbgbrrrp pbgbrgrp …
12 code-golf  math 

1
日の出と日の入り
私は少しロマンチックです。私たちがいる場所で日の出と日の入りを見るために妻を連れ出すのが大好きです。この演習のために、私がたまたま日付や緯度、経度に関係なく、日没または日の出の時間を教えてくれるコードは持っていないとしましょう。 あなたのタスク、コーダーは、10進数の緯度と経度(N度とW度で取得されるため、SとE度は負と見なされます)とYYYY-MM-DD形式の日付( 2000年1月1日以降)、日の出と日の入りのために24時間形式で2回吐き出します。 例:オーストラリアのシドニーでの今日 riseset -33.87 -151.2 2013-12-27 05:45 20:09 ボーナス:高度を考慮できる場合は-100、夏時間を考慮できる場合は-100 コードは、緯度と経度に基づいて入力で指定された関連するタイムゾーン、またはクライアントマシンのタイムゾーンで時間を吐き出さなければなりません。
12 code-golf  math 

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

2
コードゴルフ:宇宙船の運命は?[浮動小数点バージョン]
この質問は、ASCIIアート版よりも少し難しいです。芸術はありません、そして今、あなたはいくつかの浮動小数点演算をすることができます! チャレンジ USS StackExchangeは、船上で天文学的な爆発が発生したときに、惑星cg-00DLEFの重力場を移動していました。船舶のプログラミング責任者として、cg-00DELFの太陽系で土地をcrash落させることを余儀なくされるかどうかを予測するために、船舶の軌道をシミュレートするのがあなたの仕事です。爆発中、船はひどく損傷を受けました。宇宙船の無料のDEEEPRAROM *は限られているため、できるだけ少ない文字でプログラムを作成する必要があります。 *動的に実行可能な電子的に消去可能なプログラマブルランダムアクセス読み取り専用メモリ シミュレーション ASCIIアート版にやや似ていますが、タイムステップのアイデアがあります。もう1つのバージョンでは、タイムステップは比較的長い時間でした。船は、1つのタイムステップで惑星の重力をはるかに超えて移動できました。ここで、時間ステップは、距離が大きくなるため、時間の単位がはるかに小さくなります。ただし、1つの大きな違いは、セルが存在しないことです。宇宙船の現在の位置と速度は、関係する重力とともに浮動小数点数になります。もう1つの変更点は、惑星のサイズがはるかに大きくなったことです。 シミュレーションには最大3つの惑星があります。3つすべてに特定の位置、半径、および重力があります。各惑星の重力は、惑星の中心に直接力を加えるベクトルです。このベクトルの強度を求める公式は(Gravity)/(Distance**2)、です。ここで、距離は、船から惑星の中心までの正確な距離です。これは、重力が到達できる場所に制限がないことを意味します。 特定の時間に、宇宙船には速度があります。これは、最後のタイムステップから現在までに移動した距離と角度です。船にも勢いがあります。現在のタイムステップと次のタイムステップの間で移動する距離は、その位置のすべての重力ベクトルに加えられた現在の速度の合計です。これが宇宙船の新しい速度になります。 各シミュレーションには、10000タイムステップの時間制限があります。宇宙船が惑星の内部を移動する場合(惑星の半径よりも惑星の中心に近い場合)、その惑星に衝突します。シミュレーションの終了までに宇宙船がどの惑星にも衝突しない場合、重力から脱出したと推定されます。船が完全に整列し、10001番目のタイムステップで1落しながら10000タイムステップの間軌道にとどまることはまずありません。 入力 入力は、STDINへの4行です。各行は、4つのコンマ区切りの数字で構成されています。数値の形式は次のとおりです。 ShipLocX,ShipLocY,ShipVelX,ShipVelY Planet1LocX,Planet1LocY,Planet1Gravity,Planet1Radius Planet2LocX,Planet2LocY,Planet2Gravity,Planet2Radius Planet3LocX,Planet3LocY,Planet3Gravity,Planet3Radius 惑星が3つより少ない場合、残りの線はすべての値に対してゼロで埋められます。入力例を次に示します。 60,0,0,10 0,0,4000,50 100,100,4000,50 0,0,0,0 これは、宇宙船が(60,0)に位置し、10ユニット/タイムステップの速度で「上/北」に直進していることを意味します。2つの惑星があり、1つは(0,0)に、もう1つは(100,100)にあります。どちらも重力が4000で半径が50です。これらはすべて整数ですが、常に整数とは限りません。 出力 出力は、宇宙船がland落したかどうかを伝えるSTDOUTへの1ワードです。船がcrash落した場合、印刷しますcrash。それ以外の場合は、印刷しますescape。上記の入力に対して予想される出力は次のとおりです。 crash 何が起こったのか疑問に思うかもしれません。以下は、宇宙船の詳細な飛行ログを含むPastebinの投稿です。数字は、人々がイベントを視覚化するのを助けるのがあまり得意ではないので、ここで何が起こったのでしょうか?北に移動した後、2番目の惑星の西にわずかに通過し、かろうじて行方不明になります。その後、惑星の北側を曲がり、2番目の惑星の東側に衝突します。 審査のためのいくつかのケース 60,0,10,-10 0,0,2000,50 100,100,1357.9,47.5 0,0,0,0 エスケープ(逆二乗則により、60単位離れている場合、2000はあまり重力ではありません) 0,0,0,0 100,100,20000,140 -50,-50,50,50 -100,-100,50,50 クラッシュ(最初の惑星は非常に大きく、非常に近い) 0,0,0,0 0,0,0,0 0,0,0,0 0,0,0,0 脱出(これはエッジケースです:惑星がなく、簡単な解釈は、宇宙船が惑星の真上にあることを示唆します) ルール、制限、および注意 これはコードゴルフです。標準コードのゴルフ規則が適用されます。プログラムは、印刷可能なASCII文字のみで記述する必要があります。外部データベースにはアクセスできません。任意の言語(この課題の解決に特化した言語以外)でエントリを作成できます。 伝送終了

4
中置表記法から前置表記法への変換
次のように、括弧(())、指数(^)、除算(/)および乗算(*)、加算(+)および減算(-)を含むことができる算術式を指定します。 a ^ (2 / 3) * 9 * 3 - 4 * 6 プレフィックス表記で同じ式を出力します。 (- (* (* (^ a (/ 2 3)) 9) 3) (* 4 6)) 入力と出力のスペースはオプションです。すべての演算子は左結合であり、式のすべての数値は1桁の整数(つまり[0-9])であると仮定できます。 これはコードゴルフの課題であるため、最短のソリューションが優先されます。
12 code-golf  math 

3
グラフ電卓を実装する
電卓に関する多くの質問がありました。ただし、グラフ電卓の実装が関与しているようには見えません。 チャレンジ STDINからの入力として複数の式を取り、それらをSTDOUTにグラフ化する完全なプログラムを作成します。入力の形式は次のとおりf1(x)=x^2-x-1です。があり、fその後に0〜9の数字(両端を含む)が続き(x)=、が続き、グラフ化する式が続きます。プログラムは、入力、グラフ、入力、グラフなどを取得できる必要があります。 これはコードゴルフです。 グラフのX軸の範囲は-5〜5で、解像度は1/2ユニットごとに少なくとも1ポイントである必要があります。Y軸の要件は同じです。これは、最新の計算機と比べて小さな範囲のように見えるかもしれませんが、これを増やすのはささいなことでしょう。グラフには+、整数の形の目盛りが付いた軸が描かれている必要があります。 式は通常の操作順序で評価する必要があります。これらの式には、垂直漸近線/未定義の領域はありません。変数は常にxです。同じ式番号で2つの式が入力された場合、最も古い式が消去され、新しい式に置き換えられます。空の数式はゼロに評価されるはずです。公式は常に1/2の倍数になるとは限らないので、最も近い1/2に丸める必要があります。 数式がグラフ化されるとき、その線は数式の数から形成される必要があります。線が軸と交差する場合、軸は上に描画される必要があります。2本の線が交差する場合、どちらが表示されるかは関係ありません。 入力例 f1(x)=x+1 出力 + 1 | 1 + 1 | 1 + 1 | 1 + 1 |1 + 1| +-+-+-+-+-+-+-+-+-+-+ 1 | 1 + 1 | 1 + 1 | 1 + 1 | 1 + | + 入力 f2(x)=(x^2)^0.25 出力 + …

5
多項式補間
真の任意精度の有理数を使用して多項式補間を実行するプログラムを作成します。入力は次のようになります。 f(1)= 2/3 f(2)= 4/5 f(3)= 6/7 ... =符号の前後に空白が1つだけあると仮定することができます。すべての数値は小数または整数です。また、入力のすべての端数はすでに既約であると仮定することもできます。 入力が有効であり、f(x)でxが2倍になっていると仮定しても、エラーチェックは必要ありません。 出力はLaTeXと互換性のある形式である必要があり、出力されたLaTeXコードはここで与えられた出力と同じグラフィック表現を生成する必要があります。 f(x)= 123x ^ 2 + \ frac {45} {2} x + \ frac {7} {4} 端数は可能な限り減らす必要があります。のようなもの\frac{2}{4} は許可されていません。数値が整数の場合、分数を使用しないでください。 特別なルール: あなたのプログラムは... 12次までの多項式で機能する 合理的な入力のために1分未満で完了 計算全体を行う関数を使用しないでください 最小次数の多項式を出力します テストケース: 指定されたテストケースは、説明のためだけのものです。プログラムは、すべての正しい入力に対して正しい結果をもたらすはずです。 入力 f(1)= 2/3 f(2)= 4/5 f(3)= 6/7 出力 f(x)=-\ frac {4} {105} x ^ …

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