問題タブ [ternary-representation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - カウント条件に一致するトリットの数
長さが 36 のすべての 3 進数 (0 で始まるものを含む) について、1 と 2 の数が正確に等しい、または 2 より 1 だけ多い数はいくつありますか?
例えば:
- 00 - はい
- 01 - はい
- 02 - いいえ
- 10 - はい
- 11 - いいえ
- 12 - はい
- 20 - いいえ
- 21 - はい
- 22 - いいえ
したがって、長さ 2 のすべての 3 進数について、9 つの可能性のうち 5 つが一致します。これは、長さが長くなるにつれて小さくなると考えられます。長さ 3 の場合、27 個中 13 個あります。
2 進数を扱っていた場合、ここで利用できる解決策がいくつかありますが、これらを 3 進数に一般化する方法は明確ではありません。
computer-science - なぜバイナリ コンピューティングではなく、ターナリ コンピューティングなのか?
3 状態のオブジェクトは、より多くの情報を保持し、より大きな値を処理することがすぐにできるのではないでしょうか? プロセッサは現在、XOR ゲートの膨大なネットを使用しており、それを再加工する必要があることを知っています。
64 ビットなので (2^63 の可能な状態を表すことができます)、同等の3 進生成を計算すると、log(3^63-2^63) の 10 桁以上の数をサポートできます。
+1 と 0 の間の電位差を検出するのは、-1 と 0 の間と同じくらい簡単だと思います。
ハードウェアの複雑さ、消費電力、またはチップ密度によって、ストレージと計算能力の向上が相殺されるでしょうか?
bits - 6 トリットが 9.5 ビットに等しいのはなぜですか?
このredditスレッドは言う6 trits ~ 9.5 bits
.
6トリット~9.5ビットってどう?
algorithm - 2 進数から 3 進数への変換
2進法で表された数値を3進法に変換する方法またはアルゴリズム(私の特定のケース)、またはそのような変換のための普遍的なアルゴリズムを知っている人はいますか?
私がすでに実装した解決策は、最初に数値を 10 進数に変換してから、必要な数値システムに変換することです。これは機能しますが、2 つの手順があります。最初に三項演算を実装しなくても、ワンステップで簡単に実行できるのだろうか? 何かトリックはありますか?
UPD:探している変換方法を明確に説明できなかったようです。基数 2 を基数 3 に変換する方法を求めているわけではありません。これを行う方法は知っています。私は 3 進数と 2 進数の代数データ構造を持っていると思うかもしれませんが、Haskell では次のようになります。
1 つ目は、最初に整数に変換して結果を取得する方法です (興味深い方法ではありません)。それぞれ 2 のべき乗 (単純で重い)。
そこで、この2つ以外の方法はないかと考えています。
regex - 三進数、正規表現
正規表現/オートマトンのヘルプを探しています。私は+
またはクリーネスターに限定されています。3 進数 (2 進数のように 3 のみ) を表す文字列を解析する場合、結果が 1 から 4 の倍数より小さいかどうかを知る必要があります。
たとえば、120 = 0*1+2*3+1*9 = 9+6 = 15 = 16-1 = 4(n)-1
.
パターンへのポインタでさえ本当に役に立ちます!
c++ - バイナリビットストリームとターナリビットストリームの変換?
任意の長さの2進数を正確な3進数表現に変換する必要があります。理想的には、ビットの配列が与えられるchar buffer[n]
と、アルゴリズムはトリットの配列(ビットのアナログ)を生成でき、その逆も可能です。そのようなアルゴリズムはありますか?
int
個人を3進数に変換する方法を知っています。
残念ながら、ビットストリームでlong long long int
は十分ではありません。よくわかりませんが、大きな整数ライブラリを使用すれば十分だと思います。また、3進表現を計算するためのより良い方法があるはずだと感じています。
視覚的な例:
int
ショートストリームは、にうまく収まるのでnth_trit
関数を使用できますが、ロングストリームは使用できないため、単純です。大きな整数ライブラリを使用する以外に、簡単な解決策はありません。
algorithm - Google Foobar チャレンジ: 特異なバランス
Google のコード チャレンジの一環として、基数 10 の正の整数を と の間0
でバランスの取れた 3 進数形式に変換する問題を解決しています。1000000000
制約の下でテストしたさまざまなケースで機能するようですが、何らかの理由でテスト 4 と 5 に失敗します。これで何が悪いのか分かりますか?
bits - 9 ビットの 3 進数の最小値を見つける方法
次の質問がありました: トライナリ コンピューターはビットの代わりにトリットを使用します (トリットは値 0、1、または 2 を持つことができます)。トライナリ コンピューターには、数値の 9 トリット浮動小数点表現があります。MST (Most Significant Trit) である Trit 8 は符号 trit (1 が正、2 が負) です。Trit 7 ~ 5 には指数が含まれ、バイアスは 13 です (つまり、値から 13 を引いて実際の指数を取得します)。Trit 4–0 には有意桁が含まれます
私。このように表現できる最小値は? ii. 表現できる最小の正の値は?
この 2 つの質問の答え方がよくわかりませんでした。で。負のビット 2 で num を開始し、次に見つけることができる最大の数 = 222..2 と ii. MSB を 1 に、exp を変更します。0になり、残りは私が見つけた最小の数値= 10..001になる可能性がありますが、正しい答えは次のとおりです。
私。-(2*3^13 + 2*3^12 +..+ 2*3^9) - LSB が 3^0 ではなく 3^9 で乗算されるのはなぜですか? ii. 3^(-17)
私の間違いに私を導き、それを正しく解決する方法を説明してもらえますか? ありがとう :)