编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

16
给我位宽n的格雷码列表
格雷码是一系列的位宽二进制数字,n其中连续数字仅在一位中有所不同(请参见示例输出)。 参考 输入示例: 3 输出示例: 000 001 011 010 110 111 101 100 笔记: 这个问题似乎有欺骗,但它不是,对于这个问题是不是代码高尔夫球场,它需要不同的输出。不过,这将有助于检查答案。 您可以假定n包含输入的变量。
11 code-golf  binary 

3
从头开始输出固态PNG
输入:RGBA十六进制颜色c(例如FFFF00FF)和大于0且小于1000的整数n(例如200)。 输出:PNG文件的原始字节,以便在将输出保存到文件并在图像查看器中打开时,显示填充有颜色的n按n图像c。 规范:您的程序应准确输出: PNG标头(89504E470D0A1A0A十六进制) IHDR包含以下规范的块: 宽度:上一个输入 n 高度:上一个输入 n 位深度:8(RGBA) 颜色类型:(6带有Alpha的Truecolor) 压缩方式: 0 过滤方式: 0 隔行扫描方法: 0 一个或多个IDAT包含图像数据的块(先前输入的彩色实心图像c);可能被压缩或未压缩 一个IEND图像结束区块 有关更多详细信息,请访问Wikipedia,W3网站或通过Google搜索。 限制条件: 您不得使用任何用于处理任何类型图像的图像库或功能。 您的程序必须在3分钟内运行,并为所有输入输出10 MB以下的文件(完整性检查)。 这是代码高尔夫球,因此最短的代码(以字节为单位)将获胜!

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 

5
算法编织-母亲节
任务: 您的任务是创建一个程序,当给定一定数量的股线和编织层的迭代次数时,该程序将告诉每个股线的去向。规则如下: 股数始终为奇数,介于3到6000之间(含) 当您开始时,这些股将被分成2个(几乎)相等的束,left和和right。left当您开始时,它会多一束。 输入7: / / / / \ \ \ 1 2 3 4 5 6 7 每次迭代时,具有更多线束的一侧的最外面的线束将放置在面向相反方向的中心。中心定义为相对的股线之间:////middle\\\。 输入7的1次迭代(链1已移至中心): / / / \ \ \ \ 2 3 4 1 5 6 7 例: 输入: 3 4 计算方式: 1 2 3 \ 2 1 3 / 2 3 …
11 code-golf 

7
挫败LZMA2压缩
目标 创建一个或多个程序以共同破坏和修复文件,以防止LZMA2有效工作。打扰和修复例程必须是相互的,因此您可以准确地恢复原始文件。 目标 以普通UTF-8格式收集的莎士比亚作品(5,589,891字节) Wikimedia Commons 2013年度全分辨率图片(1,659,847字节) 压缩方式 Ubuntu /相关: xz -kz5 <infile> 视窗: 7z.exe a -txz -mx5 <outfile> <infile> 其他:使用压缩级别5的LZMA2压缩器将莎士比亚作品压缩为1570550字节±100字节。 得分;总和(一切以字节为单位,ls -l或dir它): 程序的大小(可逆地“破坏” /修复文件所需的总和) 大小之间的差异(绝对值): 莎士比亚的原始作品集和经过修改(未压缩)的副本。 原始照片和修改(未压缩)的副本。 大小差异或0,两者之间的较大者: 莎士比亚原始作品集减去修改后的LZMA2压缩副本。 原始照片减去修改后的LZMA2压缩副本。 例 得分不高,懒惰但符合标准的Python 2.x示例: import sys x = 7919 if sys.argv[1] == 'b' else -7919 i = bytearray(open(sys.argv[2], 'rb').read()) for …

2
使用NAND逻辑门构建位计数比较器
阿位计数比较器(BCC)是一个逻辑电路,它利用计数输入一些号码A1, A2, A3, ..., An以及输入B1, B2, B4, B8, ...表示一个数字。然后,它返回1如果总数A是上投入大于数以二进制由所表示的B输入(例如B1,B2和B8将使数11),以及0以其他方式。 例如,对于一个位计数比较器,其需要5输入,其中A2,A4,A5,和B2被设置为1,将返回1因为有3个A输入,为上,这是大于2(数表示仅通过B2正对)。 您的任务是创建一个位计数比较器,该计数器总共使用16个A输入和4个B输入(表示从1到的位8),仅使用两个输入NAND门,并使用尽可能少的NAND门。为简化起见,您可以在图表中使用AND,OR,NOT和XOR门,并具有以下相应的分数: NOT: 1 AND: 2 OR: 3 XOR: 4 这些分数中的每一个都对应于构造相应门所需要的NAND门数量。 使用最少的“与非”门产生正确结构的逻辑电路胜出。

13
无指向的说出顺序
您也正在制作一个程序,该程序以整数作为输入,并首先输出该数字与外观和说话顺序相同的数字。 例如: $ ./LAS 8 [1,11,21,1211,111221,312211,13112221,1113213211] 只要用户可以清楚地看到序列的不同编号,输出列表的确切方法就无关紧要。不过这里是要抓住的地方。您不能使用任何类型的用户定义变量。 例如: 没有变量,包括范围变量。 具有功能时,它们不能具有名称。(例外,如果您的语言需要主要功能或类似功能,则可以使用该功能。) 当您具有函数时,它们不能具有命名参数。 另外,您可能无法使用具有与外观和说话顺序相关的特定功能的库,并且无法访问网络,也无法为程序提供任何文件(尽管它可以生成并使用自己的文件。)这是代码高尔夫,字符中最短的代码将获胜!

5
运行蒙蒂·霍尔问题
关于模拟Monty Hall问题已经存在一个问题。这是不同的。该用户将播放的蒙提霍尔问题。您的程序将扮演主机的角色。Montybot,如果您愿意。 步骤如下: (随机)选择三个门中的哪个隐藏奖品。 输出三个门的视觉显示。一个简单的ABC会做。或三个方块。管他呢。 接收选择其中一扇门的输入。这可以是在所选门上单击鼠标,单个字母输入(B)或其他方式。 打开另一扇门。您没有打开所选的门。您不会打开隐藏主要奖金的门。那可能意味着您别无选择,或者可能意味着您有两个选择。如果您选择两个,则随机选择一个。直观地表明门已经打开,并且没有任何奖金藏在门后。对于基于程序文本的输入/输出,这可能与output一样简单AB0,以显示门C已打开。随时更具创造力。如果您正在执行GUI程序,则显示选择取决于您。 接受来自用户的输入。用户可以输入stick或switch(或对于GUI程序,单击按钮,或使用选择输入,或其他)。如果用户输入的不是stick或switch,则实现未定义。做你想做的。 输出文本You won!或You lost。 终止程序。 规则: 当您必须随机选择某物时,不必担心密码随机性。任何rand()功能都可以。 该程序不得作弊。奖品必须在比赛开始前就位。也就是说,必须按照给定的顺序执行这些步骤:首先选择一扇门,在后面隐藏您的奖金,然后请玩家选择。必须在步骤4中选择在步骤4中打开哪扇门:事先未选择。 步骤6中的输出必须诚实。 这是代码高尔夫。最短的代码获胜。
11 code-golf 

1
在“三消”游戏中找到最佳即时动作
今天的挑战是要像这样输入信息: fbcfbee ffcabbe debceec bccabbe edcfbcd daeaafc eebcbeb 并在类似“宝石迷阵”的游戏中输出可能的最佳动作,该动作将匹配三个或更多字母,如下所示(请注意大写字母B和C): fbcfbee ffcabbe deBCeec bccabbe edcfbcd daeaafc eebcbeb 完整规格: 输入将是每n行n小写字母(n可以是任何数字)。 输出将是您在三消游戏中可以采取的最佳举措,其中两个您想交换的字母都大写。 匹配项应具有以下优先级(在这些示例中,.表示无关紧要的正方形): 一排五 xxYxx ..X.. 断五行 X.. Yxx x.. x.. 要么 .X. xYx .x. .x. 四排 xYxx .X.. 三排 xYx .X. 您必须找到最高优先级的匹配并输出。 如果存在多个具有相同优先级的匹配项,则可以输出其中任何一个。 总会有至少一场比赛(如果没有比赛,或者您想做任何事情,您的程序可能会中断)。 I / O可以采用任何合理的格式(stdin / out,读写文件,函数自变量/返回值,对话框等),但不可以进行硬编码(如x="[insert input here]")。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。如果您出于某种原因使用任何网络访问,则从网络下载的所有字节都将计入您的分数。
11 code-golf  game 

5
欧拉前线9
欧拉计划(Project Euler)是另一个有趣的编程挑战网站,可以进行比赛(好玩)。早期的问题起初很温和,但随后的困难却激增至最初的一百多个左右。前几个问题在查找素数,倍数和因数之间具有一些共性,因此可能会有一些有趣的代码微重用的机会可以使用。 因此,编写一个无需先验知识即可解决前9个问题中的任何一个的程序。 用户通过调用时的参数或运行时的标准输入,由用户选择ASCII(1到9)(包括ASCII)从1到9。(您可以计算所有答案,但只能显示一个。) 正确答案必须使用ASCII以10为底的新行打印。 程序应在不到一分钟的时间内执行(建议使用PE)。 通过“无先验知识”,我的意思是你的代码必须获得答案,而无需外部资源‡。像这样的程序将被认为是无效的(不过,如果我没有打错,还是正确的): print[233168,4613732,6857,906609,232792560,25164150,104743,40824,31875000][input()-1] ‡对于问题8(涉及1000位数字),您可以从外部文件中读取该数字,只需指定其存储方式(例如,二进制,文本,标头,导入的模块)和/或将其包含在您的答案中(不计入主程序的长度)。 分数按字节计。 2周后,字节计数的领导者获得了15个Unicorn Points™奖励。
11 code-golf  math 

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自己的用于比较(强尼的速度更快!)。我将在结束时进行最终比较。

6
飞镖遇到Codegolf
我认为每个人都熟悉飞镖,有些人不了解飞镖的得分,因此对于这些人来说,这是一个有用的链接。 董事会 飞镖可以比作20块的馅饼。每件分为4个部分。 一个称为double的小外圈(点x2) 一个叫做单环的大环(点数x1) 另一个称为三重的小环(点数x3) 另一个称为单环的大环(点x1) 板子中间还有两个环,一个绿色和红色(经典板子) 红色圆环,板的中心称为“靶心”或“双头牛”,有利于50分。这是一个双数,因此允许与它结帐。 绿圈,称为多头,单头公牛或简称25,算作单头。 挑战 查找3支或更少的飞镖的所有结帐可能性。 用户可以输入一个整数,您将必须检查是否有可能用3支飞镖(或更少的飞镖)将分数设为0。 例子 范例1: Input: 170 Output: T20, T20, Bullseye 范例2: Input: 6 Output: D3; S3,S1,D1; S2,D2; S2,S2,D1; D2,D1; S4,D1; D1,D1,D1; S1,S1,D2; T1,S1,D1; 范例3: Input: 169 Output: No possible checkout! 规则 基本的飞镖规则,您必须以双打(木板或靶心的外圈)结尾 不使用外部资源。 允许对可能的结帐进行硬编码,但是请记住,这是codegolf,它不会使您的代码简短;) 命中的单元格将以C + N格式显示,其中C = T(表示三重),D …
11 code-golf 

4
建立确定性的Go AI
这是我前几天想到的一个有趣的问题,它涉及到一些代码位与其他代码位竞争,不仅是在代码具有的属性中,而且是通过与其他代码位进行游戏。 您的任务是构建一个程序,该程序采用Go板的当前状态,并确定要采取或通过的动作。 您的程序将接受以下内容作为输入: 19行,每行19个字符,代表Go板上当前的棋子。的字符0代表一个空的正方形,1是黑色和2白色。 两个数字代表每个玩家拥有的囚犯件数(黑色,然后是白色)。 一个数字,代表要移动的人(黑色或白色)。如上所述,1是黑色,2是白色。 并输出以下内容之一: 一对坐标,a b表示移动的坐标。1 1是左上角的正方形,第一个和第二个数字分别代表向下和向右移动。 字符串pass,表示通过。 例如,该程序可能会收到以下输入: 0000000000000000000 0000000000000000000 0000000000000000000 0001000000000002000 0000000000000000000 0000000000000000000 0001210000000000000 0000100000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0002000000000001000 0000000000000000000 0000000000000000000 0000000000000000000 0 0 1 代表只玩了几步的游戏。 然后程序可能会输出6 5,这意味着“在顶部的第6点和左侧的第5点放置一块黑色的石头”。这将捕获处的白色石头7 5。董事会的状态将更改为: 0000000000000000000 0000000000000000000 0000000000000000000 0001000000000002000 0000000000000000000 0000100000000000000 0001010000000000000 0000100000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 …

7
代码高尔夫:目录树->树
竞赛(!):使用您选择的语言,编写一个程序,该程序将遍历给定目录的目录树并输出与之对应的树(即数组数组)。假定目录是一个预定义的变量D。以最少的字符数为准。 规则: 您必须使用递归 见规则 注意:假定没有递归深度限制。换句话说,您的代码只需要为足够小的目录树工作,原则上就可以为更大的目录树工作。 例如: 目录树是 dir1 ├── dir11 │ ├── file111 │ └── file112 ├── dir12 │ ├── file121 │ ├── file122 │ └── file123 ├── file11 ├── file12 └── file13 输出树是 [[[],[]],[[],[],[]],[],[],[]] 这里的第一个代码高尔夫,让我知道我做错了什么。 玩得开心 :)

4
从图像产生数字2014
在2014年挑战赛中,迈克尔·斯特恩(Michael Stern)建议使用OCR解析到2014年。我想朝另一个方向挑战。使用您选择的语言/标准库中的内置OCR,设计最小的图像(以字节为单位),将其解析为ASCII字符串“ 2014”。 Stern的原始映像为7357字节,但是经过一点努力,它可以无损地压缩到980字节。毫无疑问,黑白版本(181字节)在相同的代码下也能正常工作。 规则:每个答案都应给出图像,其大小(以字节为单位)以及处理该图像所需的代码。出于明显原因,不允许自定义OCR ...!允许使用任何合理的语言和图像格式。 编辑:为了回应评论,我将扩大它的范围,以包括任何现有的库,甚至对于没有可用的OCR的语言,甚至包括http://www.free-ocr.com/。

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.