Questions tagged «bitwise»

对于涉及在位级别上做某事的挑战。

18
浮点异或
您的任务非常简单。给定两个浮点数,将它们按位进行异或,然后将其输出为浮点数。 例如, 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 限制/说明: 输入/输出可以通过任何方便的方法给出。 该程序可以是完整程序,也可以只是功能。两者都很好。 浮点类型可以是任意大小,但最小大小为2个字节。 禁止出现标准漏洞。 最短的代码获胜。

5
二进制卷积
二进制卷积由数字描述M,并应用于数字N。对于的二进制表示形式中的每个位M,如果将该位设置为(1),则通过将与相应位中的相应位相邻的两个位进行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和M,输出执行Mon上描述的二进制卷积的结果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运算符(^)组合获得。例如,x的xorspace (8, 4)是(0, 4, 8, 12):0是4 ^ 4,12 是4 ^ 8,并且没有其他数字可以达到。请注意,根据此定义,始终包括起始编号(例如4为4 ^ 4 ^ 4)。 您的目标是编写最短的程序,该程序将非负整数列表作为输入,并输出其xorspace中的元素数量。 禁止出现标准漏洞。 输入和输出可以采用任何常用格式。输入内容被保证为有效,非空且没有重复。 您的代码应该能够在不到一天的时间内处理所有测试用例。 测试用例 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。 深奥的编程语言 Evil对字节值进行了有趣的操作,称之为“编织”。 本质上是字节的八位的排列(因为模式是对称的,所以我们从哪一端开始计数并不重要): 位0移至位2 位1移至位0 位2移到位4 位3移至位1 位4移至位6 位5移至位3 位6移至位7 位7移至位5 为方便起见,这是置换的其他三种表示形式。作为一个周期: (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。可以采用任何基数,但是必须保持一致,并且如果选择的基数不是十进制,则必须指定它。 你可能不会对输入进行零填充。 输出量 您应该以任何基数输出位编织的结果,该结果还必须一致,并且如果不是十进制,则必须指定。 您可以将输出零填充。 相关:可视化位编织

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
Zeckendorf表示下的求和
Zeckendorf定理表明,每个正整数都可以唯一地表示为不相邻的斐波那契数之和。在此挑战中,您必须计算Zeckendorf表示形式中两个数字的和。 令F n为第n个斐波那契数,其中 F 1 = 1, F 2 = 2,并且 对于所有k > 2,F k = F k -1 + F k -2。 非负整数n的Zeckendorf表示 Z(n)是一组正整数,使得 Ñ =Σ 我 ∈Z(Ñ) ˚F 我 和 ∀ 我 ∈Z(Ñ) 我 + 1个∉Z(Ñ)。 (在prosa中:数字n的Zeckendorf表示是一组正整数,因此这些索引的斐波那契数之和为n,并且该集合中没有两个相邻的整数) 值得注意的是,Zeckendorf表示法是唯一的。以下是Zeckendorf表示形式的一些示例: Z(0)=∅(空集) Z(1)= {1} Z(2)= {2} Z(3)= {3}({1,2}不是3的Zeckendorf表示) Z (10)= {5,2} …

22
交替涂抹
介绍 此挑战要求您将整数二进制表示形式的尾随零设置为010101…,这最好用一个示例进行说明: 给定整数400,第一步是将其转换为二进制: 110010000 如我们所见,第五位是最低有效1位,因此从此处开始,我们将低位零替换为0101: 110010101 最后,我们将其转换回十进制: 405 挑战 给定正整数返回/输出,上述定义过程的相应结果值。 规则 此序列仅针对具有至少一位的整数定义1,因此输入将始终≥1 您可以将输入作为字符串,而不是数字列表(十进制) 您不必处理无效的输入 测试用例 以下是一些带有中间步骤的测试用例(您不必打印/返回这些用例): 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ə …

7
屏蔽IP地址并广播
背景 受这个Unix.SE问题(当然还有我自己的回答)的启发。 当为接口指定IP地址时,通常以点分十进制形式给出: a.b.c.d e.f.g.h 其中a.b.c.d,实际地址e.f.g.h是子网掩码。 当用二进制表示时,网络掩码基本上是一堆1比特,然后是一堆0比特。当将网络掩码与给定的IP地址按位与时,结果将是地址的网络部分,或者只是网络地址。这将被编程到主机的路由表中,以便主机知道从该接口发送发往该网络的任何内容。 通过从上面获取网络地址并将所有主机位设置为1,可以得出网络的广播地址。广播地址用于发送到给定网络内的所有地址。 挑战 给定点分十进制的IP地址和有效的网络掩码作为输入,请以点分十进制格式提供网络地址和广播地址作为输出。 输入的地址和掩码必须为点分十进制格式的两个字符串。您可以将其作为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

6
实现一个8位加法器
挑战 实现一个函数,该函数接受值范围为0-255的两个整数,并返回这些整数的总和256。您只能使用按位取反(〜),按位或(|),移位运算符(>>,<<) ,以及赋值(=)。 您不能使用的东西包括(但不限于) 加,减,乘和除 循环 条件语句 函数调用 最好使用二进制或二进制取反以及移位操作。如果出现平局,则最受欢迎的解决方案将获胜。与往常一样,存在标准漏洞。 这是一个简单的2位加法器的示例。它使用77个二进制取反,28个二进制“或”和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)), …

2
数论解释器,模n
一个句子数论(我们的目的)的是下列符号序列: 0和'(后继) -后继手段+1,所以0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加法)和*(乘法) = (等于) (和)(括号) 逻辑运算符nand(a nand b是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]是将可变比特数,但这样的[]。 编写一个函数或程序,给定一个非负整数,该函数或程序将返回可变数量的位,以使每个整数与数组具有一对一(双射)映射。 此类映射的数量是无限的,您可以随意构造一个,但必须是一对一的。对于任意大小的整数,映射在概念上必须为一对一,但是如果由于首选语言(例如C的类型)的数值限制而导致对大整数的实现失败,则可以int。 作为不是一对一映射的示例,只需列出整数的二进制数字即可。在这样的系统中5变成[1, 0, 1](或0b101),但不是一对一的,因为0b0101或[0, 1, 0, 1]也意味着5。 显而易见,如果跳过整数(例如,它不适用于5),则映射不是一对一的,但我想明确指出,跳过可变位数组也不是一个一对一。您必须映射到每个可能的可变位数组,包括[]。 以字节为单位的最短代码获胜。

9
超级折叠号码
我们已经在这里定义了折号。 但是现在我们将定义一个超级折叠数。超级折叠数字是一个数字,如果折叠足够的次数,它将最终小于2的幂。折叠的方法与折叠数问题稍有不同。 折叠算法如下: 以二进制表示 例如5882 1011011111010 将其洒入三个分区。前半部分,后半部分和中间数字(如果它的位数为奇数) 101101 1 111010 如果中间数字为零,则该数字不能折叠 反转后半部分并叠加在前半部分上 010111 101101 将数字添加到位 111212 如果结果中有2,则不能折叠该数字,否则新数字是折叠算法的结果。 如果数字可以折叠为连续的一串,则该数字为超级折叠数字。(所有折号也是超级折号) 您的任务是编写一个接受数字的代码,如果该数字是“超级可折叠”数字,则输出一个真实值,否则为“伪造”。您将在程序的大小上得分。 例子 5200 转换为二进制: 1010001010000 分成两半: 101000 1 010000 中间是一个,因此我们继续叠加两半: 000010 101000 添加了它们: 101010 没有二分之一,所以我们继续分成两半: 101 010 折: 010 101 111 结果是111(十进制为7),所以这是一个超级折叠数。 测试用例 前100个超级折号是: [1, 2, 3, 6, 7, 8, 10, 12, …

11
编写一个程序,将文本文件的第17位变成1
我和我的同事正在开发我们有时讨厌的旧版软件。每当您运行它时,调试断言就会四处飞扬,并且不能保证任何事情都会起作用。这轮代码高尔夫的动机来自于我的同事对我们的软件发表了以下看法。 “就像每次运行该程序一样,您同意某些服务条款,这些条款说硬盘上的第17位将变成1。” 目标:编写一个程序,该程序将精确复制文件并将文本文件的第17位变成1 你可能不把EVERY文件的位为1,即你的程序必须表现出一定的智能,它仅针对每第17位 你可能不写入到原始文件中的任何方式或形式 该获奖者是在月底最小的程序提交 玩得开心!走!

28
字符串到位转换
任务 给定一个或多个ASCII字符的输入字符串,其代码点在0到128之间(不包括),请执行以下操作: 将每个字符转换为其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)提供了9个字节的MATL最短解决方案!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.