编程拼图和代码高尔夫

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

17
构建不存在的语言的解释器
为假的,基于堆栈的语言构建解释器,该解释器获取输入,解释输入并将结果输出为数字数组。它应该遍历每个字节并根据此表执行不同的功能: 0000(0):串联(将堆栈中的前两个数字组合起来,就好像它们是字符串一样。例如:12,5-> 125) 0001(1):递增(在堆栈顶部的数字加1) 0010 (2):递减(从堆栈顶部的数字减去一个) 0011(3):乘以(堆栈的顶部两个数字相乘) 0100(4):除(将第二个到顶部的数字除以在堆栈顶部的数字) 添加(添加顶部的堆栈两个数字上):0101(5) 0110(6):减去(减去栈顶的数目从所述一个在其下方) 0111(7):指数(计算从小数到小数到大数的乘方) 1000(8):模数:(以小数为模,找到从小到大的数) 1001(9):向右旋转(将堆栈向下移动一格。底部的数字现在位于顶部) 1010(A):向左旋转(将堆栈向上移动一格。顶部的数字现在位于底部) 1011(B):复制(复制最上面的数字,以便它出现两次。例如:4,1变成4,1,1) 1100(C):双重复制(复制堆栈上的最上面的两个数字。ex :4, 1,2变成4,1,2,1,2) 1101(D):交换(交换堆栈中的前两个数字。例如:4,1,2变成4,2,1) 1110(E):双交换(交换最上面的两个数字,下面两个交换。例如:1,2,3,4,5变成1,4,5,2,3) 1111(F):删除/弹出(删除上面的数字堆栈) 例如,包含 1 1 BC 5 C 5 B 9 5-输入(十六进制) | | | | | | | | | | 1 2 2 2 4 4 6 6 2 …

30
随机票证代码生成器
一家彩票公司希望生成一个长度为10个字符的随机彩票号码。 用任何语言编写代码以创建这样的数字,其中每个数字仅出现一次,例如,9354716208在该数字中,从0到9的所有整数都仅出现一次。该数字应为随机数。 生成的号码应显示在屏幕上。 它必须能够生成所有允许字符的所有排列。 要求代码尽可能小(以字节为单位)。
18 code-golf 

10
八度高尔夫打球技巧
您在Octave打高尔夫球有哪些一般提示?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上是特定于Octave的(例如,“删除评论”不是答案)。请为每个答案发布一个提示。
18 code-golf  tips  octave 

1
打个双奎因让您更美好!
女士们,先生们,晚上好。 今晚-我们面临代码挑战。比赛的定义不是分数(小行星),而是您是否可以完成比赛(塞尔达传说)。为了比较起见,字节的数量(呃...但是你说...)。 您面临的挑战是编写一个可以同时在WhiteSpace和您选择的任何其他语言中编译的quine 。这两个Quines必须具有绝对相同的输出(作为Quine与源代码绝对相同)。quine的长度必须大于3个字节。 您的分数是源代码的大小(以字节为单位)。 鉴于此挑战涉及WhiteSpace,请逃避您的答案,以使它们清晰可见-最好采用C风格。您的分数是原始来源(以字节为单位),而不是转义版本。 祝好运。

3
Manufactoria:生成最慢的接收程序
编写一个Manufactoria程序,该程序将接受空的输入磁带。但是请不要快做!我的意思是,快速编写程序,但不要让它快速运行。程序越慢,越好,只要它最终终止即可。下面的示例程序采用3:51(模拟器报告的“总时间”)。 http://pleasingfungus.com/Manufactoria/?lvl=36&code=g12:5f3;r9:8f1;p12:9f3;c13:9f0;r11:9f0;r10:9f0;r9:9f1;b11:8f0;b10:8f1 ; r9:7f2; c10:7f2; c11:7f2; c12:7f3; q12:8f3; y13:8f2; y14:8f2; y15:8f1; y15:7f0; y14:7f0; y13:7f0; g12:6f3;&ctm = Slow_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ; 您的程序从空磁带开始。它必须乱涂一点,但最终会到达输出平方。如果需要,可以将数据保留在磁带上。7x7 Manufactoria板上最慢的程序胜出! 您的右箭头键是您的朋友,它可以加快模拟器的速度。 破坏模拟器的奖励积分!

30
如何找到正数的阶乘?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 挑战: 编写输入正数并返回其阶乘的程序或函数。 注意:这是一个代码询问问题。请不要认真对待问题和/或答案。更多信息在这里。每个代码询问问题也是一个流行度竞赛问题,因此,票数最高的答案将获胜。

25
大写字符串
给定一个字符串,将其大写。大写的意思是conTeNT-lENgth改变Content-Length。在示例中,我显示了带有2个单词的字符串-作为单词边界。但是,我希望您为包含以单个字符分隔的任意多个单词的边界的字符串编写代码。该边界可能会在整个字符串上变化。 条件 使用regular expressions是不允许的。 句子(字符串)中可以有任意数量的单词。 每个单词将由English大小写字母组成[a-zA-Z]。 句子中的不同单词将由单个字符分隔。该角色将仅是任何一个-,.,<space-character>,/,&,#。您可以放心地假设该句子除提及的字符外将不包含任何其他字符。 字边界应保留在输出中。 最短的代码胜出。 例如你的程序应该输出Begin/With.Type&Content的BeGin/wITH.tyPE&conTeNt。 Some test cases: "aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe" "type&AgeNt/CC/COnteNt lEnGth#acCePT/AgeNt.RAnGe-Cc/contEnt/cODe" "cc/rEspoNCe.lEngtH#tYpE-witH&UsEr/bEgIN&uSer.AGEnT&begIn/aCCEPt/Cc" "lENgTH#USeR.tYpE/BeGiN&LENGth tYpe/ACCEpt#rANge/codE&AnD-ACCepT/ConTenT" "contENT/ACcEpT" "BeGin/wITH.tyPE&conTeNt" "Code.cc#User.lenGTh-USer-AND&tyPE TypE&leNgtH.tYPe usER.UseR&with" "RaNgE&COnTeNT WITh CoNTENT-TypE tyPe" "BEgin COdE#uSeR#aGeNt.USeR" "TypE LENGth"
18 code-golf  string 

8
通过四舍五入节省金钱
在加拿大,一分钱不再流通。现金付款四舍五入至最接近的5美分。 可以通过分割购买来节省金钱。例如,两个$ 1.02的商品的价格为$ 2.04,四舍五入为$ 2.05,但是在单独购买的商品中,每个价格四舍五入为$ 1.00,总计为$ 2.00。但是,当以1.03美元的价格购买两件商品时,最好一次购买。 另一种省钱的方法是,在四舍五入不利的情况下使用信用卡,因为未对信用卡付款进行四舍五入。如果我们要两个1.04美元的商品,则无论我们如何分割购买,总价格将合计为2.10美元。因此,我们应该使用信用卡支付这些物品。 编写一个函数或程序,该函数或程序接受以整数形式(以美分为单位)的商品价格列表,并输出可以通过一系列购买(可以现金或信用方式购买)实现的那些商品的最低总价(以美分)。 最短的代码胜出。 测试用例 [] : 0 [48] : 48 [92, 20] : 110 [47, 56, 45] : 145 [55, 6, 98, 69] : 225 [6, 39, 85, 84, 7] : 218 [95, 14, 28, 49, 41, 39] : 263 [92, 6, 28, …
18 code-golf  number 

21
Javascript:创建一个1x的10x10数组
显然,使用单独的函数和库将面临艰巨的挑战,因此不允许使用它们。 您的代码必须符合ECMAscript规范(任何规范都可以),因此没有针对浏览器的答案。 实例化后,该数组必须可访问。 我有一个暂时不回答的答案。 注意:这项挑战是特定于javascript的,因为众所周知,使用javascript制作多维数组很不方便。

3
使用您喜欢的绘图工具以程序方式重新创建xkcd图
最近已经有相当数量的问题,关于娱乐的XKCD风格的图形类似以下(1064中)各种语言。 您的目标是尽可能重现任何现有的xkcd漫画。漫画必须至少具有一个简单的图形或饼图或类似元素。 获得投票最高的答案,不得早于第一个有效答案后的10天。 您的条目必须包含以图形语言显示如上所述的xkcd-comic的代码,至少使用其绘图工具(Mathematica,MatLab等)。 漫画不能存储为图像,必须按程序生成 原始网站,其镜像或硬盘上的内容等都不得有任何链接。 投票者应评估结果与原始内容的相似性,并在较小程度上评估解决方案的美观性。这里没有代码问题,但是期望有一个尽可能短而简单的解决方案。

7
查找最便宜的密码锁
我有一个带字母而不是数字的密码锁。看起来像这样:http : //pictures.picpedia.com/2012/09/Word_Combination_Padlock.jpg有5个卷轴,每个卷轴上都有10个不同的字母。 大多数人喜欢使用单词作为组合词,而不是随意使用字母字符串。(当然,安全性较低,但是更容易记住。)因此,在制造锁时,最好将其构建为具有字母组合,以便可以创建尽可能多的5个字母的英语单词。 您的任务(如果选择接受)是找到要分配给卷轴的字母分配,这将允许创建尽可能多的单词。例如,您的解决方案可能是 ABCDEFGHIJ DEFGHIJKLM ZYXWVUTSR ABCDEFGHIJ ABCDEFGHIJ (就是这样,如果您没有想像力的话)。 为了保持一致,请使用位于http://www.cs.duke.edu/~ola/ap/linuxwords的单词列表 该列表中的任何5个字母的单词都可以,包括专有名称。忽略Sino-和L'vov以及列表中包含非z字符的其他任何单词。 获胜的程序是产生最多单词的程序。如果多个程序找到相同的结果,则第一个要发布的程序将获胜。该程序应在5分钟内运行。 编辑:由于活动已经停止,并且没有更好的解决方案出来,所以我宣布彼得·泰勒为赢家!感谢大家的创造性解决方案。

14
用于恶意目的的奇怪分类机
晚上好,高尔夫球手! 您面临的挑战是完全不对一系列数字进行排序。 输入值 恰好100个整数将被喂入您的程序。您的程序可以将输入作为文件或通过stdin接受。每个整数将由换行符分隔。 在您选择的语言中,这100个整数的范围从带符号整数的最小值到最大值。 不会有重复的值。这些值可以是有序的,无序的或部分有序的-您的程序应该能够处理各种情况。 输出量 输出必须是100个完全未排序的整数,每个整数之间都用换行符分隔。输出可以通过stdout或到文件。 完全未排序表示如果列表按有序序列完全排序,则该值将不与该值相邻。 得分了 每个角色1分,最低分获胜。不使用任何内置或库排序功能的解决方案,则奖励为-100。对于没有内置随机数功能的任何解决方案,奖励为-20。 我试图尽可能完整地定义这个问题。如果您有任何问题,请询问。如果您对我下次如何做有任何评论,请告诉我。 前面!

1
在井字游戏中迷路
编写一个将播放Misère井字游戏的程序。也就是说,目标是迫使对手连续三局。 在标准输入上接受“ X”或“ O”(字母,不是零),以确定程序将以哪一侧播放。然后在回合中输出个位数,直到对手结束,直到对手结束(X总是先行)。确定赢家后,输出X或O代表谁,或D代表平局。例如,如果O连续获得3,则X获胜。 假设木板编号如下: 0|1|2 ----- 3|4|5 ----- 6|7|8 理想情况下,解决方案将是最佳的,并且永远不会失败。像井字游戏一样,完美的比赛总是会导致平局。如果遵守上述协议,我可以针对各种可能的策略自动测试提交内容。 优胜者是最短的代码。如果它从同样好的动作中随机选择,则会获得加分,使它变得更加不可预测。

4
明星编程!
挑战 编写一个可以打印星星的程序或函数!该程序将通过标准输入接收两个参数:恒星的大小和恒星的点数。星形可以是0到10之间的任何大小,并且可以具有3、4或5个点。输入参数用逗号分隔,例如:5,3表示5星3点的大小。星星由星号组成* 考虑到该程序将仅接收有效输入。 打印件必须正确间隔,以便在输出中看到漂亮的星星! 参数说明 点数 是从中央星号开始计数的武器数量。 3分: * * * * * * * 它们由一个垂直臂和两个对角臂组成。斜臂之间的距离是2*size-1 4分星星 * * * * * * * * * 它们的形式为X,由两条对角线组成。行之间的分隔是2*(size-1)+1 5分星星 * * * * * * * * * * * 它们由垂直线和水平线组成。水平线中的每个星号均以一个空格分隔。他们也有两条对角线,它们之间2*(size-2)+1 尺寸 大小是从中央星号(包括中心星号)开始算起的每个星臂的星号数。 1星大小由一个星号组成 * 大小2星的例子 3分 * * * * …

4
将Fractran转换为Brainfuck
背景 Fractran是John Conway发明的深奥的图灵完备的编程语言。Fractran程序由分数的有序列表组成。该程序以一个整数作为输入开始。程序的每次迭代,都会在列表中搜索第一个分数,以便将该数字乘以该分数会生成另一个整数。然后从列表的开头开始,用新的编号重复此过程。当列表中没有可以与数字相乘的分数时,程序将终止并给出数字作为输出。 Fractran具有图灵完备性的原因是因为它模拟了套准机。数字的素数分解存储了寄存器的内容,而除法和乘法是有条件地从寄存器中进行加减的一种方法。我建议阅读Wikipedia文章(链接到上面)。 挑战 您的任务是编写尽可能最短的程序,该程序可以将来自STDIN的有效Fractran程序作为其唯一输入,并向模拟Fractran程序的STDOUT生成有效的BF程序。使用BF模拟Fractran程序的方式有两种。 注意:您的答案不是BF程序。您的答案是从任何给定的Fractran程序生成BF程序的代码。目的是使BF程序与Fractran程序等效。(从技术上讲,您可以参加高炉比赛,但这很难) 选项1 您的程序应输出执行以下操作的BF程序: 从STDIN中以相应的ASCII字符的形式获取正好1个数字(由于BF输入的工作方式),这是Fractran程序的输入。 以相应的ASCII字符的形式将精确的1数字打印到STDOUT,这是Fractran程序的输出。 此选项旨在表示Fractran虚拟机的确切输入和输出。 选项2 程序生成的BF代码应执行以下操作: 通过对已经编码在内存中的数字进行质因子分解来进行输入(在运行程序之前)。如果输入为28(2 * 2 * 7),则第二个单元格中的值为2,第七个单元格中的值为1(指针从单元格0开始)。所有其他单元将为零。 程序终止时,通过将输出的质数分解编码在内存中来给出输出。如果输出为10,则像元2和5中的每个像元都必须为1。所有其他素数像元必须为零。其他单元格的内容无关紧要。 此选项表示Fractran语言背后的计算模型。 规则与要求 输入(程序顶部)将是STDIN上的分数列表。每行将有一个小数,在分子和分母之间带有逗号。空行表示输入的结尾。分数将始终减少到最低的条件。 程序的输出应该是单行有效的BF程序,输出到STDOUT。该程序应该能够根据两个选项之一模拟该特定的Fractran程序。对于任何输入,生成的BF程序应能够产生与Fractran程序相同的输出。 您必须说明选择的选项。 您可以选择BF存储器和磁带上的边界以及它们是否在包装 代码高尔夫。同样,输出的BF程序的大小无关紧要,仅执行转换的程序的大小无关紧要。 程序只能由可打印的ASCII组成 如果我在任何地方都模棱两可,请不要犹豫。这是一个非常复杂的挑战,难以描述。 另外,请为以下输入发布程序生成的BF代码,以提供一种简便的方法来检查程序是否正常运行: 33,20 5,11 13,10 1,5 2,3 10,7 7,2 此程序在数字的二进制扩展中计算1的数量。但是,输入和输出的格式很奇怪(与所有Fractran程序一样)。输入的形式为2 ^ A,而输出的形式为13 ^ B。

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.