Questions tagged «atomic-code-golf»

原子代码高尔夫是根据您定义的语言的特定片段中的操作次数来评分的。

16
确定整数是否可被3整除
您的目标是确定数字是否可被3整除而不使用条件句。输入将是一个从0到255的无符号8位数字。鼓励创新! 您只能使用 平等/不等式(==,!=,>,<,>=,<=) 算术(+,-,x) 逻辑运算符(!非,&&和,|| 或) 位运算符(~未,&和,|或,^异或,<<,>>,>>>算术和逻辑左和右移位) 常量(如果保持较小的值会更好) 变量分配 0如果为假,1则输出,如果为真。 适用标准原子代码高尔夫球规则。如有任何疑问,请在评论中保留。示例方法在这里。令牌是以上任何一种,但不包括常量和变量。

2
使用NAND逻辑门构建乘法器
基于我之前相同类型的问题,使用NAND逻辑门构建加法器,这一次要求您乘以而不是加。 建立的(双线)NAND逻辑门的图,将采取的输入线A1,A2,A4,B1,B2,B4,代表两个二进制数A来B对输出线从0到7,并返回值C1,C2,C4,C8,C16,和C32,表示C,这是产品A和B。 您的分数取决于您使用的与非门的数量(每个门1分)。为简化起见,您可以在图表中使用AND,OR,NOT和XOR门,并具有以下相应的分数: NOT: 1 AND: 2 OR: 3 XOR: 4 这些分数中的每一个都对应于构建相应门所需要的NAND门数量。 最低分获胜。

19
使三角计划有效
三角性是Xcoder 先生开发的一种新的esolang ,其代码结构必须遵循非常特定的模式: 对于第nth行代码,其上必须完全2n-1有程序的字符。这将导致三角形/金字塔形,第一行仅包含一个字符,其余行以2为增量增加。 每行.的左侧和右侧都必须用s 填充,以使字符以其行为中心,并且所有行都应填充为相同的长度。如果l定义为程序中的行数,则程序中的每一行的长度必须为2 * l - 1 例如,左侧的程序有效,而右侧的程序无效: Valid | Invalid | ...A... | ABCDE ..BCD.. | FGH .EFGHI. | IJKLMN JKLMNOP | OPQRS 当布置在有效结构中时,该名称变得显而易见。 任务 您的任务是将单个行字符串作为代表Triangularity代码的输入,并将其输出转换为有效代码,如上所述。 I / O规格: 输入将仅包含范围内的字符 0x20 - 0x7e 输入的长度始终是一个平方数,因此可以很好地填充。 您必须将点用于输出填充,而不要使用其他东西。 您可以通过任何可接受的方法输入和输出。这是一个代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 input ---- output g ---- g PcSa ---- .P. …
19 code-golf  string  code-golf  combinatorics  code-golf  math  number  code-golf  matrix  code-golf  string  decision-problem  code-golf  internet  code-golf  number  number-theory  integer  expression-building  code-challenge  primes  cops-and-robbers  obfuscation  code-challenge  primes  cops-and-robbers  obfuscation  code-golf  string  balanced-string  code-golf  quine  code-generation  code-golf  matrix  code-golf  tips  c#  code-golf  ascii-art  code-golf  ascii-art  source-layout  code-golf  quine  source-layout  popularity-contest  language-design  code-golf  array-manipulation  subsequence  code-golf  matrix  math  code-challenge  game  graph-theory  atomic-code-golf  code-golf  number  integer  polynomials  equation  code-golf  array-manipulation  sorting 

5
是否有更多的硬物或软物
与假设分析书的开头相切。 输入是一个由空格组成的矩形,如字符串,字符串列表等,其对象由#内部组成: ######## # # ######## ### #### ### #### ### 对象将始终是非相交,非接触的矩形。软对象的定义是#中间没有用填充的对象,而只是边界,而硬对象则是填充的对象。具有宽度或高度的对象<=2被认为是坚硬的。所有对象都是硬的或软的。 如果输入,输出中有更多的硬对象"Hard",如果较软,则输出"Soft",如果相等则输出"Equal"。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 这些情况不是全部输入,而是每个对象应表征的内容。实际输入将类似于问题顶部的ascii艺术。 硬 # #### ## ## ########## ########## ########## 柔软的 ### # # ### ################### # # # # # # ################### #### # # # # # # # # # # # # …
19 code-golf  ascii-art  counting  code-golf  number  grid  decision-problem  chess  code-golf  grid  graph-theory  chess  code-golf  math  geometry  code-golf  arithmetic  roman-numerals  fastest-code  code-golf  math  geometry  code-golf  string  cryptography  code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

2
写成数论风格
使用符号编写数学陈述: There exists at least one non-negative integer(写为E存在量词) All non-negative integers(写为A,通用量词) + (加成) * (乘法) = (平等) >,<(比较运算符) &(和),|(或),!(非) (,)(用于分组) 变量名 等价于以下陈述 存在一个有理数a,使得π+ e * a是有理数。 (当然,π= 3.1415 ...π=3.1415 ...\pi =3.1415...是等于圆周除以圆直径的数学常数,e = 2.7182 ...Ë=2.7182 ...e=2.7182...是欧拉数) 您必须证明您的陈述确实等同于上述陈述。 显然,执行此操作的“最短”方法是证明该语​​句为真或为假,然后用琐碎的真或假声明进行回答,因为所有的真声明彼此都等效,所有的假陈述也彼此等同。 但是,给定语句的真值在数学上是一个未解决的问题:我们甚至不知道π+ eπ+Ë\pi+e是否不合理!因此,除非进行开创性的数学研究,否则面临的挑战是找到一个“简单”的等效语句,证明其等效性,并尽可能简短地对其进行描述。 计分 E A + * = > < & |并将!每个分数加1。(并且)不要添加任何分数。每个变量名称将分数加1。 例如,E …

4
一周中压缩的天数
输入星期几列表,则输出列表中最短的排序表示形式。 输入的格式是由一个或多个双字符子串的字符串Su(星期日), Mo(星期一), Tu(等), ,We,Th, Fr和Sa。输入不一定必须以排序的顺序给出。 要将输入转换为输出格式, 从星期天开始按星期几对输入进行排序(例如ThMoSaSuFrTuWe-> SuMoTuWeThFrSa)。 如果不引起歧义,请将缩写词减少到一个字母。例如,之所以SuMoTuWe成为,SMTW是因为第一个S不可能在星期六,因为这样会使输出未排序(与T相同)。但是,ThFrSa应该成为ThFS,因为星期二和星期四都在星期五之前,并将其减小以TFS产生歧义。 如果输出为now MTWTF,则D改为输出(代表“ 工作日 s”)。同样,SS应该成为E一周结束。最后, SMTWTFS应该成为A对所有天。 输入和输出都必须是单个字符串。 由于这是code-golf,因此以字节为单位的最短代码为准。 测试用例: In Out | In Out -----------------------|-------------------- SuTu STu | SuTuWe STW SuTuSa STuS | SuWeTh SWT TuThSa TTS | TuThSu STT Su Su | Sa Sa WeTh WT | FrTh ThF WeTu …

15
查找最多3个数字而不分支
这次围绕您的目标是不使用分支或循环来查找最多3个整数(从-(2 ^ 31)到2 ^ 31-1在二​​进制2的补码中)。 您只能使用 不等式/平等(==,>,>=,<,<=,!=)这些计数为2个令牌。 算术(+,-,*,/) 逻辑运算符(!非,&&和,|| 或) 位运算符(~未,&和,|或,^异或,<<,>>,>>>算术和逻辑左和右移位) 常数。0个代币 变量分配。0个代币 输入3个变量为a,b和c。输出最大数量。 适用标准原子代码高尔夫球规则。如有任何疑问,请在评论中保留。带有特殊规则的上述任何一项都是令牌。

1
Google的跳兔
2017年12月4日,Google Doodle是一款具有兔子功能的图形编程游戏。后来的级别相当重要,它们似乎是原子高尔夫球挑战的绝佳候选人。 细节 游戏 有四种可用的动作:向前跳,向左转,向右转和循环。这些动作中的每一个都是一个令牌,对应于它们在游戏中都是一个图块这一事实。 兔子可以面对四个正交方向(即北,南,东,西)。 兔子可以向前跳(在其面对的方向上移动一个正方形)并向左或向右转。 循环内部可能有任意数量的其他移动,包括其他循环,并且它们的迭代计数是任何正整数(尽管从技术上讲,游戏允许迭代计数为0)。 棋盘是一组网格对齐的正方形,并且兔子可以在相邻的正方形之间跳跃。 兔子无法跳入虚空。意味着企图跳板没有任何作用。(这显然使某些人感到惊讶,而另一些人则感到失望。) 正方形已标记或未标记。当兔子在正方形上时,它会被标记。 标记所有正方形后,该级别完成。 您可能会认为存在解决方案。 您的密码 目标:给定董事会,找到一个或多个最短的解决方案。 输入是构成木板的正方形位置的列表(区分标记的正方形和未标记的正方形),输出是移动的列表。输入和输出格式完全无关紧要,只要它们是人类可读和可理解的即可。 获胜标准:每块板在一分钟内找到的最短解决方案的移动总数。如果您的程序找不到任何特定板的解决方案,则该板的分数为(5 *平方数)。 请不要以任何方式对解决方案进行硬编码。您的代码应该能够将任何面板作为输入,而不仅仅是下面示例中给出的面板。 例子 解决方案隐藏在剧透中,使您有机会先玩游戏,然后自己尝试其中的一些。另外,下面仅针对每个提供一种解决方案。 S是兔子的起始正方形(朝东),#是未标记的正方形,并且O是标记的正方形。对于移动,我的表示法是F=向前跳,L=向左转,R=向右转,并LOOP(<num>){<moves>}表示一个循环,每次循环<num>执行<moves>。如果循环可以运行超过最小次数的任何次数,<num>则可以忽略(即无限工作)。 1级: S## FF 第2级: S## # # LOOP(2){FFR} 3级: S## # # ### 循环{FFR} 第4级: ### # # ##S## # # ### LOOP {F LOOP(7){FL}}(由DJMcMayhem找到) 5级: ##### # …

1
使用NAND逻辑门构建微型浮点加法器
甲minifloat是具有非常少的比特的浮点数的二进制表示。 此问题中的最小浮点数将定义为6位数字m,其具有以下表示形式: 1位代表数字的符号。此位将是0如果数字为正,1如果该数字为负。 3位代表数字的指数,偏移量为3(即的指数110实际上代表2 3的因数,而不是2 6的因数)。 指数是000指次正规数。尾数是整数的小数部分0乘以最低可能指数(在这种情况下为2 -2)的系数。 2位代表数字的尾数。如果指数不是000或111,则2位代表a之后的小数部分1。 的指数111表示infinity尾数是否为0,NaN否则为(不是数字)。 在Wikipedia文章中,这将被称为(1.3.2.3)minifloat。 此微型浮点数表示的一些示例: 000000 = 0.00 = 0 000110 = 1.10 × 2^(1-3) = 0.375 001100 = 1.00 × 2^(3-3) = 1 011001 = 1.01 × 2^(6-3) = 10 011100 = infinity 011101 = NaN 100000 = -0.00 = -0 100011 …

2
密集包装的十进制(DPD)至十进制,带有逻辑门
受到nandgame最近在TNB上的普及以及我以前的挑战的启发。 背景 密集包装的十进制(DPD)是一种以二进制有效存储十进制数字的方法。它以10位存储三位十进制数字(000至999),这比朴素的BCD(以4位存储一位数字)的效率要高得多。 换算表 DPD旨在通过简单的从上到下的模式匹配在位和数字之间轻松转换。每个位模式定义数字有多少个高数字(8-9),它们在哪里以及如何移动这些位以形成小数表示。 以下是从DPD的10位到三位十进制数字的转换表。每个十进制数字都表示为4位二进制(BCD)。双方都从最高位到最低位从左到右书写。 Bits => Decimal (Digit range) a b c d e f 0 g h i => 0abc 0def 0ghi (0-7) (0-7) (0-7) a b c d e f 1 0 0 i => 0abc 0def 100i (0–7) (0–7) (8–9) a b c g h …

3
出色的扫雷
Hexcells是一款基于Minesweeper的六边形游戏。(完全披露:我与Hexcells无关。事实上,我并不真正喜欢游戏。)大多数Hexcells规则都可以很容易地用Generalized Minesweeper(在任意图表上播放的Minesweeper)表示。{X}和-X-规则是最困难的一个。 该{X}规则告诉我们,一个X地雷与地雷接壤,所有这些地雷以连续的路径彼此接壤。例如,如果我们有董事会: ? ? ? {3} ? ? ? 排雷的6种可能性是 * . . . . . . * * * * * * {3} . * {3} . . {3} * . {3} * . {3} * * {3} . * . * * * * . * . …

5
一举两得
正如我们在这个问题中看到的那样,可以用广义Minesweeper的简单连接词来表示复杂的逻辑语句。但是,广义扫雷器仍有冗余。 为了避免这些冗余,我们定义了一个名为“ Generalized-1 Minesweeper”的新游戏。 Generalized-1 Minesweeper是在任意图形上播放的Minesweeper版本。该图具有两种类型的顶点,即“指示器”或“值”。值可以是开或关(地雷或哑巴),但玩家不知道其状态。指示器会告诉您,一个相邻的电池正好在(地雷)上。指标本身不算地雷。 例如,下面的通用扫雷板告诉我们,单元格A和B要么都是地雷,要么都不是地雷。 (在图中,指示器以灰色标记,而值则为白色) 与普通的扫雷器不同,在常规的扫雷器中,单击关闭的值即可显示指标,而在通用扫雷器中则没有这种机制。玩家只需确定图表的哪些状态可以满足其指标。 您的目标是制作一辆2Generalized-1扫雷车。您将在Generalized-1 Minesweeper中构建一个结构,以便有8个特定的像元,其所有可能的值配置都恰好有两个像元。这意味着它的行为与2传统扫雷器的行为完全相同。在编写解决方案时,您不应该在意价值单元格的具体价值。(在回答H.PWiz的问题时,允许某些值单元可以从状态中推论得出) 计分 您的答案将由最终图形中的顶点数减去8(对于8个输入)得到评分,得分越低越好。如果此标准中有两个答案,则平局决胜局将为边数。

4
找回密码
普通的N位数字密码锁由N个旋转盘组成。每个光盘上都有按顺序刻印的数字0-9,您需要将它们转换为正确的密码才能打开它。显然,如果您不知道密码,则在解锁之前最多需要尝试10 N次。那没意思。 因此,让我们考虑一下组合锁的一种变体,将其命名为距离公开锁。 在每次尝试不打开距离显示锁的尝试中,它都会响应最小数量的动作以解锁。 一个运动是通过一个位置定义为一个旋转,例如,它需要从1个运动890到899,并且从9个运动137到952。 挑战 给定具有密码未知的距离揭示锁,请尝试以最少的尝试次数(而不是移动)打开锁,同时防止程序过长。 规则和计分 您应该编写一个完整的程序,该程序将从stdin输入并将其输出到stdout。该程序应执行以下输入/输出: Start Input an integer N (number of digits) from stdin Do Output a line containing decimal string of length N (your attempt) to stdout Input an integer K (response of the lock) from stdin While K not equal 0 End 您的程序最多可以处理N …

4
使用“与非”门构建一个4-vertex Connectedness Tester
阿连接图形是包含任意两个顶点之间的路径的曲线图。 挑战 建立一个[2-input NAND-gate]电路,确定是否连接了4-vertex图。 (一个门的2个输入可以是相同的输入位或另一个门。) 如果已连接图形,则输出True,否则输出False。 输入值 具有4个顶点的简单图的六个可能的边: [ 0 ë 1,0 ë 2,1 ë 2,0 ë 3,1 ë 3,2 ë 3 ] 其中, e b表示顶点a和b之间是否存在边 连接等于以下条件: 如果少于3个输入为True,则输出False。 如果三个以上输入为True,则输出True。 如果恰好3个输入为True,并且它们形成一个三角形,则输出False。 否则,输出True。 使用最少门的答案将获胜。结将被 最低的电路深度(从输入到输出的最长路径的长度)破坏 。

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)), …

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.