Questions tagged «code-challenge»

代码挑战赛是一种创造性的竞赛,可以用客观的获胜标准来解决编程难题,而其他得分标记(例如,代码高尔夫)则无法涵盖这些目标。

1
破解密码
我设计了一个简单的随机生成器,使用乘法和模数方法以混沌的方式循环两个数字。为此很好。 如果我将其用作密码生成器,则由于攻击者可以以计算有效的方式对一系列随机数进行种子反向工程,因此它容易受到已知的明文攻击。 为了证明密码破解,找到合法的种子值对,它们在[0; 255]范围内连续生成7个零,并且使用尽可能少的功率,CPU时间等。 这是用JavaScript编写的随机生成器: function seed(state1,state2){ //Constants var mod1=4294967087 var mul1=65539 var mod2=4294965887 var mul2=65537 function random(limit){ //Cycle each state variable 1 step state1=(state1*mul1)%mod1 state2=(state2*mul2)%mod2 //Return a random variable return (state1+state2)%limit } //Return the random function return random } //Initiate the random generator using 2 integer values, //they must …

8
二叉树编码
假设您有一棵完整的二叉树(即每个内部节点恰好有两个非空后代)。每个节点包含一个非零整数。您将获得将树编码为整数列表或从整数列表中解码树的任务。 该树在内部存储如下: struct node { int data; struct node *left, *right; }; 您必须实现两个功能: int *encode(struct node *root); struct node *decode(int *array); 由您决定如何编码和解码。 要点: 最小编码长度 复杂度(理想情况下,节点数量呈线性关系) 独创性 源代码长度没有意义,您不限于C。 树示例: 5 / \ 3 2 / \ 2 1 / \ 9 9

21
OEIS多种语言
这是与OEIS相关的答案链挑战。 哦,这样做的理由是因为公司需要一个程序才能打印出真正不好的OEIS序列,并且他们拥有每种语言。 答案链格式的工作方式如下: 有人发布了第一个答案,从中得出所有进一步的解决方案。这个答案是一个程序,给定数字N,以他们选择的任何语言(语言1)以OEIS顺序输入他们选择的任何索引(我们称为序列1)的第N个数字。 会有其他人出现并选择他们自己的顺序(必须与之前的顺序以及所有之前的顺序不同)。他们用另一种语言(必须与以前的所有语言都不同)编写一个程序,给定语言1的数字N输出序列1的第N个,给定语言2的数字输出序列1的第N个。 2。 此过程将无限进行。 序列的第n个术语是从第一个项目开始在第一个项目之后n次出现的术语。在这里,我们使用0和1索引,以便于在编码器上轻松实现! 没有语言或序列重用。 输入必须是整数或整数的字符串表示形式,而输出必须是序列的正确值。不需要错误处理(非整数输入)。 您不能连续发布两次。 您必须等待一个小时或更长时间才能再次发布。 在一周没有答案之后(倒数第二位的人),谁是倒数第二个倒数的人都赢了,尽管比赛可以无限期地继续下去。如果您排名倒数,并且可以证明可以再添加一种语言,那么您可以继续挑战直到下一位获胜者。 您可以假设输入或输出不会超出您语言的数字范围(例如,假设IEEE的限制不会超出任何序列),但是不要成为骗子,可以通过使用仅具有1.的语言 可以选择任何序列,只要之前没有使用过即可。 输入不能超出您正在使用的序列。 两种不同的语言版本是不同的语言(Python 2和Python 3被认为是它们自己的不同lang)。这不是严格的,但是根据经验,如果它与TIO上相同语言的另一个版本分开,则有所不同。 这不是禁止的,但是请尝试一次不使用OEIS给出的公式。 如果您生成的代码长度超过65536个字符,请提供访问它的链接(例如Pastebin)。 就是这样,仅此而已。准备?组?好玩! 是的,这是“一个OEIS接一个”,但使用了多人游戏。我以为会很酷。

9
BigNum Bakeoff重新启动
你们中的有些人可能对BigNum Bakeoff很熟悉,但最终却非常有趣。在某种约束和理论条件下,例如,可以运行该程序的计算机,该目标或多或少可以概括为编写一个输出最大的C程序。 本着同样的精神,我向所有语言提出了类似的挑战。条件是: 最多512个字节。 最终结果必须打印到STDOUT。这是你的分数。如果打印多个整数,则将它们串联在一起。 输出必须是整数。(注意:Infinity不是整数。) 内置常数不能大于10,但是数字/数字都可以(例如Avogadro的常数(作为内置常数)无效,但10000无效)。 当提供足够的资源来运行时,程序必须终止。 提供足够的运行资源时,打印输出必须是确定性的。 提供给您足够大的整数或bigints,以使您的程序可以运行。例如,如果您的程序要求对小于10 1,000,000的数字进行基本运算,那么您可以假定运行此功能的计算机可以处理至少10 1,000,000的数字。(注意:您的程序也可能在可处理最大10 2,000,000的数字的计算机上运行,因此仅调用计算机可处理的最大整数将不会产生确定的结果。) 为您提供了足够的计算能力,使您的程序可以在5秒内完成执行。(因此,不必担心您的程序是否已经在计算机上运行了一个小时,并且很快就无法完成。) 没有外部资源,因此不要考虑导入Ackermann函数,除非它是内置函数。 所有魔法物品都是暂时从一个大神那里借来的。 极大,未知限制 史蒂芬·H(Steven H),Pyth f 3 +B³F+ω²(256 26) 其中B³F是Church-Kleene的序数,其基本序列为 B³F[n] = B³F(n), the Busy Beaver BrainF*** variant B³F[x] = x, ω ≤ x < B³F 排行榜: 简单地美丽的艺术,红宝石 ˚F ψ 0(X(Ω M + X(Ω M + …

4
抽象语法树高尔夫:FizzBu​​zz,Python
摘要 用最少的令牌在Python中实现FizzBu​​zz。 挑战 编写一个打印十进制数字(从1到100)的程序。但是,对于三倍打印“ Fizz”而不是数字,对于五倍打印“ Buzz”。对于三和五的倍数的数字,请打印“ FizzBu​​zz”。程序必须使用某些版本的Python编写。 有关更多详细信息,请参见1,2,Fizz,4,Buzz 计分 您的分数将等于此程序针对Python 3或该程序针对Python 2报告的代码抽象语法树中的节点数。要运行程序,请提供代码的文件名作为程序的命令行参数。例如: python simple_counter.py fizzbuzz.py 这些程序基于Python的ast模块。如果您有任何困难,请告诉我。 为避免琐碎的解决方案,例如用实际程序执行长字符串或对输出进行硬编码,还有一些其他限制: 您的代码中的令牌不得超过15个字符。以上程序将为您检查此要求。注意,为了易于实施,上述程序将注释计为标记。 代码执行/评估被禁止。 如果您对是否允许某些物品有疑问,请问我。 计分启发法 以下规则通常足以计算程序的分数: 语句块是1分:if,for ... in ...,while,else,等。 独立语句是1点:print在Python 2, break,pass等。 变量是2分 单令牌面值为1点:2131,"Hello, world!",True 函数是3点(使用变量需要2点,额外需要1点):print在Python 3中range,等等。 运营商有2点:+,*,%,and,not,等。 = 是1分 增量赋值为二点:+=,|=,等。 括号,缩进等为0点。 与赋值或表达式相反,包含表达式的行为+ 1点。 完全有代码是1点。 挑战: 最低分获胜。祝好运!

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 

11
生成(完全确定的)伪随机比特流
双手被绑在随机的启发下: 目标 这项挑战的目标是编写一个程序,该程序生成一个伪随机位流,该流是一个1和0的字符串,看似纯粹是随机的,但实际上是以确定性方式生成的。您的程序应输出1和0的字符串(带有可选的空格),并应满足以下要求: 在没有时间和内存的情况下,您的程序必须永远继续输出1和0的字符串 您的程序必须在一台合理的机器上在一分钟内输出1000个以上的随机位。如果这个要求是不可能的,那么我会减少它。 字符串可以重复,但是重复段的长度必须大于1000位。 比特串必须通过尽可能多的随机性测试(如下所述)。 该程序不得从任何外部来源获取任何输入,也不得使用任何类似rand()的内置函数。 由于上述要求,该程序每次运行时都必须输出相同的确切字符串。 随机测试#1 目视检查时,伪随机位字符串不得包含任何明显的模式。 随机性测试2(视评论而定) 比特串必须包含1和0的均等分布。为了对此进行测试(以及其他测试方法),将位流分成3位长的段,例如101|111|001。 在所有这些段中,其中的1/8应该有3个1而没有0,其中3/8应该具有2个1和一个0,其中3/8应该具有1个和2个0,以及1/8他们应该没有1和三个0。 随机测试#3 “游程”定义为所有具有相同值的连续比特系列。该字符串1001001110具有三个大小为1(1..1.....0)的行,两个大小为2(.00.00....)的行和一个大小为3(......111.)的行。请注意,运行不会重叠。 在1000个随机位的字符串中,应该有大约250个大小为1的游程,大小为2的125个游程,大小为3的62个游程,等等。通常,对于游程大小R,应该有大约1000/(2**(R+1))该大小的游程。 随机测试#4 前840位分为两半,每个420位。将前半部分的每个位与后半部分的相应位进行比较。这两位应大约占百分之五十的时间。 这是执行测试2到4的Perl程序的源代码。到目前为止,它要求位字符串中不能包含任何空格。 客观的获胜标准时间! 获胜者是通过了所有6项要求和所有随机性测试的程序,其程度与随机性没有区别。如果有多个程序可以完成此任务,则花费时间最多的重复程序将获胜。如果有多个程序可以完成此任务,那么我可能不得不寻找更多的随机性测试来充当决胜局。

9
每个人都应该有一个朋友
孤立字符是没有相邻字符的相同类型的字符(除了换行符)。相邻字符可以在左侧,右侧上方或下方,但不能在对角线处。例如下面的文本H是孤立的: Ybb YH% %%%% 所有其他字符不是孤立的,因为它们每个都至少有一个相邻的相同类型的其他字符。 您的任务是编写一个将字符串作为输入并确定独立字符数的程序。 计分 您的答案将由两个指标评分。第一个是程序中孤立字符的数量。您应该力图将其最小化。第二个将是程序中的字节数。您也应该最小化它。程序大小将成为第一个条件的决胜局。 附加规则 您应该支持可打印的ascii范围的输入以及程序中使用的所有字符。 您可能认为换行符是换行符或换行符后跟换行符。 您可以采用任何合理的格式输入。这包括行列表。 测试用例 Ybb YH% %%%% 1个11 Aaaab uuu yyybbb 222 A 1个11 qqWWaaww 000

5
洋葱还是不是洋葱?
The Onion(警告:许多文章都是NSFW)是一个讽刺性新闻机构,模仿传统新闻媒体。2014年,The Onion推出了ClickHole(警告:也经常是NSFW),这是一个讽刺性新闻网站,模仿了诸如BuzzFeed之类的“ clickbait”网站。多亏了坡定律,人们才经常阅读The Onion或ClickHole上的文章标题,并相信它们是真实的,而不知道它们是要讽刺的。相反,在听起来可笑的真实新闻故事中也会发生这种情况-人们常常以为自己是讽刺作家,而不是。 这种困惑自然很适合游戏-给定新闻头条,尝试猜测它是否讽刺。挑战在于如何使用程序来做到这一点。 给定新闻标题(仅由可打印的ASCII字符和空格组成的字符串),1如果标题是讽刺,或者0不是,则输出。您的分数将是正确输出的数量除以标题总数。 按照惯例,不允许出现标准漏洞(尤其是针对测试用例进行优化)。为了实现这一点,我将在一组200个隐藏的测试用例上运行您的程序(The Onion中有100个,Not The Onion中有100个)。您的解决方案的分数必须比公共测试用例的分数少不超过20个百分点才能生效。 测试用例 为了提出针对此挑战的测试案例,我从The Onion subreddit中选择了25个标题(在The Onion及其子站点(如ClickHole)上发布了文章),从Not The Onion subreddit中选择了 25个标题(其中包含真实新闻)听起来像是讽刺)。我对标题所做的唯一更改是将“花式”引号替换为常规ASCII引号并标准化了大写字母-其他所有内容在原始文章的标题中均保持不变。每个标题都在自己的行上。 洋葱头条 Trump Warns Removing Confederate Statues Could Be Slippery Slope To Eliminating Racism Entirely 'No Way To Prevent This,' Says Only Nation Where This Regularly Happens My Doctor Told Me …

2
块分区字符串
灵感。 考虑一个l由数字组成的列表。i在列表的索引处定义一个块操作,l该操作是从iin 开始移动3个连续元素的动作l进行到底。 例: l, i (1-indexing) -> l (after applying block operation at index i) [1,2,3,4,5], 1 -> [4,5,1,2,3] [1,2,3,4,5,6,7], 3 -> [1,2,6,7,3,4,5] 给定一个仅包含0和1的列表,您的难题是仅使用块操作对其进行分区,以使零在前面,而在后面在后面。输出应该是索引在列表中应用的顺序。 因为这是不可能的 [1,0,1,0],所以保证列表长度至少为5。 测试用例(1-索引) (还有其他有效的输出) [1,1,1,0,0] -> [1] [0,1,0,1,0] -> [1,2,1,1] [0,0,0,1,1,1,0,0,0] -> [4] 使用此脚本可以生成更多的测试用例。(仅输入该rplc ' ';','部分用于ř Ë PL一个Ç ê空间与输出逗号) 获奖标准 代码挑战是主要的制胜法宝,而最快的代码是决胜局。尤其是: 以测试用例(n_elem= 500,random_seed= {secret value})的最短输出长度(最少块操作数)的解决方案为准。您应该能够使用测试用例(n_elem= …

3
多项式->积分
给定一个具有有理系数的变量的多项式,输出仅包含1,变量和定积分的等价表达式。例如, - X 2可表示为∫ X ∫ 1 1 1D 吨 X d ü。 E := 1 | var | ∫EEEdvar 允许使用任何合理的输入/输出方法。 例子: 您的分数将是您的代码长度乘以∫测试用例上使用的符号数。您应该能够为您的课程打分。最低分获胜。 测试用例: 4/381*x^2+49/8*x^3-17/6 311/59*x^2-92/9*x^3-7/15*x 333/29*x^3+475/96*x^8 打高尔夫球将变得很困难,因为我不能只打代码或输出,所以我不知道更改是否会帮助或伤害我的成绩,直到我尝试为止。 不要让分数限制您的创作。我们欢迎您回答问题,主要是对分数的一部分进行了优化,即使另一部分的评分很差。


4
删除称呼
挑战 嗨,给定一个字符串作为输入,请删除在字符串开头找到的所有称呼。 在50字节以下执行最正确替换的程序将获胜。 称呼 嘿,称呼定义为以下单词之一: 你好 嘿 你好 亲 问候 hai 伙计们 i 你好 iya 干草 ya 你好 嗨 称呼 首字母可以大写。 称呼之后总会有一个逗号和/或一个空格,必须将其删除。逗号和空格可以按任何顺序(,<space>或<space>,)都应删除。 问候语和后面的单词将永远只用逗号和/或单个空格分隔。 然后,您必须在称呼之后大写单词的第一个字母。即使未进行替换,您仍应将输出的第一个单词大写。 大写字母仅适用于小写字母字符(abcdefghijklmnopqrstuvwxyz)。您应该保留其他任何字符。 称呼将始终在字符串的开头。你不应该取代称呼是不是在开头。 不一定总有称呼。 您的代码必须少于50个字节。 例子 Input > Output Salutations, what's going on? > What's going on? hello i have quetions how does juice an avocado > …

4
操纵网格!
简报 您是一个机器人,它在2D网格中沿北,南,东和西四个方向无限延伸。当给定一个数字时,您必须移动机器人,以便到达目标数字。 网格的工作方式如下: 您可以向4个方向移动:北,南,东或西。一旦移出某个单元格,就不允许您再次返回该单元格(如此有效,它已从地图上删除了)。 有一个“计数器”,该计数器1234567890(因此从1到2...一直到9,然后到0,然后再返回1),每次移动时都会改变。 您还有一个“值”,该值从0开始。 一旦向任意方向移动,就会根据您所移动的方向进行数学运算: 北:您的价值由计数器(value += counter)增加。 东:您的价值会因计数器(value -= counter)递减。 南:您的价值乘以计数器(value *= counter)。 西:您的价值除以计数器(value /= counter)。 除法是整数除法,因此5/2 -> 2。 您不可以被除以0。 例: 如果漫游器向北移动3次: 第一个“北”移动将计数器增加到1,并将其添加到值(现在为1)中。 第二个“北”移动将计数器增加到2,并将其添加到值(现在为3)中。 第三个“北”移动将计数器增加到3,并将其添加到值(现在为6)中。 最终值为6。 向北移动,然后再向南移动: 第一个“北”移动将计数器增加到1,并将其添加到值(现在为1)中。 第二个“向南”移动错误,因为机器人正在尝试继续移动的单元已删除(从第一个移动中删除)。 没有最终值,因为漫游器错误。 挑战 您的难题是,在给定数字的情况下,编写出适合机器人进入的方向的程序,以便使机器人的最终值等于该数字。 因此,如果数字为6,则有效的解决方案是: nnn (机器人连续向北移动3次)。 您的测试值为: 49445094, 71259604, 78284689, 163586986, 171769219, 211267178, 222235492, 249062828, 252588742, 263068669, 265657839, …

3
在Wythoff矩阵模2中打印特定值
Wythoff矩阵是一个无限矩阵,由Wythoff游戏中棋盘上每个正方形的格朗迪数组成。 此矩阵中的每个条目都等于最小的非负数,该数字不出现在条目位置的上方,左侧或对角线西北方。 左上方20乘20的正方形如下所示: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 2 0 4 5 3 7 8 6 10 11 9 13 14 12 16 17 15 19 20 2 0 1 5 3 4 8 …

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.