编程拼图和代码高尔夫

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

13
计算字符,将它们转换为密码
问题: 您必须制作一个执行以下操作的程序: 接受一串大写的小写文本,并计算每个字母的所有出现次数。 然后按字母从高到低的顺序排列。 然后您将该列表转换为文本的编码器/解码器。 然后使用该密码对文本进行编码。 很难理解?请参阅以下示例: 例: 输入文本: Lorem ipsum dolor坐下来,一直保持良好的状态。Nunc euismod pellentesque ac sed enim的Nunc sed dui。Nullam auctor Justo quis diam faucibus,欧盟fringilla est porttitor。Pellentesque vel pharetra nisl。Vestibulum congue ultrices magna a fringilla。Quisque porttitor,risus suscipit pellentesque tristique,orci lorem accumsan nisi,scelerisque viverra turpis metus坐在amet sapien。Fusce facilisis diam turpis,nec lobortis dui …
9 code-golf 

8
Missy Elliot,XKCD和ASCII字节
受到以下XKCD漫画的启发: 在艾略特小姐的《 Work It》中,部分合唱内容如下: Is it worth it, let me work it I put my thing down, flip it and reverse it 考虑到这一点,我提出以下高尔夫挑战代码: 创建按以下顺序执行的代码: 从STDIN接受8位ASCII输入;例如n(十六进制6E或Bin 01101110) 将每个字节的8位向下移位1位(我相信这被称为逐位向下移位),例如01101110变为00110111(“放下我的东西”); 反转每个字节的位,例如00110111变为11001000(“翻转”); 反转每个字节的位,例如11001000变为00010011 (“ reverse it”); 如果字节的值小于32,则在转换回ASCII之前对该字节执行(95 + [byte value]),换句话说,(126-(31-[byte value]))对字节执行...如果字节的值仍小于32,则重复步骤5 如果字节的值大于126,则在转换回ASCII之前对该字节执行([byte value] - 95),换句话说,(32+([byte value]-127))对字节执行...如果该值仍大于126,则重复步骤6。 将新转换的字符串显示为ASCII。 此代码的一个实际示例: (输入,值得吗?) workit missy (“ missit”为输入,“ workit”为功能) …

2
在Stack Exchange上反补代码片段
您的目标是输入任意文本,例如: This is some text 并输出该格式的文本,以作为Stack Exchange上帖子(SE风格的Markdown)和注释(迷你Markdown)的代码,例如: `This is some text` `This is some text` 但是,它变得更加棘手。考虑输入: Perl has a variable called $` 输出必须是 `` Perl has a variable called $` `` `Perl has a varaible called $\`` 格式化的完整规则是: 完整帖子(完整的SE Markdown) 第1步:计算字符串中没有连续多少个反引号的最小数字。让我们称之为n。(例如,对于字符串potato,n为1,对于this is a backtick: `,n为2,对于` `` ``` ````` ``````,n为4。) 步骤2:将字符串包装在n反引号中。如果字符串以反引号开头或结尾,则还必须使用空格换行。(例如,potato成为`potato`,this …
9 code-golf 

2
检查15个拼图是否可解决
在十五谜题的特别之处在于只有一半安排的可能的状态是可以解决的。如果翻转14和15瓦片,则无法滑动块以使其向后翻转。 您的任务是构建一个程序,该程序接受您选择的格式的整数列表(恰好包含从0到15的每个数字的一​​个实例,其中0为空白)代表瓦片中的排列状态。 4x4网格,并输出一个布尔值,确定该网格是否可求解。 以任何语言执行此操作的最短代码都会胜出。

5
printf样式的字符串格式
挑战 编写一个实现C printf样式字符串格式的函数。 规则 你必须至少实现%%,%c,%s,%d和%f。 您不得使用内置的字符串格式化方法。 您不得运行外部程序或从程序连接到Internet。 由您决定如何处理无效输入,但是您的程序不得异常终止。 如果可能,您应该编写一个可变参数函数。 本文档中的关键字“必须”,“不得”,“必须”,“应”,“应禁止”,“应”,“不应”,“推荐”,“可以”和“可选”是按照RFC 2119中的描述进行解释。

3
解析Python字符串文字
挑战在于像Python一样解析字符串并打印字符串的内容。 输入(命令行参数或标准输入):字符串文字(例如"hello")(或多个文字,请参见下面的字符串文字串联) 输出(stdout):字符串的内容(例如hello) 解析字符串的规则: 字符串文字包含在匹配的单引号('a'),双引号("a"),三重单引号('''a''')或三重双引号("""a""")的匹配对中。打开字符串的引号类型的第一次再次出现将结束字符串。 反斜杠转义: \'字符串中的成为',\"成为"和\\成为\。您不需要实现任何其他反斜杠转义。不在转义序列中的反斜杠保留为反斜杠。 字符串文字串联:串联相邻字符串文字的内容。例如,"hello" 'world'变为helloworld。 输入中可能包含不属于任何文字的空格。 无论文字内外,您都不需要支持任何其他类型的空格。 附加规则: eval,exec并且不允许使用类似的内容来解析其文字或部分内容。 您可以假设输入有效。 您可以假设最大输入长度为1023个字符。 例子: "hello" ' world' -> hello world """\"""'\\\A""" -> """'\\A ( '''"""'''"""'''""" ) (不带括号,但带空格)-> """''' 最短的代码胜出。

9
写一个数字作为斐波那契总和
让我们将斐波那契数列定义为 F(1) = 1 F(2) = 2 F(n) = F(n - 2) + F(n - 1) 因此,我们有无限的序列1,2,3,5,8,13,...众所周知,任何正整数都可以写成某些斐波纳契数的总和。唯一的警告是,这种求和可能不是唯一的。总有至少一种将数字写成斐波纳契数之和的方法,但可能还有更多的方法。 您的挑战是编写一个完整的程序,该程序使用stdin接受一个介于1到1百万之间的正整数,然后使用stdout输出所有可能的斐波纳契数之和,这些总和等于输入。总而言之,斐波那契数不能重复,并且包括该数1。在任何求和中,如果1存在,则必须仅存在一次,因为在我对上述序列的定义中,1仅出现一次。仅包含项的求和是有效的,因此,如果输入数字本身是斐波那契数,则该数字本身是有效的求和并且必须打印。如果有多个总和,则在任意两个总和之间必须有一个空白行才能轻松区分它们。 这是一些样品。 ./myfib 1 1 这样的总和只有一个,并且只有一个术语,所以这就是所有要打印的内容。 ./myfib 2 2 请注意,这1+1是无效的总和,因为会1重复。 ./myfib 3 1+2 3 两个总和,并且两者之间都打印有空白行。 ./myfib 10 2+8 2+3+5 ./myfib 100 3+8+89 1+2+8+89 3+8+34+55 1+2+3+5+89 1+2+8+34+55 3+8+13+21+55 1+2+3+5+34+55 1+2+8+13+21+55 1+2+3+5+13+21+55 真正的代码高尔夫。以任何语言中最短的代码为准。请发布您的代码,并附上一些测试用例(我上面给出的测试用例除外)。如果是平局,我至少要等待两周甚至更长的时间才能选择最高票数。因此,社区请随时支持您喜欢的任何解决方案。代码的巧妙/美观远不如谁先发布。 编码愉快!

30
转换为秘密语言
用任何输入字符串的语言编写一些代码,例如“今天是美好的一天”(请注意,没有标点符号),然后将其转换为“秘密语言”。这是“秘密语言”的规则。 a = c,b = d,c = e等(y = a和z = b) 每个单词之间用空格隔开 确保有适当的大写 例: Input: "Today is a great day" Output: "Vqfca ku c itgcv fca" 这是一场人气竞赛。其他用户应该通过查找大多数“指向重点”但“唯一”的代码来给出分数。 挑战:我正在查找不常见的编程语言,但发现了一种名为Piet(esolang)的语言。我挑战任何人用这种语言编写它。

8
一个简单的逻辑门计算器
如果您选择接受,那么您的任务就是为以下逻辑运算符构造一个简单的真值评估器: ---------------------------------------------------------------------------------- Logical Name | Gate Name | Symbol | Symbol Name | Truth Table ---------------------------------------------------------------------------------- Identity | is | | (none) | 10 Negation | not | ~ | tilde | 01 Conjunction | and | & | ampersand | 1000 Disjunction | or | | | pipe | …

16
编写一个数学函数,其结果为“ hello world”。
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 4年前关闭。 编写数学函数,得出“ hello world”的整数表示 例如,以十六进制表示的“ hello world”就是68656c6c6f20776f726c64这样的目标,那就是编写一个数学程序,生成一个表示“ hello world”的数字。 这是使用python的可能解决方案的示例: print(2*2*3*59*61*97*416510539*72330832279)==int("68656c6c6f20776f726c64", 16) 可以使用任何类型的数学方程式,例如:幂,阶数,阶乘和其他数学运算。 规则: 您可以选择自己的方式将“ hello world”编码/表示为整数。还允许使用哈希函数 允许使用数学库(例如numpy,GMP)。 目的是专注于数学部分

4
割草机模式
取自Google Code Jam 2013资格赛问题B: 爱丽丝(Alice)和鲍勃(Bob)在他们的房屋前有一块草坪,形状像N米x M米的矩形。每年,他们都尝试以某种有趣的方式修剪草坪。他们过去常常用剪刀剪东西,这很费时间。但是现在他们有了一个具有多种设置的新型自动割草机,他们想尝试一下。 新的割草机具有一个高度设置-您可以将其设置为1到100毫米之间的任意高度h,并且将所有比其遇到的h高的草剪成高度h。您可以通过在草坪边缘的任何部分进入草坪来运行它;然后割草机沿一条直线移动,垂直于它进入的草坪的边缘,以1m宽的草条割草,直到割草机从另一侧离开草坪为止。仅当割草机不在草坪上时才能设置其高度。 爱丽丝和鲍勃在草坪上可以放多种草。对于每个人,他们想知道是否有可能用他们的新割草机将草切成这种图案。通过在草坪的每1m x 1m正方形上指定草的高度来描述每种图案。 最初,草在整个草坪上高100毫米。 编写一个函数,该函数采用2D整数高度的数组,并确定是否可以相应地修剪草坪。 这是Google Code Jam的100个测试用例。 前35例应该通过,其余的不应该通过。 最短的代码胜出。
9 code-golf 

1
编写ASP / Prolog / SAT流程求解器
Flow Free是一款令人上瘾的android游戏,您必须通过不重叠的蛇将成对的元素连接在一起并填充整个网格。有关说明,请参见此处: https://play.google.com/store/apps/details?id=com.bigduckgames.flow&hl=zh_CN 我有一个ASP(答案集编程)解决方案,它只有几个规则,并且我认为不可能像SAT实例那样简洁地表达相同的解决方案,但是我有兴趣证明自己是错误的。 任何语言都可以,但是我怀疑无需运行某种求解器就可以做到简洁,这就是为什么我将其标记为ASP / Prolog / SAT 获胜者是最少的角色。 您可以假定问题是使用谓词定义的: v(V). % A vertex a(V,W). % V and W are adjacent c(C). % A color s(V,C). % V is an endpoint of color C 此外,输入满足 a(W,V) :- a(V,W) % Adjacencies are bidirectional 2{s(V,C) : v(V)}2 :- c(C). % Every …
9 code-golf 

5
任意长度三进制Squarefree词
如果字符串连续两次不包含子字符串,则该字符串是无平方的。 可以使用3个字母的字母来包含任意长的squarefree单词。 写接受来自标准输入的正整数n和打印长度的任何无平方字N,使用字符的程序A,B和C。 最短的代码胜出。

3
建立一个杀手数独解算器
您以为普通数独很难,现在尝试杀手数独! 在Killer Sudoku游戏中,根本没有任何数字。取而代之的是,您会得到据说相加一定数量的区域。考虑以下来自维基百科的示例: 及其解决方案: 您编写的程序将采用以下格式:由代表区域的81个字母组成的序列,再由数字序列组成。然后,序列中的每个数字代表每个字母区域中数字的总和,从“ A”,“ B”等开始。 然后它将输出代表解决方案的81位数字序列。 例如,上面的示例难题将具有以下输入: AABBBCDEFGGHHCCDEFGGIICJKKFLMMINJKOFLPPQNJOORSPTQNUVVRSTTQWUUXXSYZWWaaXXSYZWbbbcc 3 15 22 4 16 15 25 17 9 8 20 6 14 17 17 13 20 12 27 6 20 6 10 14 8 16 15 13 17 结果输出为: 215647398368952174794381652586274931142593867973816425821739546659428713437165289 您可以假设输入有效,并且区域将始终按A,B,...,Y,Z,a,b,...,z的顺序显示。 (最有效的代码胜出。)

14
显示连续分数
您的挑战是将分数转换为其连续的分数形式。 输入:分数可以任何格式输入,包括(但不限于) 字符串:“ 7/16” 清单:{7,16},(7,16),[7,16] 简单有序对:7 16 功能:f [7,16] 输出:2D连续分数,水平分数条将分子和分母分开。只有分子等于1的连续分数有效。不必使字体大小根据深度而变化。前导零(用于适当的分数)是可选的。 深度:您的代码必须能够显示至少8个深度级别。 获奖标准:最短代码获胜。您必须包括几个显示输入和输出的测试用例。 测试示例(输入后输出) 5/4 5/3 5/7 9/16 89/150

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.