Questions tagged «c»

这个挑战与C语言有关。请注意,通常不建议要求答案使用特定语言的挑战。

13
谢尔宾斯基层
首先,/\您可以通过在下面添加一条线来创建类似于Sierpinski三角形的图案,从而... 任何松散的分支/或\再次分裂为两个分支:/\。 分支的任何碰撞都将\/死,其下无任何东西(只有空格)。 重复这些规则将产生 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ etc... (ViHart的启发) 编写一个程序或函数,该程序或函数接受一个正整数N,并将此模式的前N行打印到stdout,且前导或尾随空格不超过所需数量。 例如,如果输入是1输出,则必须为 /\ 如果输入是2输出,则必须为 /\ /\/\ 如果输入是8输出,则必须为 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ /\ /\ /\ /\ /\/\/\/\/\/\/\/\ 等等。 字节最少的代码获胜。

4
计算实际数字
定义 正整数n是一个实际数字(OEIS序列A005153),前提是所有较小的正整数都可以表示为的不同除数之和n。 例如,18是一个实际数字:其除数为1、2、3、6、9和18,小于18的其他正整数可以形成如下: 4 = 1 + 3 5 = 2 + 3 7 = 1 + 6 8 = 2 + 6 10 = 1 + 9 11 = 2 + 9 12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 …
18 code-golf  sequence  number-theory  code-golf  code-challenge  sorting  c  code-golf  restricted-source  code-golf  natural-language  code-golf  tree-traversal  file-system  popularity-contest  pi  polyglot  code-golf  game  sliding-puzzle  code-golf  game  minesweeper  code-challenge  ascii-art  code-challenge  popularity-contest  graphical-output  code-challenge  popularity-contest  hello-world  underhanded  obfuscation  code-golf  code-golf  function  code-golf  code-golf  code-golf  popularity-contest  rosetta-stone  code-golf  primes  code-golf  restricted-source  popularity-contest  number  sequence  code-golf  restricted-source  popularity-contest  graphical-output  code-golf  popularity-contest  code-golf  primes  code-golf  game  code-golf  math  popularity-contest  popularity-contest  code-generation  popularity-contest  code-bowling  code-golf  popularity-contest  underhanded  code-golf  metagolf 

1
创建一个C预处理程序
目的是为C语言创建一个预处理器,以您喜欢的语言在源代码大小(以字节为单位)方面尽可能地小。它的输入将是C源文件,其输出将是经过预处理的源代码。 它需要处理的项目为:注释删除(行/块),#include指令(通过在相对路径中打开文件并在需要的位置替换文本),#define,#undef,#if, #elif,#else,#endif,#ifdef,#ifndef和define()。其他C预处理程序指令,例如#pragmas或#errors,可以忽略。 无需在#if指令中计算算术表达式或比较运算符,我们假设该表达式只要包含非零的整数(它的主要用途将用于define()指令),就将计算为true。可能的输入和输出示例如下(为了更好的显示,输出文件中可能的多余空格被剪裁了,不需要您的代码这样做)。能够正确处理以下示例的程序将被认为是足够的。 ----Input file: foo.c (main file being preprocessed) #include "bar.h" // Line may or may not exist #ifdef NEEDS_BAZZER #include "baz.h" #endif // NEEDS_BAZZER #ifdef _BAZ_H_ int main(int argc, char ** argv) { /* Main function. In case that bar.h defined NEEDS_BAZ as true, we call baz.h's …
18 code-golf  string  c 

7
C:用固定时间代码替换AES FIPS-197 SubBytes表
在FIPS-197(高级加密标准,称为AES)中,大量使用SubBytes,可以将其实现为 unsigned char SubBytes(unsigned char x) { static const unsigned char t[256] = { 0x63,0x7C,0x77,0x7B,0xF2,0x6B,0x6F,0xC5,0x30,0x01,0x67,0x2B,0xFE,0xD7,0xAB,0x76, 0xCA,0x82,0xC9,0x7D,0xFA,0x59,0x47,0xF0,0xAD,0xD4,0xA2,0xAF,0x9C,0xA4,0x72,0xC0, 0xB7,0xFD,0x93,0x26,0x36,0x3F,0xF7,0xCC,0x34,0xA5,0xE5,0xF1,0x71,0xD8,0x31,0x15, 0x04,0xC7,0x23,0xC3,0x18,0x96,0x05,0x9A,0x07,0x12,0x80,0xE2,0xEB,0x27,0xB2,0x75, 0x09,0x83,0x2C,0x1A,0x1B,0x6E,0x5A,0xA0,0x52,0x3B,0xD6,0xB3,0x29,0xE3,0x2F,0x84, 0x53,0xD1,0x00,0xED,0x20,0xFC,0xB1,0x5B,0x6A,0xCB,0xBE,0x39,0x4A,0x4C,0x58,0xCF, 0xD0,0xEF,0xAA,0xFB,0x43,0x4D,0x33,0x85,0x45,0xF9,0x02,0x7F,0x50,0x3C,0x9F,0xA8, 0x51,0xA3,0x40,0x8F,0x92,0x9D,0x38,0xF5,0xBC,0xB6,0xDA,0x21,0x10,0xFF,0xF3,0xD2, 0xCD,0x0C,0x13,0xEC,0x5F,0x97,0x44,0x17,0xC4,0xA7,0x7E,0x3D,0x64,0x5D,0x19,0x73, 0x60,0x81,0x4F,0xDC,0x22,0x2A,0x90,0x88,0x46,0xEE,0xB8,0x14,0xDE,0x5E,0x0B,0xDB, 0xE0,0x32,0x3A,0x0A,0x49,0x06,0x24,0x5C,0xC2,0xD3,0xAC,0x62,0x91,0x95,0xE4,0x79, 0xE7,0xC8,0x37,0x6D,0x8D,0xD5,0x4E,0xA9,0x6C,0x56,0xF4,0xEA,0x65,0x7A,0xAE,0x08, 0xBA,0x78,0x25,0x2E,0x1C,0xA6,0xB4,0xC6,0xE8,0xDD,0x74,0x1F,0x4B,0xBD,0x8B,0x8A, 0x70,0x3E,0xB5,0x66,0x48,0x03,0xF6,0x0E,0x61,0x35,0x57,0xB9,0x86,0xC1,0x1D,0x9E, 0xE1,0xF8,0x98,0x11,0x69,0xD9,0x8E,0x94,0x9B,0x1E,0x87,0xE9,0xCE,0x55,0x28,0xDF, 0x8C,0xA1,0x89,0x0D,0xBF,0xE6,0x42,0x68,0x41,0x99,0x2D,0x0F,0xB0,0x54,0xBB,0x16}; return t[x];} 此函数不是任意的;它是可逆的映射,包括在Galois场中进行反演然后进行仿射变换。所有详细信息均在FIPS-197第5.1.1节或此处的第4.2.1节(名称略有不同)中。 以表的形式实现的一个问题是它容易受到所谓的缓存定时攻击。 因此,您的任务是为显示上述SubBytes()功能的确切功能设计一个精确的替代品;我们假设情况是这样的:不使用任何依赖于输入x的SubBytes内容: 作为数组索引, 作为控制的操作数if,while,for,case,或操作者?:; 由于运营商的任何操作数&&,||,!,==,!=,<,>,<=,>=,*,/,%; 作为运营商的右操作数>>,<<,*=,/=,%=,<<=,>>=。 中奖条目将是具有最低成本,从输入相关的数据路径执行操作符的数量而获得,具有重量的5为一元运算符-和~以及为<<1,>>1,+1,-1; 所有其他运算符的权重为7,与其他计数一起移位或其他常数的加/减(类型转换和提升是免费的)。原则上,通过展开循环(如果有),该成本不会改变,并且与输入无关x。作为决胜局,删除空格和注释后具有最短代码的答案将获胜。 我计划最早在2013年UTC时指定一个条目作为答案。我将考虑用我所了解的语言来回答,将其作为对C的直接翻译(未针对大小进行优化)进行排名。 对于最初被遗漏+1并受其-1青睐的运营商,免费演员和晋升以及规模排名的歉意。请注意,*一元和乘法时都禁止这样做。

1
正则表达式验证正则表达式[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 构建一个将接受正则表达式字符串作为输入的正则表达式,并检查其是否有效。基本上,您的正则表达式应该能够验证自己。(任何无效的正则表达式都不应进行验证,因此您不能使用.*。;)) 您的风味必须得到众所周知的实现(Perl,sed,grep,gawk等)的完全支持,并且必须完全支持那些实现所支持的功能。[不用担心律师说话;我只是想消除所有可能导致智能***的漏洞。] 我会对此进行编码,但是我担心它会给那些知道和使用非功能丰富的风味的人带来优势。还是我的担心没有根据?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

3
Brainfuck中的按位运算符
您的任务是为以下每个二进制运算符创建一个Brainfuck程序。每个程序应从输入中获取一个或两个8位数字(A和B)并计算指定的运算: A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A 您不必全部实施5。得分的计算方式为: #totalCharacters + {4000 * #problemsNotCompleted} 因此,有效分数是从零(最佳)到20,000(未完成)。 我不在乎您将结果存储在哪里,也不管您是否保留输入。假设8位单元以及仅在右侧需要的空单元数。 您可能会认为数字已经在最适合您的任何内存位置中,因此您无需担心IO操作。
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

6
打我的“预高尔夫球” C
背景 对于用C语言提交的代码高尔夫,我需要一个处理工具。像在许多其他语言中一样,空格在C源代码中几乎无关紧要(但并非总是如此!)-仍然使代码对人类更易理解。一个不包含单个冗余空格的,功能全面的C程序通常很难读取。 因此,我喜欢用C编写代码以提交包含空格和注释的代码高尔夫球,因此程序在编写时保持可理解的结构。最后一步是删除所有注释和多余的空格。这是一项繁琐而漫不经心的任务,实际上应该由计算机程序的实习生来完成。 任务 根据以下规则,编写程序或函数,以消除某些“预查询”的C源代码中的注释和多余的空格: 一个\(反斜杠)在该行的最后一个字符是续行。如果找到此行,则必须将以下行视为同一逻辑行的一部分(例如,可以在执行其他任何操作之前将其\和以下\n(换行符)完全删除) 注释将仅使用单行格式,以开头//。因此,要删除它们,无论//在字符串文字之外遇到的任何地方,都忽略逻辑行的其余部分(请参见下文)。 空格字符是(空格),\t(制表符)和\n(换行符,因此这里是逻辑行的结尾)。 当找到空白序列时,请检查其周围的非空白字符。如果 它们都是字母数字或下划线(范围[a-zA-Z0-9_])或 两者都是+或 两者都是-或 前一个是/,下一个是* 然后将序列替换为一个空格()字符。 否则,请完全消除该顺序。 此规则有一些例外: 预处理程序伪指令必须出现在输出中它们自己的行上。预处理程序指令是以开头的行#。 在字符串文字或字符文字中,您不应删除任何空格。任何不以奇数个反斜杠()直接开头的"(双引号)/ '(单引号)都\以字符串文字 / 字符文字开头或结尾。您可以确保字符串和字符文字在它们开始的同一行结束。字符串文字和字符文字不能嵌套,所以'一个内部的字符串文字,以及一个"一个内部字符文字没有任何特殊含义。 I / O规格 输入和输出必须是包含换行符的字符序列(字符串)或不包含换行符的字符串数组/列表。如果选择使用数组/列表,则每个元素代表一行,因此换行符在每个元素之后都是隐式的。 您可以假定输入是有效的C程序源代码。这也意味着它仅包含可打印的ASCII字符,制表符和换行符。允许输入格式不正确的行为。 开头和结尾的空白/空行是不允许的。 测试用例 输入 main() { printf("Hello, World!"); // hi } 输出 main(){printf("Hello, World!");} 输入 #define max(x, y) \ x > y ? x : …
12 code-golf  c 

1
有效迷宫数
给定一个WxH网格,有多少种可能的迷宫? 您对迷宫的了解: 网格正好是H正方形,W正方形是正方形。 共有三种类型的正方形:“开始”,“完成”和“空”。迷宫必须正好包含1个开始点和1个结束点,所有剩余的方块均为空。 整个迷宫周围都有墙壁。 除非违反以下规则,否则墙可以存在于任意两个正方形之间的边缘上: 从开始方块到完成方块必须存在一条路径。 因此,给定两个数字W和H,您必须返回一个数字,代表可能的正方形/墙壁配置的数目。您保证W*H > 1 例如,2x2迷宫具有完全100不同的可能配置。 这是一个代码高尔夫球,所以最短的答案是成功的!

5
风险,战争之道
介绍 在此游戏中,玩家使用自己的军队与其他玩家的军队作战,占领领土并成为最后一个站立的人。每回合,玩家都会得到基本数量的军队供其使用。但是,通过占领某些地区的领土,玩家可以增加此数目,从而在游戏后期拥有潜在的优势。(这与Warlight基本相同)。 所有机器人均应使用Java,C或C ++编写(我可能会包括其他语言,但没有相应的软件或经验)。您的提交没有必要扩展一个类,您可以创建函数,类,接口或其他任何必要的东西,并使用标准 API中的任何包或类。如果您打算创建一个类或接口,请考虑使用一个内部类或内部接口。 请不要尝试以编程方式更改竞赛中的控制器或其他提交的内容。 游戏玩法 总览 一个10x10的二维数组将模​​拟该板,每个元素/单元代表一个“区域”。将进行20轮,每轮最多1000圈。每回合,玩家将首先将他们拥有的军队部署到自己拥有的任何领土,然后有机会将其军队运送到附近的领土,以试图通过攻击对手的领土来占领对手的领土。玩家必须部署所有军队,但是如果需要,他们不必移动军队。 进攻/转移军队 如果玩家愿意,他/她可以从一个地区向八个相邻地区中的任何一个派遣军队。棋盘“环绕”,即,如果玩家的领土在一侧,则可以将其周围的军队转移到另一侧的相邻领土。从某一领土调动军队时,该领土上至少还应剩下一支军队。例如,如果一个领土包含五支军队,那么转移到不同领土的人数不得超过四支。如果一个领土包含一个领土,那支军队就无法行动。 如果玩家将n军队从一个领土派遣到他们拥有的另一领土,则该领土将获得n军队。 假设玩家将n军队从他/她的领地发送到其中有o军队的对立领地。o将n * .6舍入到最接近的整数;但是,与此同时,n将o * .7四舍五入为最接近的整数。以下规则将适用于是否占领了对方领土: 如果o达到零n且大于0,则玩家将接管领土,n军队。 如果同时n和o变为零,o将自动设置为1和领土不会被捕获。 如果o仍然大于0,则玩家所在区域的军队数量将增加,n并且对等区域将不会被占领。 奖金 将选择一组地区代表奖金;如果一个玩家拥有该组中所有领土,则该玩家每回合将获得额外的军队。 奖金的ID号代表不同的ID,值代表玩家可以接收的额外军队数量。每回合,奖励的值将是5到10之间的一个随机数(含5和10),并且现场将提供十个奖励,每个奖励都包含十个地区。 例如,如果一个玩家每回合会获得5个军队的所有领土都拥有价值8的加成,则该玩家将在下一回合及随后的回合中获得13个军队。但是,如果玩家失去组成奖励的一个或多个地区,则他/她每回合只会收到5个军队。 输入输出 您的程序应通过命令行参数进行输入,其格式如下: [id] [armies] [territories (yours and all adjacent ones)] [bonuses] ["X" (if first turn)] id并且armies都是整数。id是您的ID,armies是您需要部署到您的地区的军队数量。您必须部署分配给您的所有军队-不多也不少。 territories是一系列字符串,代表您所拥有的领土和与您不相邻的领土。字符串采用以下格式: [row],[col],[bonus id],[player id],[armies] row并col指出该领土所在的董事会的行和列,是该领土bonus id所属的奖励player id的ID ,是拥有该领土的玩家的ID,并且armies是该领土内的军队数量。这些都是数字。 bonuses是代表您可以利用的董事会奖金的一系列字符串。字符串采用以下格式: [id],[armies],[territories …
12 king-of-the-hill  c  c++  java 

15
在没有比较运算符的情况下比较C或C ++中的两个整数
产生最短的程序,该程序将两个有符号整数作为输入(通过stdin或作为参数)并显示3个不同的输出,具体取决于第一个数字是(1)大于,(2)小于还是(3)等于第二个数字数。 赶上 您不能在程序中使用以下任何一项: 该标准比较操作符:<,>,<=,>=,==,!=。 任何库文件除conio,stdio或iostream。 任何非ASCII或不可打印的ASCII字符。 赢家 字符数最少的程序获胜。

7
C代码压头
情况:您是一名高中老师,正在教您的计算机课如何编写C程序。但是,由于这只是该术语的开始,因此您尚未教他们缩进和间距的重要性。当您标记他们的工作时,您的眼睛受了如此巨大的伤害,以至于痛苦地尖叫着,并意识到这种情况无法持续。 任务:您已决定编写一种使用任何语言的程序,该程序都将有效的C源代码作为输入并以正确的格式输出。您应该确定什么是格式正确的代码,因为这是一场人气竞赛。鼓励您实现尽可能多的功能,以下是一些示例: 在每行的开头添加适当的缩进 在,和其他运算符之后添加空格,例如转换int a[]={1,2,3};为int a[] = {1, 2, 3};。记住不要在字符串文字中处理运算符。 每行后删除尾随空格 将陈述分为几行,例如,学生可以写一行tmp=a;a=b;b=tmp;或int f(int n){if(n==1||n==2)return 1;else return f(n-1)+f(n-2);}全部写成一行,则可以将它们分成不同的行。请注意for循环,它们中包含分号,但我真的不认为应该将它们分开。 定义每个函数后添加新行 您还可以使用其他功能来理解学生的代码。 获胜标准:这是一次人气竞赛,因此多数投票的答案都将赢得。如果出现平局,则以实施最多功能的答案为准。如果那又是平局,则最短的代码获胜。 建议您在答案中包括已实现的功能列表以及示例输入和输出。 编辑:根据注释中的请求,这里是一个示例输入,但是请记住,这只是参考,建议您实现尽可能多的功能。 输入: #include <stdio.h> #include<string.h> int main() { int i; char s[99]; printf("----------------------\n;;What is your name?;;\n----------------------\n"); //Semicolon added in the string just to annoy you /* Now we take …

1
通过整数操作实现IEEE 754 64位二进制浮点数
(我暂时将问题标记为“ C”,但是如果您知道另一种支持联合的语言,则也可以使用它。) 您的任务是+ - * /为以下结构构建四个标准数学运算符: 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。 您可以选择要操作的整数部分,甚至可以在不同的运算符之间使用不同的整数部分。(尽管我不确定您是否要这样做,您也可以选择从联合中的任何字段中删除“未签名”。) 您的分数是四个运算符中每个字符的代码长度总和。最低分获胜。 对于不熟悉IEEE 754规范的我们来说,这是一篇有关Wikipedia的文章。 编辑: 03-06 08:47在intfloat结构中添加了构造函数。您可以使用它们进行测试,而不必手动设置double /etc。

2
X大于3,且X和Y之间至少相差2
我试图打败一些C ++。是否可以使这种情况更短? X > 3 & X - Y > 1 (当然,除了删除空白。) 所以,X至少4,但X >= Y + 2。 X和Y是[0,5]间隔中的整数。 我试图找到一些按位公式,但失败了。
11 code-golf  number  tips  c++  code-golf  popularity-contest  obfuscation  code-golf  c  code-golf  board-game  hexagonal-grid  code-golf  game  grid  code-golf  number  permutations  popularity-contest  math  graphical-output  number-theory  king-of-the-hill  code-challenge  compression  code-challenge  fastest-code  code-golf  math  ascii-art  animation  code-golf  popularity-contest  generation  counting  fastest-code  fastest-code  popularity-contest  image-processing  king-of-the-hill  code-golf  conversion  binary-tree  code-golf  math  number  rational-numbers  division  code-golf  restricted-source  hashing  atomic-code-golf  logic-gates  code-golf  function  code-challenge  puzzle-solver  ai-player  test-battery  popularity-contest  music  compression  code-golf  number  stack  atomic-code-golf  logic-gates  ascii-art  popularity-contest  code-golf  date  grid  code-challenge  game  code-golf  parsing  code-golf  math  geometry  sequence  popularity-contest  code-trolling  code-golf  string  restricted-source  code-golf  quine  king-of-the-hill  code-golf  math  code-golf  simulation  code-golf  ascii-art  code-challenge  sorting  optimization 

14
C中的Golfed + Fast排序
[ 最新更新:提供基准测试程序和初步结果,请参见下文] 所以我想用一个经典的应用程序来测试速度/复杂性的权衡:排序。 编写ANSI C函数,以递增顺序对浮点数数组进行排序。 您不能使用任何库,系统调用,多线程或内联ASM。 条目由两个部分组成:代码长度和性能。评分方式如下:条目将按长度(没有空格的#个字符的对数,因此可以保留一些格式)和性能(一个基准上的#秒的对数)进行排序,并且每个间隔[best,worst]线性归一化为[ 0,1]。一个程序的总分将是两个标准化分数的平均值。最低分获胜。每个用户一个条目。 必须(最终)进行排序(即输入数组必须在返回时包含排序的值),并且您必须使用以下签名,包括名称: void sort(float* v, int n) { } 要计算的字符:sort函数中的字符,包括的签名以及函数调用的其他函数(但不包括测试代码)。 程序必须处理任何数字值float和长度> = 0,最大2 ^ 20的数组。 我将sort其及其依赖项插入测试程序,然后在GCC上编译(没有高级选项)。我将一堆数组放入其中,验证结果和总运行时间的正确性。测试将在Ubuntu 13下的Intel Core i7 740QM(Clarksfield)上运行。 阵列长度将跨整个允许范围,短阵列的密度更高。值将是随机的,且具有粗尾分布(正负范围内)。重复的元素将包含在某些测试中。 该测试程序位于:https : //gist.github.com/anonymous/82386fa028f6534af263 它将提交导入为user.c。TEST_COUNT实际基准测试中的测试用例()数量为3000。请在问题评论中提供任何反馈。 截止日期:3周(2014年4月7日,格林尼治标准时间16:00)。我将在2周内发布基准测试。 最好在截止日期前发布,以免将代码泄露给竞争对手。 根据基准测试发布的初步结果: 以下是一些结果。最后一列以百分比形式显示分数,分数越高越好,将Johnny Cage放在第一位。比一部分算法慢几个数量级的算法是在部分测试中运行的,并且需要时间推断。qsort包含C自己的用于比较(强尼的速度更快!)。我将在结束时进行最终比较。

5
m3ph1st0s的编程难题3(C):“简易错误”
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 4年前关闭。 这是我的C / C ++难题系列的第3个。万一您错过了前2个,则它们在这里:(1)m3ph1st0s的编程难题1(C ++) (2)m3ph1st0s的编程难题2(C ++):“辛苦!” 我必须说我的难题是100%原始的。如果没有,我将始终在案文中声明。我的第三个谜题分为以下两个部分: 拼图3.1 这一部分(3.1)并不是我的原始难题,它是从我前一段时间读过的一些互联网页面中收集的。我在这里以它为起点并为您热身。解决该问题,然后继续进行第二部分。 有人尝试打印“ +”号20次,并提出了以下程序: #include <stdio.h> int main() { int i; int n = 20; for( i = 0; i < n; i-- ) printf("+"); return 0; } 它没有达到预期结果的事实是显而易见的-该程序永无止境。修理它!简单?现在,通过更改“仅一个字符”来修复程序-当然不是空格字符!对于这一挑战,有3种解决方案。找到所有的三个。为了清楚起见:该程序必须输出20个“ +”号,并且必须快速结束。在就“快速”的含义批评我之前,我要说这最多意味着几秒钟(顺便说一下,这太多了,只是为了使它变得清晰起来)。 拼图3.2 编辑 前面曾指出,针对3.2.2难题的解决方案可能取决于编译器。为了消除对该主题的任何可能的讨论,当我会格外小心以免引起争议时,我将修改想法并在下一个难题中对其进行改进。但是,为了使这个难题继续下去,我将对3.2.2进行一些小的修改(该解决方案会更简单但更干净)。 当我第一次看到拼图时,我发现它很棒。我确实设法解决了这个问题,但没有立即解决,因为它需要仔细注意。如果您在这里,则意味着您也已解决它。如果您通过编写一个程序用所有可能的值替换所有可能的字符并测试每个解决方案来这样做,那么您将会迷失方向。努力工作的家伙。现在已更正了写20个“ …

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.