编程拼图和代码高尔夫

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

4
用位异或分解没有数字0、3、7的数字
挑战 编写一个采用正十进制数的函数或程序,将其称为A,然后输出两个正数B和C,这样: A == B bitxor C B和C的十进制表示形式不得包含数字0、3或7。 例子 >>> decompose(3) 1, 2 >>> decompose(7) 1, 6 >>> decompose(718) 121, 695 >>> decompose(99997) 2, 99999 >>> decompose(4294967296) 4294968218, 922 >>> decompose(5296080632396965608312971217160142474083606142654386510789497504098664630388377556711796340247136376) 6291484486961499292662848846261496489294168969458648464915998254691295448225881546425551225669515922, 1191982455588299219648819556299554251659915414942295896926425126251962564256469862862114191986258666 由于分解不是唯一的,因此您的函数/程序无需输出与提供的示例完全相同的结果。 非常详细的规则 提交应采用完整功能或程序的形式。import陈述确实计入最终分数。 您可以假设输入A始终至少包含数字0、3或7。 您可能会认为分解始终存在。 您可以使用BigInt(如果它们是该语言的标准库的一部分),或者可以通过该语言的法律包管理器进行安装。 该功能应该很快。输入100位数字时,在相当现代的计算机上运行应该不超过20秒,而输入10位数字时,应该不超过2秒。 功能/程序应支持至少100位数的输入。 如果该功能/程序仅支持不超过N <100位的整数,则最终得分将受到+ 10×(100 / N-1)字节的惩罚。这是为了鼓励高尔夫球手支持更大范围的数字,即使输入可能很冗长。 有上的呈现没有限制,只要它们是显然十进制表示的输入/输出。 如果内置整数类型不足,则该函数可能会输入和输出字符串/ BigInts。 输入可以来自功能参数,命令行参数或STDIN。 …
20 code-golf  number 

30
震动探针的死亡:很多骰子
在网络漫画《达斯与机器人》(Darths&Droids)中,皮特(Pete)在该漫画所基于的虚构角色扮演活动中扮演R2-D2,曾声称(警告:链接的漫画中潜在的破坏者),他与帕纳斯塔科里亚(Phanastacoria)的失落宝珠一起操纵了他震动探针,他现在可以抛出1048576d4损坏。(通用汽车公司既没有证实也没有否认这一点。)由于应该有明显的理由,几乎没有人会真正有耐心掷出那么多骰子,所以编写一个计算机程序为他掷骰子,并以合理的价格输出掷出的总价值。格式。条目将根据程序大小(最短的程序,字节数,获胜次数),整体语言和每种语言进行排名,并且会中断运行时间。答案可能是完整的程序,也可能是函数定义。 每种语言的分数 腐霉菌 Maltysen-8个字节* Jakube-10个字节 杀伤人员地雷 Alex A-10个字节 贾姆 优化器-11个字节 Ĵ --12个字节** 剪辑10 Ypnypn-12个字节** ķ JohnE-13个字节 Ti-84 BASIC SuperJedi224-17字节* [R MickyT-23个字节 八度/ MATLAB Oebele-24个字节 PARI / GP 查尔斯-25个字节** Wolfram / Mathematica LegionMammal978-27字节 佩尔 Nutki-29个字节 AsciiThenAnsii-34字节 红宝石 Haegin-32字节** ConfusedMr_C-51个字节** 准将 标记-37个字节** 的PHP Ismael Miguel-38个字节 VBA 肖恩·柴郡-40字节** 电源外壳 Nacht-41个字节** Java脚本 拉尔夫·马歇尔-41字节 edc65-54字节(要求并非所有浏览器都提供ES6功能。) …
20 code-golf  random 

21
楼梯挑战
您的工作是重现这件艺术品: _____ | | | | _____| | | | | _____| | | | | _____| | | | | _____| 答案必须重新创建并打印出来。允许使用所有语言,无需直接印刷艺术品,也不需要某种程度的操纵。字节数最少的答案将获胜。 在世界标准时间周四上午6:30左右关闭。 我的朋友是使用Java进行此操作的,最初的内容是显示给我的,他拒绝向我显示源代码,现在我将以其他语言的出色表现使他眼花azz乱。:D 您不能使用任何其他字符 (这样更容易吗?)。 现任排行榜 Pyth -28字节-ISAACG CJam -30字节-Runer112 CJam -32位元组-MartinBüttner 最高投票: C -73个字节-Paul R isaacg凭借与Pyth的楼梯挑战赛获得冠军。在PPCG上提防类似的更多挑战!

11
限制性多语种
多重语言是同时在多种编程语言中有效的程序。大多数这样的多语言文字以一种语言的某些构造被解释为另一种语言的注释的方式(例如,#define在C 语言中被解释为几种脚本语言的注释)。 我很好奇,是否有可能制作一个不包含注释的非平凡的多语种,但是当您删除任何非空白字符时也会立即更改,因此,我向您提出这样一个程序。 具体规则如下: (输出)。您的程序必须使用每种语言在控制台上产生一些输出。也就是说,您的程序不允许不打印任何内容而直接退出。 (方差)。作为对标准多语言定义的放松,程序的输出可能会因语言而异。 (错误)。您的程序不得在任何一种语言下产生任何错误(广义定义)。对于大多数语言,这被定义为从编译器和/或解释器返回非零退出代码。 (限制)。从代码中删除任何单个非空白字符都将导致您的程序在每种语言下更改其行为。程序可以通过对该语言无效或更改生成的输出来“更改”。 这是一个代码挑战。优胜者是在大多数编程语言中都有效的程序。为了缩短程序长度,将打破联系。 限制规则不适用于删除多个字符。也就是说,如果同时删除多个字符不会对您的一种语言造成任何影响,那就很好。 请注意,该限制规则表明您不能将空格用作您的一种语言,因为删除任何非空格字符不会改变空格程序的行为。 这是一个满足以下所有限制的程序的简单示例,适用于Python 2和Python 3: print("Hello World!") 删除中的任何字符print将导致两种语言都抛出NameError;删除任何括号或引号将引发SyntaxError,删除任何字符串字符将更改两种语言的输出。(请注意,print("hello", "world")根据上述规则,这是一个更微妙但仍然有效的程序)。 这个示例有点la脚,因为Python 2和Python 3非常相似,因此我不会接受任何其他仅使用同一语言的不同版本的解决方案(尤其是Python 2和Python 3)。


4
建立一对间谍,将石头扔进河里
最近,在新发布的Puzzling.SE中,存在一个问题,就是间谍将石头扔进河里,这实际上是一个挑战: 两名间谍必须彼此传递两个秘密数字(每个间谍一个数字),而敌人不会注意到。他们已经商定了一种预先仅使用26个无法分辨的宝石进行此操作的方法。 他们在一条河里相遇,那里有一堆26块石头。从第一个间谍开始,他们轮流向河里扔了几块石头:第一个间谍扔了一些石头,然后是第二个,然后是第一个…… 每个间谍在转身时必须至少扔一块石头,直到所有石头都消失了。 他们观察所有的投掷,当没有更多的石头时发散。他们一直保持沉默,除了每回合扔石头的数量外,没有任何信息可交换。 如果数字可以从1到M,他们如何成功交换数字? 您的任务是构建一对程序,spy1并且spy2可以最大程度地解决此问题M。 您的程序每个都将输入从中1选择的数字M作为输入。然后,spy1将输出一个数字,代表它扔进河里的石头的数量,将输入该数字,也将输出要输入的石头spy2的数量spy1,依此类推,直到输出的数字总计为26。投掷结束时,每个程序将输出它认为另一个程序具有的编号,该编号必须与实际输入到另一个程序的编号匹配。 您的程序必须适用于所有可能的有序数字对(i, j),两者i和j均可从1到变化M。 规模最大的计划M将是赢家,第一个答案将打破平局。此外,对于第一个被证明适用的解决方案,我将获得+100的声誉赏金,对于被证明适用的第一个解决方案,我将获得M >= 2286+300的声誉赏金M >= 2535。

12
今晚或本周末重新插上电源
这是我第一次打高尔夫球,所以请告诉我它是否太宽泛或者我缺少任何有关一个好的拼图的信息! 挑战 在安大略省以及世界其他地区,都使用“使用时间”(TOU)定价来计费,该定价会根据您使用电力的时间而有所不同,每千瓦时的成本有所不同。 给定日期和时间,我想知道我处于高峰时段(红色),高峰时段(黄色)还是非高峰时段(绿色)。 输入值 假设以可接受的无时区的ISO 8601日期-时间格式提供输入,且最小精度为小时:(YYYY-MM-DDThh[:mm[:ss]]T为文字)。 例子 2014-09-01T14 2014-09-01T17:30 2014-09-01T17:30:02 输出量 输出应该是一个字符串On,Mid或Off。 规则 最短代码胜出 就此挑战而言,请忽略法定假日 假设在此帖子中找到了信息。将来,安大略省能源部可能会更改使用时间定价的实际规则。 信息 夏季工作日(5月1日至10月31日) 非高峰时间:19h00-07h00 高峰:07h00-11h00和17h00-19h00 高峰:11h00-17h00 冬季工作日(11月1日至4月30日) 非高峰时间:19h00-07h00 高峰:11h00-17h00 高峰:07h00-11h00和17h00-19h00 周末 非高峰:全天
20 code-golf  date 

1
高效的无错误*编码
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 使命 众所周知,地球上所有已知生物的遗传物质都是用DNA编码的。使用四个核苷酸腺嘌呤,胸腺嘧啶,胞嘧啶和鸟嘌呤。(通常由ATGC表示)。 希望存储整个基因组的生物信息学家当然不希望将其存储为ASCII,因为每个选择只能用两位来表示! 规格 您的任务(如果您选择接受)是编写一对程序,函数或方法,以将ASCII表示形式转换为二进制表示形式,然后转换回二进制表示形式。表示A为b00,Tas b01,Gas b10和Cas b11(此后称为“单位”)。 另外,每个字节的高位应包含该字节中的单位数,从而使每个字节代表一个三元组。 例如:"GATTACCA"成为b11 100001 b11 010011 b10 1100xx。 在ASCII到二进制输入中,空格,制表符和换行符应忽略。不在此集合中的任何字符[ \r\n\tATGC]都是错误,可能会被忽略或终止处理。 在二进制到ASCII的输入中,b00可以忽略两个高位的字节。 ASCII输出可能包含空格;但绝对不能超过二进制输入的大小的4倍加一个字节长,并且必须以换行符结尾。 二进制输出可以包含任意数量的b00xxxxxx“控制”字节。但绝对不能长于ASCII输入。 每个转换程序必须支持任意长度的输入;并应在大约线性时间内完成编码或解码。 扭曲 不幸的是,对于您要执行此任务的生物信息学家而言,他在某种程度上还是在您个人层面或某些层面上委屈了您。 也许他曾经和你姐姐出去一次,却再也没有打电话给她。也许他踩了你狗的尾巴。具体细节并不是很重要。 重要的是您有机会获得回报! 细节 每次转换应引入较小的错误率;每处理一万到一百万个单位一个错误的数量级。 错误可能是以下之一: 复制错误:"GAT TAC CA"变为"GAT TAA CCA" 删除错误:"GAT TAC CA"变为"GAT TAC A" 翻译错误:"GAT TAC CA"变成"GTA TAC …

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

8
像素艺术,第2集:显示超级马里奥兄弟的地图1-1
最后的挑战(Pixel-art,第1集:展示超级马里奥)只是一次培训……(而您以惊人的方式完成了,谢谢!) 这次,您需要做更多的工作。您必须在NES上显示超级马里奥兄弟的所有第一张全球地图,没有敌人,也没有马里奥。 您的程序或函数必须显示以下图像的所有像素,或产生与其类似的图像文件(BMP,PNG或GIF)。 您的程序不得以任何方式访问互联网。 如果需要,可以缩放输出,如果需要,像素可以是ASCII或HTML元素,只要它们具有正确的颜色即可。 这是您必须遵循的模型: 整个图片:http : //i.stack.imgur.com/2kfVc.png 磁贴集(如果需要):http : //img.ctrlv.in/img/14/10/19/5443f44c7eb78.png 您可以生成自己的磁贴集,该子集或超集。 您可以将tileet用作单独的图像文件,也可以将其包含在代码中(例如,在base64中)。如果是单独的,则将其大小(以字节为单位)添加到您的乐谱中。 具有坐标的地图:http : //goo.gl/c8xJIx或http://img.ctrlv.in/img/14/10/19/544373adc9f64.png 颜色: 天蓝色:#5C94FC 黑色:#000000 粉色:#FCBCB0(用于街区和城堡) 布朗:#C84C0C(用于街区和城堡) 橙色:#FC9838(用于“?”块) 浅绿色:#80D010(用于灌木丛,山脉,旗杆,经线) 深绿色:#00A800(用于灌木丛,山脉,旗杆,经线) 白色:#FCFCFC(云) 浅蓝色:#3CBCFC(云) 最短答案胜出。 编辑:将有两个记分板,一个记分以字节为单位,一个记分以字符为单位。 祝好运! PS:这里有一些注释可以帮助您优化程序: 云,灌木和山脉有重复的图案(每48列) 飞行块仅出现在第4和8行上 地图的每个图块或小精灵最多使用4种颜色(包括蓝色或透明颜色,具体取决于您的观看方式) 灌木丛只是“云顶”,具有不同的调色板 使用相同的16x16px迷你套,可以轻松地形成单,双和三重灌木/乌云。单峰山和三峰山也是如此

1
Fillomino解算器
Fillomino是一个难题,您可以在其中用多氨基酸来填充网格。每个多氨基酸都是一个连续细胞的区域。网格表示显示了多米诺骨覆盖每个细胞的大小。例如,将5在五个连续单元格的每一个中显示pentomino(5)(请参见下文)。相同大小的两个多氨基酸不能共享边界,但可以对角线边界。 对于每一个谜题,你开始与一些已知条件,必须在剩余的细胞填充。一个简单的难题示例和解决方案: 您的任务:给定一个方形拼图,将其解决并输出答案。输入可以通过stdin,单个命令行参数或文本文件进行。输入将以整数形式给出n,每n行后跟n数字行。空单元格将以period(.)的形式给出。对于上面的示例难题,它将是: 5 3..66 5.4.6 .54.6 .1.6. ..312 输出是已解决的难题,n以n数字行给出,输出到控制台或文本文件: 33366 55446 55466 51462 33312 如果拼图无效,则输出0。如果输入格式错误或没有解决方案,则难题可能无效。如果有多个解决方案,则可以输出其中任何一个或全部。 由于每个单元格都由一个数字表示,因此所有谜题都将由多米诺骨牌的大小组成,9且仅在下方。如果没有较大的多氨基酸无法解决,则认为它无效。 有效答案将解决任何给定的难题,而不仅仅是输出测试用例的解决方案。没有外部资源,无论是在线还是本地。如果碰巧是具有内置fillomino解决功能的语言,则不能使用它。简而言之,公平竞争。 测试用例: 输入: 9 ..21.3..5 .5...5..5 .1.44.334 ...53.4.. 2.3.3..5. 1.15.5.15 ..45..1.. .24.53.53 ....2.... 输出(可能的解决方案): 322133315 355445555 315443334 235531444 233135551 141535515 344553155 324553553 321223133 请记住,有些多氨基酸没有给定的数字,有些则不止一个。在给定的数量和多氨基酸之间没有一对一的关系。 分数是标准的代码高尔夫,程序的大小以字节为单位。

1
保护我的墙壁免受这些讨厌的门的侵害
门把手非常好,但是当您打开一扇门时,它总是会使周围的墙壁凹陷。我需要您输入房间的ASCII艺术作品,如下所示: +---------+--X --X --+-----+ | \ \ |\ | \ | | \ \ | \ | \| | X | \ | X | / | | \ X | / | \ / | / | \ / | +---X --+-------X------+-----+ 并输出带有门挡的房间,如下所示: +---------+--X --X --+-----+ | \ . …
20 code-golf 

1
玩杂耍
您的任务是通过完成给定的模板来生成有效的杂耍模式。但是首先,您可能需要知道如何表示这种模式。 Siteswap简介 Siteswap是杂耍模式的既定符号。通过将模式分成节拍来工作。每次跳动时,您的左手和右手交替扔球。每个掷球(即每个节拍)都用一个数字表示,该数字指示下一次何时掷该球-这直接对应于掷球的高度。 让我们看一些例子。在这里查看所有这些动画。 3球级联 最简单的3球图案。每三拍一掷球(交替动手)。写出节拍,如下所示(ASCII行将两个发出相同球的节拍连接起来): Beat 1 2 3 4 5 6 7 8 9 Hand L R L R L R L R L Siteswap 3 3 3 3 3 3 3 3 3 └─┼─┼─┘ │ │ └─┼───┘ │ └─────┘ 请注意,每个L节拍都将扔一个球,然后每个节拍都将其扔出去R.Sitewap模式隐式重复,因此该模式通常表示为333,尽管3也足够了。 441 这是一个sitewap 441稍微复杂一点的示例: Beat 1 2 3 …
20 code-golf 

7
确定在宝石迷阵/第3场比赛中是否存在移动
背景 在“宝石迷阵”和类似的游戏中,玩家必须在8x8的宝石网格中交换任意两个相邻的宝石(没有对角线),以便连续匹配三个相同颜色的宝石。宝石可以水平或垂直匹配。游戏的进行一直持续到没有动作可导致连续三局为止,此时游戏结束了。 任务 目的是编写一个确定“宝石迷阵”游戏是否还没有结束的程序。换句话说,它必须检查是否有可能连续移动至少三个。连续可以有三个以上的宝石,这仍然是有效的举动。 输入值 您的程序必须通过标准输入接受Bejeweled网格的8x8表示形式。七种宝石颜色中的每一种将由1到7的数字表示。每行将包含一行,并且将输入8行,每行包括8位数字。请参阅示例。您可以假设输入将始终遵循此格式,并且永远不会连续包含三个。 输出量 然后,程序必须输出(至标准输出),yes或者no取决于是否存在至少一个有效动作,该动作将导致连续出现三个或更多宝石。您的程序不得输出yes或的单个实例以外的任何内容no。 规则 您的程序不得使用任何外部文件或资源,命令行参数或要求使用特定的文件名。源代码中字节数最少的程序将获胜。 例子 输入: 12314131 13224145 54762673 61716653 61341144 23453774 27645426 75575656 输出: yes 输入: 35261546 76421754 15743271 62135642 35617653 64565476 54427254 15635465 输出: no 有关其他测试案例,请参见下面的MT0答案。
20 code-golf  game  grid 

21
使用集合论的字符串长度
摘自Wikipedia 对自然数的集合理论定义 自然数的集合N定义为包含0且在由S(n)= n∪{n}定义的后继函数S下闭合的最小集合。 用这种方式定义的前几个数字是0 = {},1 = {0} = {{}},2 = {0,1} = {{},{{}}},3 = {0,1,2 } = {{},{{}},{{},{{}}}}。 使用自然数的此定义计算字符串的长度。 输入 任意长度的a-zA-Z中的字符串 以设置符号输出字符串的长度,不带分隔符 例子 输入 空字符串 输出 {} 输入 一个 输出 {{}} 输入 aaaa 输出 {{} {{}} {{} {{}}} {{} {{}} {{} {{}}}}} 为了提高可读性,输出带有分隔符的“ aaaa”是 { {} {{}} {{} …

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.