编程拼图和代码高尔夫

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

1
纸牌梦-创造可赢的纸牌起手牌
是我。凯文·约翰逊。 5月21日。您正在Aperture Science(地球上最好的公司)工作,明天我们将发布旗舰窗口系统(或WindowS)CavOS的3.0版。不幸的是,明天早晨,我们的主要竞争对手也将发布其WindowS 3.0版! 首席执行官Window Cave透露给我的是,竞争的WindowS具有CavOS缺乏的一项功能:克朗代克纸牌游戏。我,凯夫·约翰逊(Cave Johnson),担心这种疏忽会导致销量急剧下降。因此,我,凯夫·约翰逊(Cave Johnson),设计了编程实习生之间的竞赛,以制作纸牌游戏。选择了条目的程序员将有机会加入令人兴奋的GlaDOS AI项目。 我,凯夫·约翰逊(Cave Johnson),有一些要求: 由于该软件必须在明天发货,因此将选择最短的程序,使其适合已打印,成像的软盘的备用扇区。 不用担心游戏玩法。我们的客户有打印机吗?我只需要为您的程序生成一个列表,即可显示:牌组中纸牌的顺序以及7堆纸牌中每个纸牌的内容。甲板将从顶部开始。从底部可见桩。心,钻石,球杆和黑桃使用缩写H,D,C,S。使用缩写K,Q,J,A表示King,Queen,Jack和Ace。每张卡应以空格隔开。第一行应显示甲板,第二行应显示第一和最小桩的牌,第三行应显示第二桩的牌,依此类推。欢迎您使用T而不是10。 我们在这里制作柠檬水-不吸柠檬。我,凯夫·约翰逊(Cave Johnson),不喜欢失败,我们的客户也不喜欢。每场比赛都必须赢 游戏必须是随机的。请勿尝试对单个游戏进行编码。克朗代克手中有7000万亿只手,其中大约90%是可赢的。我对可以产生256张或更多不同手牌的程序感到满意。如果您的语言缺乏一种从计时器等中获取随机数的方式,则假定您可以以适合您的语言的方式获取种子。 我们的客户相当聪明。为了赢得比赛,他们正在玩Draw 3,在甲板上的时间没有限制 谨代表Aperture的所有人(和一切),祝大家好运。我们指望您。 “ 卡罗琳?我怎么关掉这该死的东西? ” 不合时宜:假设使用Windows规则,第3页,非拉斯维加斯纸牌。我试图越过每个t并在每个i上加点,但是请问您是否有任何疑问。祝好运。 输出示例: 5H AS 7C 8S QH ... AH JS 10S JC JH 7C 9D AC 8D 7C . . .
13 code-golf  game 

5
建立可读性索引
所述弗莱士-金凯德可读性算法取决于字计数和音节计数,这两者都不是完全客观,或使用计算机自动化容易的措施。例如,带连字符的“代码高尔夫”算作一个单词还是两个单词?“百万”一词是两个还是三个音节?在此任务中,您将需要进行近似计算,因为精确计数需要花费大量时间,空间,最重要的是,代码。 您的任务是用任何一种会占用英语阅读段落(假定为完整句子)的语言来构建最小的程序(即函数),并计算Flesch Reading Ease指数至8点的公差(以说明音节计数和字数统计的变化)。计算公式如下: FRE = 206.835 - 1.015 * (words per sentence) - 84.6 * (syllables per word) 您的程序必须与下面的参考段落对齐,这些参考段落的索引是使用手动计数计算的: I would not, could not, in the rain. Not in the dark, not on a train. Not in a car, not in a tree. I do not like them, Sam, …

3
Brainfuck中的按位运算符
您的任务是为以下每个二进制运算符创建一个Brainfuck程序。每个程序应从输入中获取一个或两个8位数字(A和B)并计算指定的运算: A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A 您不必全部实施5。得分的计算方式为: #totalCharacters + {4000 * #problemsNotCompleted} 因此,有效分数是从零(最佳)到20,000(未完成)。 我不在乎您将结果存储在哪里,也不管您是否保留输入。假设8位单元以及仅在右侧需要的空单元数。 您可能会认为数字已经在最适合您的任何内存位置中,因此您无需担心IO操作。
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

15
文字矩形
您的程序将文本作为输入,至少8个字符长,并且始终由偶数个字符组成。(无需评估输入的正确性)。 您的目标是将该文本显示为矩形。例如,HelloWorld作为输入,显示 Hell d o lroW 规则: 文本顺时针旋转(根据需要开始位置) 它将形成一个闭合的矩形,边长1个字符。 矩形必须包含内部的大部分区域。(只是为了排除以两行显示文本的简单答案) 除文本本身以及必要的填充空格和换行符外,没有其他字符被打印。 作为代码高尔夫球,最短的代码获胜。 在第一个有效答案出现后的10天内选择获胜者。
13 code-golf 

7
写下所有可能的盲文字符
今天早上看着电梯按钮,一个有趣的难题传给我。 您需要生成一个适合2x3网格的所有盲文图案列表。使用散列#表示凹凸,使用连字符-表示平坦区域。 预期输出样本: #- -- -- ## -- -- #- #- -- (and so on...) 规则: 您的程序必须用至少一个字符或一行分隔每个模式。 图案可以以任何顺序生成。 不论盲文字母表实际使用什么样式,都应制作所有图案。完全空白的模式是可选的。 仅应生成唯一的凹凸图案。由于凸起的排列相同,因此以下图案被认为是等效的。在这些情况下,请使用最靠近左上角的图案(即,本示例中的第一个选项)。 #- -# -- -- #- -# #- -# -- -- #- -# 奖励积分,如果你可以把它用于任何工作,X由Ÿ大小的网格。(编辑:在合理范围内。最多4x4足以用于概念验证。) 阅读Wiki文章后,看来有45种模式(包括空白)符合该难题的规则。

5
给定一个公平的硬币作为输入,产生任何特定的不公平结果
使用不公平的硬币很容易生成一个公平的硬币,但是反之则很难完成。 您的程序将收到一个数字X(介于0和1之间,包括0和1),作为输入。输入不能简单地硬编码为源代码中间的数字。然后,它必须返回一个数字:a 1的概率为X,0否则为X。 您的程序仅允许在源代码中使用一种形式的随机数生成器:(int(rand(2))或等效形式),它以相等的概率返回零或一。您可以在代码中随意包含或访问此函数多次。您还必须自己提供功能作为代码的一部分。 您的程序不允许使用任何其他可以用作随机数生成功能的随机数生成功能或外部源(例如时间和日期功能)。它还无法访问任何外部文件或将作业传递给外部程序。 这是代码高尔夫,最短的答案胜出。
13 code-golf  math 

8
确定平方根的连续分数
整数的连续分数n是以下形式的分数: 收敛于n。 a连续分数中的序列通常写为:[a 0 ; a 1,a 2,a 3,... a n ]。 我们将以相同的方式来编写我们的文章,但是在分号之间重复。 您的目标是返回的平方根的连续分数n。 输入:整数n。n永远不会是一个完美的广场。 输出:的连续分数sqrt(n)。 测试用例: 2 -> [1; 2;] 3 -> [1; 1, 2;] 19 -> [4; 2, 1, 3, 1, 2, 8;] 最短的代码获胜。祝好运!
13 code-golf  math  number 

9
在不使用任何保留字的情况下打印前128个素数
显而易见的解决方案是将它们仅打印为字符串,但是是否可以编写较短的代码? 要求: 不应处理任何输入,而输出应采用2 3 5 7 11 13 ...etc 的形式。 完全不使用该语言中的保留字 该语言至少应允许结构化的编程,并具有保留字(否则,第2点将是没有意义的)。 首先,我只考虑了C / C ++,但是在扩展问题的同时仍然试图防止作弊

10
在PrettyFont中输出数字
我设计了一种新字体,称为PrettyFont。我花了很多时间来完善它,但是由于我是一个工人,所以没有时间完成它。因此,它现在仅包含4个字符。有一天,当我变得富有时,完成它将成为我终生的目标,但是现在... 这是PrettyFont:(0、1、2、3) #### ## #### #### # # # # # # # # # # ### # # # # # #### ### #### #### 每个字符宽4像素,高5像素。现在!我想让您编写一个在PrettyFont中输出数字的程序,这样我就可以开始发送要打印的设计了。 规则: 输入为以4为底的字符串编号(仅字符0-3),例如“ 01321”。该程序应至少能够处理字符串中的10个字符。奖励积分是给程序的,该程序采用实际的基数为10的整数而不是字符串。编辑说明:整数红利表示您可以输入任何以10为底的数字,例如54321,并且程序会将其转换为以4为底的数字并将其输出(在本例中为31100301)。 输出将是用PrettyFont打印的数字。输入和输出示例: > "321" #### # ### # #### #### # # # # #### ## # # # ### 可以按单行格式输出的程序有很多好处,如下所示: …

6
输出所有有理数的列表
在所有数学中,总会有一些定理超越所有常识。其中之一是无穷大大小不同的事实。另一个有趣的事实是这样的想法,即许多看起来大小不同的无穷大实际上是相同大小的。偶数和整数一样多,有理数也一样。 这个问题的一般概念是面对无穷无尽的现实。在这个挑战中,您的程序将输出一个列表,该列表将: 在任何特定时间,总有大量条目 最终在整个列表中恰好包含一次(如果可以运行足够长的时间)任何特定的(非零)有理数 包含无数个空插槽(列表中的条目不必要地设置为0) 空插槽比例接近100%的限制 对于每个正整数N,具有无限数量的位置,具有N个连续的空槽 挑战 您面临的挑战是编写尽可能短的程序,该程序将输出具有以下规则的特殊列表: 索引不是平方数的所有条目都应设置为零。因此,第一个条目将为非零,第二个和第三个条目将为零,第四个条目将为非零,依此类推。 所有有理数将采用不正确分数(例如4/5或144/13)的形式进行简化。唯一的例外是零0。 如果您的程序运行足够长时间且具有足够的内存,则所有(正负)有理数最终应出现在列表中。对于任何特定的有理数,所需时间可能是任意大,但始终是有限的时间。 如果运行无限长的时间,则任何非零有理数都不会出现两次。 规则3确实允许某些变化,因为存在无限数量的不同可能的合法输出。 输出将是一行流。每行将具有以下一般形式:5: 2/3第一个数字是条目号,然后是有理数。请注意,1: 0它将始终是输出的第一行。 输出示例片段: 1: 1/1 2: 0 3: 0 4: 2/1 5: 0 6: 0 7: 0 8: 0 9: -2/1 10: 0 etc... 规则,规定和注释 这是代码高尔夫。适用标准代码高尔夫规则。同样,由于输出中允许的变化,您至少需要说明为什么您相信列表将一次包含所有可能的有理数,并且您的解决方案是正确的。 编辑:由于质数确实分散了挑战,因此我将其更改为平方数。这实现了相同的目的,并且缩短了解决方案。

10
歌曲编码-用您选择的编程语言表示音乐歌词[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 6年前关闭。 用您选择的语言编写一个程序,当您阅读该程序时,便是歌曲的歌词。它必须是有效的程序,可以被编译和运行且没有错误。从技术上讲,您可以在屏幕上打印所有歌词,但建议您使用样式,并尽可能避免使用字符串文字。 鉴于这本身就很困难,因此您可以编写一段样板代码,而这部分代码并不构成歌词可读性。但是,一旦开始读取必须作为歌曲歌词的代码块,您就无法在歌曲完成之前中断它。您可以用注释指示歌曲代码的开头和结尾。请同时指定歌词本身,就像阅读代码一样。只要您与所写内容的相距不远,您就可以对自己的解释“持开放态度”,否则将花费您宝贵的时间。 允许使用部分歌曲的歌词,尽管将整首歌中的单词包含在其中会获得双倍积分。评审分为3类: 10分-创意 10分-歌曲难度 20分-该歌曲在代码中的表示形式。 对于每次提交,我都会在下面的评论中给您您的分数。如果您编辑答案,请给我一个注释指示符,然后我将对其进行重新评估。但是,为了公平起见,每次重新评估都会从您的总得分中减去2分。 示例如下: public class Song { public String play() { // Song begin try { if(this instanceof TheRealLife || this instanceof JustFantasy) { throw new InALandSlide(); } } catch (InALandSlide e) { } return "No \"FromReality\""; …

4
忙脑海狸
编写一个不超过256个字符的Brainfuck程序,该程序将采取尽可能多的步骤,但不会无限循环。该程序可能不接受任何输入。 进一步来说: 假设右边有无限多个单元格。 一<当在左侧的单元格什么都不做。 阿-当单元值是零个集细胞255。 这些指令+-<>.在执行时均视为一步。 当一个[或]遇到,他会成为一个步骤。然而,如果该条件为真,并控制流程跳到,相应的]或[不不再次算作一个步骤。 采取最多步骤的解决方案将获胜。 如果您的解决方案中存在某种模式,则可以提供一个功能,以了解类似长度的程序n将执行多少步,但不是必须的。 要计算指令,可以使用此修改后的解释器: 例: ++[-] 遇到的指令是++[-]-],程序运行了7个步骤。

7
查找两个字符串之间的最小编辑距离
说明 两个字符串之间的编辑距离是将一个单词转换为另一个单词的最小可能插入,删除或替换次数的函数。 插入和删除的费用为1,替换的费用为2。 例如,之间的距离AB和A为1,因为删除费用1和唯一需要的编辑是删除B字符。 CAR和之间的距离FAR为2,因为替换的成本为2。另一种查看方式是一次删除和一次插入。 规则 给定两个输入字符串(但提供时使用您的语言很方便),您的程序必须找到两个字符串之间的最小编辑距离。 您可以假定字符串仅包含字符A-Z,并且少于100个字符且大于0个字符。 这是代码高尔夫,因此最短的解决方案将获胜。 样本测试用例 ISLANDER, SLANDER > 1 MART, KARMA > 5 KITTEN, SITTING > 5 INTENTION, EXECUTION > 8
13 code-golf  string 

12
实施一次性垫
背景 甲一次性垫是一种形式的加密已经被证明是不可能的,如果使用得当开裂。 通过采用纯文本(仅包含字母AZ)并生成相同长度的随机字符串(也仅包含字母)来执行加密。该字符串充当密钥。然后,将明文中的每个字符与密钥中的相应字符配对。密文计算如下:对于每对,两个字符都转换为数字(A = 0,B = 1,... Z = 25)。这两个数字以26为模加。该数字被转换回一个字符。 解密正好相反。将密文和密钥中的字符配对并转换为数字。然后从密文模26中减去密钥,并将结果转换回字符AZ。 挑战 您面临的挑战是编写尽可能短的程序,该程序既可以加密也可以解密一次性键盘。 在输入的第一行(到STDIN)上,将出现单词“ ENCRYPT”或单词“ DECRYPT”。 如果单词是加密的,那么下一行将是纯文本。您的程序应输出两行(到STDOUT),第一行是密钥,第二行是密文。 如果单词被解密,您的程序将再获得两行输入。第一行是密钥,第二行是密文。您的程序应输出一行,这将是已解密的纯文本。 明文,密文和密钥应始终由大写字母AZ组成。它们将始终为一行,并且不包含空格。 密钥应始终是随机的。在运行之间不应重复大部分操作,并且在文本中不应找到任何模式。 两个简单的例子: ENCRYPT HAPPYBIRTHDAY >ABKJAQLRJESMG >HBZYYRTICLVME DECRYPT ABKJAQLRJESMG HBZYYRTICLVME >HAPPYBIRTHDAY 该>代表线路输出,所以你不必打印符号作为输出。

17
滚动字幕
在进入混淆的Hello World之后,我认为共享基础代码可能会很有趣。但是为什么只显示代码,也让它成为高尔夫! 挑战 编写一个脚本,该脚本在终端上从右向左滚动字符串,并在左侧停留。 输入值 将字符串作为参数。 结果 将滚动字幕打印到STDOUT。最大宽度约50个字符。从显示0或1个字符开始。滚动时字母之间的一些空间。解决后停止(单词字符之间没有多余的空格)。慢速滚动,但不要太慢(每次迭代<1秒)。 例 使用arg运行脚本 'Hello World' H 后来 H e l l o W o 后来 H e l l o W o r l d 后来 Hell o W o r l d 最后 Hello World 对于运行示例,请尝试“挑战世界”挑战中的代码。最终,我将发布我的信息。目前在Perl中为202个字符。现在有一些竞争对手,我已经在答案中发布了我的答案。 优胜者 我不希望这些限制是绝对的,这就是为什么我对它们有些含糊的原因。遵循我原著精神的最短脚本将获胜。 笔记 该游戏假设xterm环境。如果证明另一个环境有用,则将仅比较类似的环境,并且可以为每个环境声明一个独立的获胜者。 附录(2012年4月25日) 为了解决一些新出现的问题,我正在做出裁决。您的字符数必须包含以下代码: …

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.