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

ビットレベルで何かを行うことを伴う課題の場合。

18
浮動小数点XOR
あなたの仕事はとても簡単です。2つの浮動小数点を与え、それらのビットごとのxorまたはバイナリ表現を与え、それを浮動小数点として出力します。 例えば、 Normal: 16.7472 ^ 123.61 = 7.13402e-37 Binary: 01000001100001011111101001000100 ^ 01000010111101110011100001010010 = 00000011011100101100001000010110 Normal: 2.2 ^ 4.4 = 1.17549e-38 Binary: 01000000000011001100110011001101 ^ 01000000100011001100110011001101 = 00000000100000000000000000000000 Normal: 7.898 ^ 3.4444 = 1.47705e-38 Binary: 01000000111111001011110001101010 ^ 01000000010111000110101001111111 = 00000000101000001101011000010101 制限/説明: 入出力は、任意の便利な方法で指定できます。 このプログラムは、完全なプログラムでも機能だけでもかまいません。どちらでも構いません。 float型には任意のサイズを指定できますが、最小サイズは2バイトです。 標準的な抜け穴は禁止されています。 最短のコードが優先されます。

5
バイナリ畳み込み
バイナリ畳み込みは数値Mで記述され、数値に適用されNます。のバイナリ表現の各ビットについてM、ビットが設定されている場合(1)、出力の対応するビットは、対応するビットに隣接する2ビットをXORすることで与えられますN(必要に応じて折り返します)。ビットが設定されていない場合(0)、出力の対応するビットはの対応するビットによって与えられNます。 実用的な例(8ビット値): ましょうN = 150、M = 59。それらのバイナリ表現は(それぞれ)10010110と00111011です。 Mのバイナリ表現に基づいて、ビット0、1、3、4、および5が畳み込まれます。 ビット0の結果は、ビット1と7をXORすることで得られ1ます(折り返すため)。 ビット1の結果は、ビット0と2のXOR演算によって得られ0ます。 ビット2の結果は、元のビット2で与えられ、を生成し1ます。 ビット3の結果は、ビット2と4のXORによって得られ0ます。 ビット4の結果は、ビット3と5のXOR演算によって得られ0ます。 ビット5の結果は、ビット4と6のXORによって得られ1ます。 ビット6と7の結果は、元のビット6と7で与えられ、とを生成0し1ます。 したがって、出力は10100110(166)です。 チャレンジ とが与えられたときN、on Mによって記述されたバイナリ畳み込みを実行した結果を出力しMますN。入力および出力は、便利で一貫性があり、明確な形式である場合があります。Nそして、M常に(包括的)範囲[0, 255](8ビット符号なし整数)にあり、バイナリ畳み込みを実行するために、バイナリ表現を8ビットにパディングする必要があります。 テストケース 150 59 -> 166 242 209 -> 178 1 17 -> 0 189 139 -> 181 215 104 -> 215 79 214 -> 25 190 207 -> 50 61 …
15 code-golf  binary  integer  bitwise  code-golf  rational-numbers  code-golf  string  palindrome  code-golf  ascii-art  code-golf  code-golf  string  fibonacci  code-golf  math  sequence  code-golf  code-golf  string  palindrome  code-golf  string  code-golf  math  primes  source-layout  code-golf  sequence  binary  integer  code-golf  math  arithmetic  game  code-golf  restricted-source  palindrome  code-golf  restricted-source  palindrome  code-golf  combinatorics  binary  code-golf  string  math  code-golf  ascii-art  number  code-golf  cipher  code-golf  base-conversion  counting  code-golf  sequence  random  classification  code-golf  string  subsequence  code-golf  permutations  code-golf  string  code-golf  string  cipher  code-golf  kolmogorov-complexity  arithmetic  integer  code-golf  quine  markov-chain  code-golf  string  code-golf  code-golf  ascii-art  maze 

8
xorspaceの探索
整数セットのxorspaceは、開始整数を通常のビット単位のxor演算子(^)と組み合わせることによって取得できるすべての整数のセットです。たとえば、のxorspace (8, 4)は(0, 4, 8, 12)次のとおりです。0は4 ^ 4、12 は4 ^ 8であり、他の数値には到達できません。この定義では、開始番号が常に含まれることに注意してください(たとえば、4は4 ^ 4 ^ 4です)。 あなたの目標は、入力として非負整数のリストを取り、xorspaceの要素数を出力する最短のプログラムを書くことです。 標準的な抜け穴は禁止されています。 入力と出力は、通常の形式のいずれかです。入力は、有効で、空ではなく、重複がないことが保証されています。 コードはすべてのテストケースを1日以内に処理できる必要があります。 テストケース Input: 0 Output: 1 Input: 6 Output: 2 Input: 8 4 Ouput: 4 Input: 0 256 Output: 2 Input: 256 259 3 Output: 4 Input: 60 62 94 101 115 …

21
ゴルフビット織り
注:この課題の前半は、Martin Enderの前の課題であるVisualize Bit Weavingから来ています。 難解なプログラミング言語の悪には、「織り」と呼ばれるバイト値に対する興味深い操作があります。 基本的には、バイトの8ビットの順列です(パターンが対称であるため、どちらの端からカウントを開始してもかまいません)。 ビット0はビット2に移動します ビット1はビット0に移動します ビット2はビット4に移動します ビット3はビット1に移動します ビット4はビット6に移動します ビット5はビット3に移動します ビット6はビット7に移動します ビット7はビット5に移動します 便宜上、置換のその他の3つの表現を示します。サイクルとして: (02467531) マッピングとして: 57361402 -> 76543210 -> 64725031 そして、マッピングのペアのリストとして: [[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]] 8織った後、バイトは本質的にリセットされます。 例えば、数織り10011101(ある157ベース10に)を生成します01110110(これは118ベース10に)。 入力 唯一存在する256、すなわち有効な入力は、すべての整数間0と255包括的に。これはどのベースでも使用できますが、一貫している必要があり、選択したベースがベース10でない場合は指定する必要があります。 入力をゼロで埋めることはできません。 出力 ビットウィービングの結果を任意のベースで出力する必要がありますが、これもベース10でない場合は一貫性があり、指定する必要があります。 出力をゼロで埋めることができます。 関連:ビットウィービングの視覚化

9
CRC32ハッシュの計算
クレジット このチャレンジは@milesから始まりました。 入力文字列のCRC32ハッシュを計算する関数を作成します。入力は、任意の長さのASCII文字列です。出力は、その入力文字列のCRC32ハッシュになります。 説明 CRC32と他のCRCのアルゴリズムは基本的に同じであるため、ここではCRC3のみを示します。 まず、生成多項式があります。これは実際には4ビットの[n + 1]整数です(CRC32では33ビットになります)。 この例では、生成多項式は1101です。 次に、ハッシュされる文字列があります00010010111100101011001101。この例ではになります。 00010010111100101011001101|000 (1) append three [n] "0"s 1101 (2) align with highest bit 00001000111100101011001101|000 (3) XOR (1) and (2) 1101 (4) align with highest bit 00000101111100101011001101|000 (5) XOR (3) and (4) 1101 (6) align with highest bit 00000011011100101011001101|000 (7) XOR (5) …

8
ツェッケンドルフ表現の下での総和
ゼッケンドルフの定理は、すべての正の整数は隣接しないフィボナッチ数の合計として一意に表すことができることを示しています。この課題では、2つの数値の合計をツェッケンドルフ表現で計算する必要があります。 LET F NであるN番目のフィボナッチ数どこ F 1 = 1、 F 2 = 2、および すべてのk > 2の場合、F k = F k -1 + F k -2。 非負の整数nのツェッケンドルフ表現 Z(n)は、次のような正の整数のセットです。 N =Σ I ∈Z(N) F I 及び ∀ I ∈Z(N) iは + 1つの∉Z(N)。 (プロサでは:数値nのゼッケンドルフ表現は、これらのインデックスのフィボナッチ数の合計がnになるような正の整数のセットであり、2つの隣接する整数がそのセットの一部ではありません) 特に、ツェッケンドルフの表現は独特です。ツェッケンドルフ表現の例をいくつか示します。 Z(0)=∅(空のセット) Z(1)= {1} Z(2)= {2} Z(3)= {3}({1、2}は3のツェッケンドルフ表現ではありません) Z (10)= …

7
IPアドレスをマスクし、そのブロードキャストを与える
バックグラウンド このUnix.SEの質問(そしてもちろん私自身の回答)に触発されました。 インターフェイスにIPアドレスが指定されると、多くの場合、次のドット付き10進形式で指定されます。 a.b.c.d e.f.g.h どこa.b.c.dが実際のアドレスでe.f.g.hあり、ネットマスクです。 ネットマスクは、バイナリで表される場合、基本的に1ビットの束とそれに続く0ビットの束です。ネットマスクが指定されたIPアドレスに対してビット単位でAND演算されると、結果はアドレスのネットワーク部分、または単にネットワークアドレスになります。これはホストのルートテーブルにプログラムされるため、ホストはこのネットワーク宛てのデータをこのインターフェイスから送信することができます。 ネットワークのブロードキャストアドレスは、ネットワークアドレス(上記から)を取得し、すべてのホストビットを1に設定することによって導出されます。ブロードキャストアドレスは、特定のネットワーク内のすべてのアドレスに送信するために使用されます。 チャレンジ 入力としてドット付き10進数のIPアドレスと有効なネットマスクを指定し、出力としてネットワークアドレスとブロードキャストアドレスをドット付き10進数形式で提供します。 入力は、ドット付き10進形式の2つの文字列としてのアドレスとマスクでなければなりません。これを、2つの文字列要素のリストまたは配列、または適切な区切り文字で区切られたアドレスとマスクを持つ単一の文字列として、2つの個別の文字列として渡すことができます。 出力形式には、入力形式と同じ制約が適用されます。 例 Input Output 192.168.0.1 255.255.255.0 192.168.0.0 192.168.0.255 192.168.0.0 255.255.255.0 192.168.0.0 192.168.0.255 192.168.0.255 255.255.255.0 192.168.0.0 192.168.0.255 100.200.100.200 255.255.255.255 100.200.100.200 100.200.100.200 1.2.3.4 0.0.0.0 0.0.0.0 255.255.255.255 10.25.30.40 255.252.0.0 10.24.0.0 10.27.255.255

22
交互ビットスミアリング
前書き この課題では、整数のバイナリ表現の末尾のゼロをに設定する必要があります010101…。これは例を使用して説明するのが最適です。 整数を指定する400と、最初のステップはそれをバイナリに変換することです: 110010000 ご覧のとおり、5番目のビットは最下位1ビットであるため、そこから開始して下位ゼロを次のように置き換え0101ます。 110010101 最後に、それを10進数に変換します。 405 チャレンジ 正の整数が返されると、上記で定義されたプロセスの対応する結果値が出力されます。 ルール このシーケンスは、少なくとも1 1ビットの整数に対してのみ定義されるため、入力は常に≥1になります 代わりに、入力を文字列、数字のリスト(10進数)として受け取ることができます 無効な入力を処理する必要はありません テストケース 中間ステップを含むいくつかのテストケースを以下に示します(これらを印刷/返却する必要はありません)。 In -> … -> … -> Out 1 -> 1 -> 1 -> 1 2 -> 10 -> 10 -> 2 3 -> 11 -> 11 -> 3 4 -> 100 -> 101 …

3
音素アブギダ
キャラクター これらのUnicode文字を英語のIPA子音と呼びましょう: bdfhjklmnprstvwzðŋɡʃʒθ そして、これらのUnicode文字を英語のIPA母音と呼びましょう : aeiouæɑɔəɛɜɪʊʌː (はい、ː単なる長母音マークですが、この課題のために母音として扱います。) 最後に、これらは一次および二次ストレスマークです: ˈˌ ことに留意されたいɡ(U + 0261)小文字gではなく、一次ストレスマーカーˈ(U + 02C8が)アポストロフィではなく、ː(U + 02D0)は、結腸ではありません。 あなたのタスク 単語が与えられたら、続く子音の上に母音を重ね、前に来る子音の下に強勢マーカーを置きます。(質問のタイトルが示唆するように、子音母音シーケンスがユニットとしてまとめられているような書記体系はabugidaと呼ばれます。)入力が与えられると、出力ˈbætəlʃɪpを生成します。 æə ɪ btlʃp ˈ 単語は上に定義した、子音、母音、およびストレスマークの文字列であることが保証されます。連続する強勢記号は決して存在せず、それらは常に単語の先頭および/または子音の前に置かれます。 テストケース 母音が連続している場合があります。例えば、kənˌɡrætjʊˈleɪʃənとなり ɪ ə æ ʊeə knɡrtjlʃn ˌ ˈ 単語が母音で始まる場合、子音と「ベースライン」に印刷:əˈpiːlとなり ː i əpl ˈ 初期の強調母音を含むテストケース:にˈælbəˌtrɔsなります ə ɔ ælbtrs ˈ ˌ 長い言葉:にˌsuːpərˌkaləˌfrædʒəˌlɪstɪˌkɛkspiːæləˈdoʊʃəsなる æ ː ː ʊ uə aə …

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 …

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 

8
整数から可変ビット数への全単射マッピング
可変ビット数は、0ビット以上の配列です。だから、[0, 1]可変ビット数があるが、そうです[]。 すべての整数が配列と1対1(全単射)でマッピングされるように、負でない整数が可変ビット数を返す関数またはプログラムを作成します。 そのようなマッピングは無限にあり、自由に作成できますが、1対1 でなければなりません。マッピングは概念的に任意のサイズの整数に対して1対1である必要がありますが、優先言語(Cなど)の型の数値制限のために大きな整数に対して実装が失敗しても問題ありませんint。 1対1マッピングではないものの例として、整数の2進数をリストするだけです。このようなシステムでは5となる[1, 0, 1](又は0b101)、しかしので、一対一ではない0b0101か、[0, 1, 0, 1]また5を意味します。 整数をスキップするとマッピングが1対1ではないことはかなり明白なはずです(たとえば、5では機能しません)が、可変ビット配列のスキップも1ではないことを明確にしたいと思います一対一。を含むすべての可能な可変ビット配列にマップする必要があります[]。 バイト単位の最短コードが優先されます。

9
スーパーフォールディングナンバー
ここではすでに折りたたみ数を定義しています。 しかし、これからスーパーフォールディングナンバーを定義します。スーパーフォールディング数は、十分に折り畳まれると、最終的には2の累乗よりも1少ない数になります。フォールディングの方法は、フォールディング数の質問とは少し異なります。 フォールディングアルゴリズムは次のようになります。 バイナリ表現を取る 例:5882 1011011111010 3つのパーティションにそれをこぼした。前半、後半、中桁(奇数桁の場合) 101101 1 111010 中央の数字がゼロの場合、この数値は折りたたむことができません 後半を逆にして前半に重ね合わせる 010111 101101 桁を追加します 111212 結果に2がある場合、数値は折りたたむことができません。それ以外の場合、新しい数値は折りたたみアルゴリズムの結果です。 連続した1つの文字列に折りたたむことができる場合、その番号はスーパーフォールディング番号です。(すべての折りたたみ番号もスーパー折りたたみ番号です) あなたの仕事は、数値を取り込んで、その数値がスーパーフォールディング数であれば真の値を出力し、そうでなければ偽のコードを書くことです。プログラムの規模で採点されます。 例 5200 バイナリに変換: 1010001010000 半分に分割: 101000 1 010000 真ん中は1つなので、続けて半分を重ね合わせます。 000010 101000 それらを追加しました: 101010 2はないので、半分に分割し続けます。 101 010 折りたたみ: 010 101 111 結果は111(10進数で7)なので、これはスーパーフォールディング番号です。 テストケース 最初の100個のスーパーフォールディング番号は次のとおりです。 [1, 2, 3, 6, 7, 8, 10, 12, …

28
文字列からビットへの移行
仕事 コードポイントが0〜128(排他的)である1つ以上のASCII文字の入力文字列が与えられた場合、以下を実行します。 各文字を7ビットのASCIIコードに変換します(ASCIIコードが7ビット未満の場合は、先行ゼロビットを挿入します) すべてのビットを連結します(これにより、は文字数である7*nビットになりますn) このビットストリームの各ビットについて、前のビットと異なる場合は1を出力し、それ以外の場合は0を出力します。最初の出力ビットは常に1です。 例 入力: Hi 出力: 11011001011101 説明: 文字列「Hi」にはASCIIコードがあります 72 105 これはビットです: 1001000 1101001 そして、遷移ビットインジケータ: 11011001011101 これはコードゴルフです。最小バイト数が優先されます。 テストケース テストケース1: Hello World! 110110010101110011010101101010110001110000111110000110000001011101101010101100110001 テストケース2: %% COMMENT %% 1110111111011111100001100010010100001010110101011010011101010011111110011000001101111110111 テストケース3(Luis Mendoへのクレジット): ## 11100101110010 Luis MendoがMATLで9バイトの最短のソリューションを提供してくれました!

11
テキストファイルの17番目ごとのビットを1にするプログラムを記述します。
私の同僚と私は、時々嫌うレガシーソフトウェアに取り組んでいます。実行するたびに、デバッグアサートがどこにでも飛んでくるので、何かが機能するという保証はありません。このコードゴルフラウンドの動機は、同僚がソフトウェアについて次のように述べたことにあります。 「このプログラムを実行するたびに、ハードドライブの17番目のビットがすべて1に変わると言ういくつかの利用規約に同意しているようです」 目標:ファイルの正確なコピーを作成し、テキストファイルの17番目ごとのビットを1にするプログラムを作成する あなたはありませ回しEVERYのそれだけですべての17ビットをターゲットにしていることをいくつかの知性を示さなければなりません。1.つまり、あなたのプログラムにファイルのビットを あなたはありませ一切の形状または形態で、元のファイルへの書き込み 受賞者は、月末の最小のプログラムの提出であります これを楽しんでください!行こう!

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