Questions tagged «code-challenge»

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

10
Brainf ***高尔夫球手
用编程语言编写的最简单的代码之一是程序打印字符序列(例如,“ Hello,world!”)。然而,S ^ ō 米é é 小号Ø 牛逼é [R 我ç编程语言,如Brainfuck,连这个简单的代码是很烦人的写入。 您的任务是编写一个程序(不必使用Brainfuck编写),该程序将打印(最小长度)Brainfuck程序,并打印给定的文本。 输入值 字符序列(介于1和之间255)由任何格式(变量,参数,stdin,文件等)给出。 输出量 输出是有效的(无不匹配[和])脑力激荡的代码(假设无符号的8位换行单元和左右两侧单元的数量不受限制)打印作为输入给出的确切字符串。 例如,输入的一种可能的输出A是++++++++[<++++++++>-]<+.。 您的程序不必花很长时间(>2m)即可运行。 BF程序不必花很长时间(>10s)即可运行。 计分 (注意:当前的评分方法可能会更改,因为它不容易计算...) 程序的长度(生成BF代码)本身并不重要。但是,在程序代码中对BF代码进行硬编码是不正确的。唯一可接受的范围(例如一个BF码打印的单个字符。0x01:+.)的BF码可能是硬编码的。 分数是打印这些字符串的BF代码的长度总和。 Hello, world!附加了一个0x0A(\n)的字符串(即“ Hello,world!”程序) 单个字符0x01〜0xFF 这255个BF代码的长度总和乘以1/16,四舍五入后加到得分上。 前16个字符串的列表,该列表是通过删除所有零长度字符串来拆分11-11-11生成的字节的随机序列而生成的0x00。 Lenna.png,删除所有0x00s。 这首歌的歌词是99瓶啤酒,开头是99 bottles~,换行符是0x0A,段落之间用两个0x0As 分隔,结尾没有换行符。 您可能提供的其他字符串。 您的程序可能包括计算自身的分数。 当然,得分最低的代码将是赢家。

30
2的幂和
挑战 给定一个整数输入x其中1 <= x <= 255,返回时总结给出了两种力量的结果x。 例子 给定输入: 86 您的程序应输出: 64 16 4 2 输入: 240 输出: 128 64 32 16 输入: 1 输出: 1 输入: 64 输出: 64 如果总和中没有确定的2的幂,则输出可能包含零。 例如,输入65可以输出0 64 0 0 0 0 0 1。 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜。
31 code-golf  binary  code-golf  sequence  integer  chess  code-golf  number  arithmetic  matrix  code-golf  code-golf  combinatorics  grid  set-partitions  code-golf  array-manipulation  graph-theory  code-golf  number  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  3d  code-challenge  restricted-source  printable-ascii  code-golf  board-game  code-golf  geometry  grid  code-golf  word-puzzle  code-golf  matrix  sorting  code-golf  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  code-golf  decision-problem  code-golf  math  number  arithmetic  restricted-source  code-golf  code-golf  number  integer  matrix  code-golf  date  code-golf  matrix  code-golf  sequence  combinatorics  chemistry  code-golf  array-manipulation  popularity-contest  code-golf  code-golf  natural-language  code-golf  number  integer  sorting  substitution  code-golf  string  number  date  encode  code-golf  decision-problem  code-golf  string  subsequence  code-golf  string  alphabet  code-golf 

8
拉丁方压缩
一个拉丁方是一个没有重复的行或列符号的方形:。 13420 21304 32041 04213 40132 正如许多Sudoku玩家所知道的那样,您不需要所有数字即可推断出剩余数字。 您面临的挑战是将拉丁方压缩为尽可能少的字节。 您需要提供一个或两个压缩/解压缩程序。 各种信息: 使用的数字将始终为0..N-1,其中N是正方形边缘的长度,以及N<=25 减压时,拉丁方必须与输入相同。 您的程序应该能够解压缩任何拉丁正方形(在最大正方形大小之内),而不仅仅是我提供的。压缩率也应相似。 您实际上必须运行压缩和解压缩器才能获得分数(无宇宙结束时间) 测试用例可以在github上找到。 您的分数是压缩测试用例的总大小。 编辑:从7月7日20:07开始,我更新了测试用例(以解决生成问题)。请在新的测试用例上重新运行您的程序。 谢谢Anders Kaseorg。

20
法鲁洗牌数组
阿法鲁洗牌是经常使用的魔术到“洗牌”甲板的技术。要执行Faro随机播放,您首先将卡座切成相等的两半,然后将这两个半插入。例如 [1 2 3 4 5 6 7 8] 法鲁洗牌是 [1 5 2 6 3 7 4 8] 可以重复多次。有趣的是,如果重复此次数足够多,您将总是回到原始数组。例如: [1 2 3 4 5 6 7 8] [1 5 2 6 3 7 4 8] [1 3 5 7 2 4 6 8] [1 2 3 4 5 6 7 …
31 code-golf  permutations  card-games  code-golf  graphical-output  random  code-golf  image-processing  color  code-golf  primes  code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

4
元胞自动机的多元投票
细胞自动机中有一个非常重要的问题,称为多数问题: 多数问题或密度分类任务是找到准确执行多数投票的一维元胞自动机规则的问题。 ... 给定一个总状态为i + j的两态细胞自动机的配置,其中i处于零状态,j处于一个状态,对投票问题的正确解决方案必须最终将所有单元设置为零i> j,并且如果i <j,最终必须将所有单元格设置为1。如果i = j,则未指定所需的最终状态。 尽管已经证明,没有任何一种细胞自动机可以在所有情况下解决多数问题,但是有许多规则可以在大多数情况下解决。Gacs-Kurdyumov-Levin自动机在随机初始条件下的准确度约为78%。GKL规则并不复杂: 半径为3,表示该单元格的新状态取决于之前的7个单元格:自身,右侧的3个单元格和左侧的3个单元格。 如果当前是一个单元格O,则其新状态是其自身的大部分状态,该单元格位于其左侧,而单元格3向左移动。 如果当前是一个单元格1,则其新状态是其自身的大部分状态,该单元格位于其右侧,而单元格3则位于其右侧。 这是一个例子: 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 …

6
尽最大可能!
该序号系统是无限的数字系统。许多无穷大。如此众多的无穷数字,以至于它实际上没有一个无穷大来表示自己的无限性。上图给出了它们如何工作的一点想法。序数(冯·诺依曼构造)是一组先前的序数。例如,0是空集,1是集{0},2是集{0,1},依此类推。然后我们得到ω,即{0,1,2,3 ...}。ω+ 1是{0,1,2,3 ...ω},ω乘以2是{0,1,2 ...ω,ω+ 1,ω+ 2 ...}然后你会像那。 您的程序将输出一组序数,例如{0,1,4}。这样,您的分数将比集合中所有序数的最低序数高。对于{0,1,4},得分将为5。对于{0,1,2 ...},得分将为ω。 您如何输出您要求的序号。当然是代码。即,您的程序将在每行中用引号输出一个可能无限的其他程序列表(用引号引起来)(使用文字字符串“ \ n”表示新行)。程序对应于其得分,如上所述。例如,如果您输出 "A" "B" "C" 其中A,B和C本身是有效答案,并且得分为{0,1,4},则您的程序的得分为5。请注意,A,B和C必须是完整程序,而不是片段。 根据上述规则,不输出任何内容的程序的得分为0(大于所有{}的最小序数为0)。另外,请记住,根据基础公理,集合不能包含自身。即,每个集合(因此是序数)都具有下降到零的路径。这意味着完整的quine将无效,因为它不是一个set。 另外,不允许任何程序访问外部资源(其自己的文件,互联网等)。另外,在列出分数时,如果可以的话,请将分数的Cantor普通形式放在旁边,如果可以的话(如果没有,则其他人可以)。 考虑以上所有因素后,您发布的实际答案必须少于1,000,000字节(不包括注释)。(此上限可能只会对自动生成的代码起作用)。同样,您可以为不使用的每个字节增加分数(由于我们处理的是无穷大,只有当序数非常接近或相同时,这才可能被考虑在内)。同样,本段仅适用于发布的答案,不适用于生成的答案或生成的答案生成的答案,依此类推。 这具有quine标记,因为生成至少部分源代码自己的代码可能有助于生成大型序言。但是,它绝对不是必需的(例如,分数为5的提交可能不需要其自己的源代码)。 有关示例的注释示例,请参见此处。

12
写一个Quine Suite
我们遇到了很多奎因挑战,但是许多奎因格式相似,因此可以使我们的奎因产生一些差异。 您的任务是用相同的语言(至少2种)创建一系列程序,所有程序都输出自己的源代码,但是,这些程序都不能共享任何字符。 例如,如果您使用以下程序创建程序: printf+qw(printf+qw(%s)x2)x2 您的下一个程序不能包含以下任何一项: %()+2finpqrstwx 等等。 规则 您可以使用unicode字符,但仍必须以字节为单位。 所有程序都必须符合社区对适当的标准的定义。这意味着,空字符串不算作有效的quine。 禁止出现标准漏洞。 只要满足上述定义,就可以使用功能或完整程序。 禁止使用与符号无关的语言(包括Lenguage和Headsecks)。 大多数程序都胜出,总代码最短的是决胜局。

8
脆弱的奎因
脆弱的奎因 脆弱的quine是满足通过删除单个字符来组成每个子字符串的属性的quine,在评估时会产生错误。 例如。如果您的程序asdf是木盒,那么它就很脆弱,以下程序必须出错: sdf adf asf asd 您的程序(及其所有子字符串)必须是完全确定性的,并且必须使用相同的语言。就此挑战而言,即使最终未产生错误,陷入无限循环(即无法终止)的程序也被视为“产生错误”。 存在标准漏洞,包括通常的quine限制(例如,无法读取自己的源代码)。 例如,print("foo")不是脆弱的。所有这些子字符串必须出错: rint("foo") pint("foo") prnt("foo") prit("foo") prin("foo") print"foo") print(foo") print("oo") print("fo") print("fo") print("foo) print("foo" 不会出错的是: print("oo") print("fo") print("fo") 因此它并不脆弱。 关于藜的重要说明 通过协商一致,任何可能的奎纳必须满足以下条件: 必须有可能识别程序的一部分,该部分对程序的不同部分进行编码。(“不同”表示两个部分出现在不同的位置。) 此外,木盒不得直接或间接访问其自身的源。 例 由于我认为JavaScript的function#toString是“正在读取其自身的源代码”,因此我不允许这样做。但是,如果我不想禁止它,那么这是JavaScript中的一个脆弱的方法: f=(n=b=`f=${f}`)=>(a=(n)==`f=${f}`,n=0,a)&(n!=b)?b:q 测试仪 这是一个程序,在给定程序源代码的情况下,它会生成所有必须出错的程序。 let f = (s) => [...Array(s.length).keys()].map(i => s.slice(0, i) + s.slice(i + 1)).join("\n"); let …
30 code-golf  quine  code-golf  date  code-golf  sequence  code-golf  sorting  file-system  code-golf  code-golf  ascii-art  hexagonal-grid  code-golf  string  arithmetic  code-golf  code-golf  code-challenge  source-layout  code-golf  ascii-art  cellular-automata  code-golf  string  arithmetic  balanced-string  code-golf  number  primes  code-golf  ascii-art  hexagonal-grid  code-golf  string  code-golf  string  code-golf  sequence  code-golf  ascii-art  code-golf  conversion  hexadecimal  code-challenge  restricted-source  code-golf  math  grid  code-golf  string  ascii-art  code-golf  random  minesweeper  code-golf  ascii-art  kolmogorov-complexity  board-game  scrabble  code-golf  ascii-art  code-golf  math  number-theory  decision-problem  code-golf  string  code-golf  natural-language  code-golf  internet  stack-exchange-api  code-golf  code-golf  conversion  code-golf  string  code-golf  math  arithmetic  code-golf  string  whitespace  code-golf  graphical-output  internet  code-golf  string  code-golf  string  random  permutations  code-golf  string  code-golf  string 

2
将图像压缩为4 KiB预览
在这个挑战中,您将创建一个图像预览压缩算法。目的是将任意图像文件减少为4 KiB预览图像,该图像可用于快速识别带宽非常小的图像。 您必须编写两个程序(或一个组合程序):压缩程序和解压缩程序。两者都必须将文件或标准输入作为输入,并输出到文件或标准输出。压缩器必须接受选择的主流无损图像格式(例如PNG,BMP,PPM)的一个图像,并输出最多4096字节的文件。解压缩器必须接受压缩器生成的任何文件,并输出与输入尽可能接近的图像。请注意,编码器/解码器没有源代码大小限制,因此您可以发挥算法的创造力。 限制条件: 别作弊'。您的程序可能不会使用隐藏的输入,在Internet上存储数据等。也禁止您包含仅与评分图像集有关的功能/数据。 对于库/工具/内置程序,允许您使用常规图像处理操作(缩放,模糊,色彩空间变换等),但不能使用图像解码/编码/压缩操作(压缩器输入和解压缩器输出除外)。也不允许进行一般的压缩/解压缩。打算针对此挑战实施自己的压缩。 解压缩器输出的图像的尺寸必须与提供给压缩器的原始文件的尺寸完全匹配。您可以假定任一方向的图像尺寸均不超过2 16。 您的压缩器必须在5分钟以内的普通家用PC上运行,而解压缩器必须在10秒以内运行以下集合中的任何映像。 计分 为了帮助快速验证和视觉比较,请在压缩后使用您的答案附上测试语料库的无损相册。 您的压缩器将使用以下图像集进行测试: 您可以在此处以zip文件下载所有图像。 您的分数将是所有图像上压缩器的平均结构相似性指数。我们将使用开源dssim来应对这一挑战。它可以很容易地从源代码构建,或者,如果您在Ubuntu上,它也具有PPA。如果您自己给答案打分,则是首选方法,但是如果您不知道如何构建C应用程序并且不运行Debian / Ubuntu,则可以让其他人为您打分。dssim期望输入/输出为PNG,因此,如果以其他格式输出,请先将输出转换为PNG。 为了使评分更加轻松,这是一个快速帮助Python脚本,用法python score.py corpus_dir compressed_dir: import glob, sys, os, subprocess scores = [] for img in sorted(os.listdir(sys.argv[1])): ref, preview = (os.path.join(sys.argv[i], img) for i in (1, 2)) sys.stdout.write("Comparing {} to {}... ".format(ref, preview)) out = …

8
甲壳虫的歌曲和六边形
编写两个三角形(即金字塔)形状的程序。 第一个应该是一个向上的文字三角形,其最小底边宽度为三个字符。所以它的结构像 X XXX 要么 X XXX XXXXX 要么 X XXX XXXXX XXXXXXX 或更大。每个都X将替换为实际代码中的字符,除了行终止符外,其他任何字符都可以(因此X可以为空格)。X必须将所有的都替换掉,并且需要保留有助于形成三角形的空格和换行符。 第二个程序必须具有与第一个程序相同的大小和形状,除了三角形将指向下方。 因此,如果您的第一个程序看起来像 X XXX XXXXX 然后你的第二个程序看起来像 yyyyy yyy y 每个y字符都是您需要在实际代码中填充的字符(可能与您的X代码不同)。空格和换行符在这里也必须保持不变。 您的任务是编写这些程序,以使它们各自输出(以stdout或最接近的替代音)甲壳虫乐队独特歌曲的标题,而不输入任何内容。这篇Wikipedia文章将作为我们披头士乐队的正式歌曲清单。输出应该是所列标题之一,例如I Want You (She's So Heavy)。 但是,即使有奇怪的三角形程序要求,这也很容易。因此,我们将从前两个程序组成另一个程序,该程序必须输出另一个歌曲名称。 通过组合两个三角形程序中每个程序的三个副本,我们可以创建形状像六边形的第三个程序。 如果您的第一个程序的基本宽度为3,则它将如下所示: XyyyX XXXyXXX yyyXyyy yXXXy 如果基本宽度为5,则它将如下所示: XyyyyyX XXXyyyXXX XXXXXyXXXXX yyyyyXyyyyy yyyXXXyyy yXXXXXy 该程序(与其他空格和换行符一起运行时)必须输出另一个甲壳虫乐队的歌曲标题,就像前两个程序一样。也: 您的三个程序必须输出不同的歌曲标题。 歌曲标题长度不得超过8个字符。 您只能选择之一Revolution,Revolution 1并且Revolution 9因为标题是如此相似。 …

9
唯一分开的像素
对于N x N的图像,请找到一组像素,以使不存在超过一次的分隔距离。也就是说,如果两个像素被隔开一定距离d,则它们是由恰好分离的仅两个像素ð(使用欧几里德距离)。注意,d不必是整数。 面临的挑战是要找到比其他任何人都更大的此类集合。 规格 无需输入-对于该竞赛,N固定为619。 (由于人们一直在问-数字619并没有什么特别之处。选择它的大小足够大,不可能提供最佳解决方案,而它又足够小,可以显示N by N图像,而Stack Exchange不会自动缩小该图像。显示的最大尺寸为630 x 630,因此我决定使用最大的质数,但不要超过该值。) 输出是用空格分隔的整数列表。 输出中的每个整数代表一个像素,以英语阅读顺序从0开始编号。例如,对于N = 3,位置将按以下顺序编号: 0 1 2 3 4 5 6 7 8 您可以根据需要在跑步过程中输出进度信息,只要可以轻松获得最终得分结果即可。您可以输出到STDOUT或文件,也可以输出到最容易粘贴到下面的堆栈代码判断中的任何内容。 例 N = 3 选择的坐标: (0,0) (1,0) (2,1) 输出: 0 1 5 获奖 分数是输出中位置的数量。在那些得分最高的有效答案中,最早的发布该得分的答案将获胜。 您的代码不必是确定性的。您可以发布最佳输出。 相关研究领域 (感谢Abulafia的Golomb链接) 尽管这两个问题都不相同,但是它们在概念上都相似,并且可能为您提供解决方法的思路: 哥伦布尺:一维情况。 Golomb矩形:Golomb直尺的二维扩展。对所有N求解NxN(平方)情况的一种变体,称为Costas阵列。 请注意,此问题所需的点不受与Golomb矩形相同的要求。通过要求从每个点到另一个的向量是唯一的,Golomb矩形从1维情况开始延伸。这意味着可以有两个点在水平方向上隔开2个距离,也可以在两个点之间垂直隔开2个距离。 对于此问题,标量距离必须唯一,因此水平间距和垂直间距都不能为2。此问题的每个解决方案都是一个Golomb矩形,但并非每个Golomb矩形都是一个有效的解这个问题。 上限 丹尼斯在聊天中很有帮助地指出 …

12
向计算机科学的先驱们问好
选择您最喜欢的著名计算机科学家或计算机科学先驱,他们出生于1942年或更早(1943年标志着“第一台”计算机的诞生)。他们应该有一个Wikipedia页面或其他网站,其中列出了他们的出生年份,并说明他们的成就与计算机科学的关系。您可以选择与其他人相同的东西,但鼓励选择新的人。 取一个他们众所周知的名字。这很可能是他们的名字和姓氏,但如果更常见,则可能包含缩写或中间名。例如,对于托尼·霍尔都Tony Hoare和C. A. R. Hoare是可以接受的。 名称中的所有字符必须是可打印的ASCII。如果名称包含无法打印的ASCII字符,则选择近似值即可。例如Kurt Godel代替Kurt Gödel。 以名称中的唯一字符集(例如C. ARHoare)为例,并在科学家的出生年份之前将其向上移动到可打印的ASCII刻度,从一个~到另一个循环。(基本上以95为模添加出生年份。)这将为您(最可能)提供一组新的可打印ASCII字符。 例如,CAR Hoare于1934年出生,因此将每个字符都C. ARHoare移入1934年(34个mod 95)字符可得出ePBctj2$5(。 该堆栈片段将为您完成所有转移: function go() {var name = document.getElementById("name").value;var year = parseInt(document.getElementById("year").value);var unique = {};for (var i = 0; i < name.length; i++) { unique[name.charAt(i)] = true; } var result = ''; for (var char in unique) …

30
编程语言测验,Mark II-强盗
警察挑战 强盗的挑战 找到一个脆弱的答案。也就是说,答案还没有破解,也不是很安全。 通过弄清楚它的语言来破解它。也就是说,找到给定程序是有效程序的任何语言(以上述“警察挑战”中概述的规则为准)。这是否是警察所要使用的语言并不重要。 找到工作语言后,向强盗线索发布答案,并在警察的答案下方发表评论。如果您没有足够的声誉来发表评论,请在答案中说出这一点,然后有人会为您发表评论。 输出格式必须与警察预期的解决方案相同,才能构成有效的裂纹。 每个用户每个答案只能得到一个猜测。这包括告诉其他人答案或暗示您的猜测。您一定不能破解自己的答案(显然是……)。 破解答案最多的用户将赢得强盗的挑战。领带被破解答案的字节总数所破坏(越多越好)。 劫匪好运!

28
级联计数
你的挑战是写ň的代码片段,使得当你连接第一ķ ≥1在一起,他们生产的数量ķ。高N,越好。要注意的是:您在代码段中最多只能使用一个字符。 规则 您可以在一个(和一个)片段中多次使用同一字符。 这些代码段必须按照它们显示的顺序连接在一起,而不会跳过任何代码段。 您必须至少写两个片段。 所有摘录必须使用相同的语言。 请记住:代码片段不必是完整的程序或功能,也不必自己运行。-1是Java中的有效代码段,例如 所有产生的串联必须输出各自的K值。 获胜者是N值最高的人。决胜局是最短的整体节目长度,以字节为单位。 例 假设你的片段是AD,xc,123,和;l。然后: AD 应该产生 1 ADxc 应该产生 2 ADxc123 应该产生 3 并且ADxc123;l应该产生4。 该课程的分数为4。

9
显示OEIS序列
该整数序列的在线百科全书(OEIS)是整数序列的在线数据库。它包含将近280000个数学感兴趣的序列。 序列示例: 正整数(A000027) 质数(A000040) 斐波那契数字(A000045) 您的任务是编写一个显示尽可能多的OEIS序列的程序或函数,其源代码最大为100字节。您的程序应接受序列ID(不带前缀A和零)作为输入,并输出该序列中的前20个数字。 您无权直接从OEIS网站获取数据;所有序列都必须由您的代码计算。 计分 分数是程序可以显示的OEIS序列的数量。答案必须列出其程序识别的序列的ID。 例 这是Java 8中的有效答案: (int a) -> { for (int i = 0; i < 20; i++) { System.out.println(a==27?i+1:i*i); } }; 该程序可以显示正整数(A000027-输入27)和平方(A000290-输入290),因此其得分为2。 注意 请避免刮擦整个OEIS网站:-)您可以下载序列名称(约3兆)或序列值(约9兆)。请注意,此下载受OEIS最终用户许可协议的保护。

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.