编程拼图和代码高尔夫

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

4
X标志点
X标志点 您的目标是在大写X周围添加十字形: 输入/输出示例 输入: mdhyyyyyyyhhhddmmm mdyyssoo oooosyyyhhhdmm hsso oossoooooyyhhdhhdmmm yoooooo oo ssysssyhhdyyyhmmmm myso oso o oyo hhhdhhyhyhhm mm m mhsyhhys oss yyyhhhsosyhhmmmmdmmm mhyhhhy y ssyhoho o shhdmmmmdmmmm hhyyyh s oo syysyyhhdysso oyhdhhhmmmmm dhysyys sdysoXoyyyyhhso syshm mmm hhyhyo o osss y shhyyhd mmmmmm yyhyyyss o oyyyydmmdmmmmmmmmm mm ysyhyhhho s osy sdm …

1
迷你高尔夫球场
这是一个迷你高尔夫球洞: 外边界是一个半径为10且中心为(0,0)的圆。内边界是一个半径为3且中心为(0.5)的圆。发球台在(0,-8)。假设球只是半径为0的点。 球的动力学受以下规则支配: 最初,球以能量50和给定角度击中。 角度在笛卡尔坐标系中呈递减角度,因此0°表示直接向右,90°则直接向上,依此类推。 当球撞击内圆或外圆的边缘时,它会根据反射定律从圆上反弹。 在那个点与圆的碰撞角等于反射角。(这里的角度是相对于碰撞点处的圆的切线。) 为了清楚起见,请参见本或此(在第二链路的表示法,R_0 = 0在这个挑战。) 球在移动时会失去能量。 它覆盖的每单位地面都会损失1单位的能量。 每次从墙壁反弹时,都会损失5个单位的能量。 当球用尽能量或掉进洞中时,球停止运动。 如果球以小于等于5的能量击中墙壁,它将停止。 如果它在孔的距离1之内,且能量<10,它会掉入孔中,否则它将继续移动。 挑战 在给定孔的xy坐标的情况下,返回一个角度,您可以按该角度击球,以使球掉入孔中(如果存在该角度)。 输入值 以任何方便的形式输入孔中心的x坐标和y坐标。输入可以来自STDIN(或最接近的替代品),命令行参数或函数参数。 输出量 打印或返回一个角度,以度为单位,可以从发球区击球,使球落入孔中。如果存在这样的角度,则输出应在[0,360)范围内,否则输出应为-1。

7
编号分级大纲
编写一个包含字符串的程序,其中每一行都由0缩进一定数量的空格的字符组成。顶行没有缩进,并且每隔一行缩进的空间最多比前一行缩进更多。 没有行将有尾随空格,但是您可以选择假设只有一条尾随换行符。 例如,输入可能看起来像这样: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 您的任务是像对其进行分级一样对它进行编号,使用递增的正整数作为行标题。这将是示例的输出: 1 1 1 2 2 2 1 2 3 1 3 1 1 2 注意每个分层缩进级别如何都有自己的一组递增数字,即使它们仅递增到一个。 在输出中,不应有尾随空格,但是可以选择有一条尾随换行符。 编写一个通过stdin或命令行获取输入字符串的完整程序,或者编写一个将字符串作为参数的函数。打印结果或将其作为字符串返回。 以字节为单位的最短代码获胜。 例子 如果输入空字符串,则应输出空字符串。 下一个最简单的示例是输入 0 应该变成 1 大示例-输入: 0 0 0 0 0 0 0 …

11
64位ASCII编织
输入值 两个整数: 一个介于0到2 ^ 64-1之间的非负整数W,用于指定组织。 在1到255之间的正整数S,指定边长。 这些可以按照适合您的顺序进行。 输出量 请求的编织的S by S ASCII表示形式(S换行符分隔S字符的字符串,带有可选的尾随换行符)。编织由编织编号W定义,如下所示: 将W转换为二进制并拆分为8个字节。第一个(最高有效)字节定义了从左(最高有效位)到右的第一行。下一个字节定义了下一行,依次类推8行。编织编号定义了一个8 x 8的正方形,该正方形应从左上方开始平铺在所需区域上。也就是说,其左上角应对应于要覆盖区域的左上角。 每个0都应显示为a |,每个1都应显示为a- 例子 输入: 0 8 输出: |||||||| |||||||| |||||||| |||||||| |||||||| |||||||| |||||||| |||||||| 输入: 3703872701923249305 8 输出: ||--||-- |--||--| --||--|| -||--||- ||--||-- |--||--| --||--|| -||--||- 输入: 3732582711467756595 10 输出: ||--||--|| --||--||-- --||--||-- ||--||--|| …

4
滚动我的D&D角色的能力得分
在《龙与地下城》中,角色的一些最重要属性是能力得分。这六个能力有6个能力得分。这些能力是力量,敏捷,体质,智力,智慧和魅力。 在确定角色得分时,我使用以下过程:滚动4d6,以任意顺序降低最低得分。这意味着我将四个骰子骰子掷出4个,忽略最低的结果,将另外三个骰子相加。这完成了6次。我会以任何方式将结果编号分配给这些能力。 我用于为技能分配分数的系统是为角色的最重要技能分配最高的分数,这取决于角色的等级,由于每个人都需要宪法而将第二高的分数分配给体质,并任意分配其他四个分数。 下表列出了各种课程的最重要技能: Bard - Charisma Cleric - Wisdom Druid - Wisdom Fighter - Stregth Monk - Wisdom Paladin - Charisma Rogue - Dexterity Sorcerer - Charisma Wizard - Intelligence 挑战:我要给您(作为输入)我的角色课的第一个字母(大写)。我希望您滚动能力得分并将其分配给上述能力,然后按照力量,敏捷,体质,智力,智慧,魅力等顺序输出。 例: Input: R Rolls: 4316 3455 3633 5443 2341 6122 Scores: 13 14 12 13 9 10 Ordering: …
18 code-golf  game  random 

11
从值列表确定范围
给定一个未排序的唯一正整数列表,请输出序列整数的最长可能范围中的最短列表。 输入 未排序的唯一正整数列表 例如 9 13 3 11 8 4 10 15 输入可以来自以下任意一项: stdin 命令行参数 函数参数 输出值 在标准输出或您的语言最接近的相似输出的一行上打印的范围或单个值的有序列表。 如果存在两个或多个顺序整数(按值顺序,而不是列表中的位置),则将使用-将它们表示为包含范围。例如 8-11 所有其他整数仅打印而没有其他符号 单个空格将分隔输出 输入中不存在的数字不应出现在输出中,例如3 5 6,3-6由于4不存在而不能缩短为 例子 成功: IN> 9 13 3 11 8 4 10 15 6 OUT> 3-4 6 8-11 13 15 IN> 11 10 6 9 13 8 …
18 code-golf 

9
增量游戏时间格式
增量游戏时间格式 目标 增量游戏通常具有倒数计时器,用于表示完成任务之前的天,小时,分钟和秒。根据可用空间,它们可以格式化为: 2d 13h 23h 59m 48s 14m 3h 0m 0s 编写此代码的目的是编写执行此格式化的功能或程序。 输入项 总秒数。 要输出的最大段数。 输出量 细分包括: 0周 0天 0小时 0分钟 0秒 每个段由单个空格分隔。 显示的段必须是连续的。例如,即使分钟为零,您也不会显示小时和秒而不显示分钟。 一位数字值不带前导零,尽管必须将零值显示为0。 值四舍五入。 显示的第一段是第一个非零值。 测试用例 seconds segments output 0 1 0s 123 1 2m 123 2 2m 3s 123 3 2m 3s 82815 3 23h 0m …
18 code-golf  date 

6
代码块
代码块 这是一个假设的情况是星期五晚上,你已经邀请了平时的高尔夫哥们参加自己喜欢的爱好:打高尔夫球的代码。但是,由于这是一项耗费人心的工作,因此您需要为团队筹集一些大脑食物,以便您可以尽可能多地打高尔夫球。 现在,每个人最喜欢的小吃是鸡块,但是有一个问题:没有一包能满足每个人的需求的零食。因此,由于您已经处于打高尔夫球的状态,因此您决定创建一个程序,该程序可以弄清楚您必须购买哪些包才能满足每个人的金块需求。 鸡块包装的大小无处不在,并且取决于您在世界上居住的地方,标准大小也有所变化。但是,最近的[服务金块的地方]库存以下尺寸的金块包装: 4, 6, 9, 10, 20, 40 现在,您可能会注意到无法订购某些组合的矿块。例如,11掘金是不可能的,因为没有组合是11完全相等的。但是,您可以43通过获取1包20,1包10,1包9和1包来制作4, 20 + 10 + 9 + 4 = 43 (597) 597每个项在哪里平方并加在一起(提示:最佳解决方案将其作为最大值)。当然,还有其他制造方法43,但是如您所知,每包的金块越多,每个金块的价格越便宜。因此,理想情况下,您要购买数量最少的包装,并以最大的数量购买,以最大程度地降低成本。 任务 您应该创建一个程序或函数,该程序或函数采用与每个人的要求相对应的整数列表。然后,您应该计算并打印出最具成本效益的α订单,以购买鸡肉块。成本效益最高的α阶是每个数量的平方和最高的组合。如果是绝对没有办法买掘金完美,你必须打印一个falsy值,如0,False,Impossible!,或无论是在您的语言版本。 I / O示例: [2 7 12 4 15 3] => [20 10 9 4] 1, 1, 2, 1 => False 6 5 5 5 5 5 …
18 code-golf 

2
莱文施泰因距离的每一步
在此挑战中,您将编写一个程序,该程序将两个换行符分隔的字符串s1(第一行)和s2(第二行)作为输入(STDIN或最接近)。您可以假设s1的长度始终小于30且大于s2的长度。然后,程序应输出从s1到s2的levenshtein距离中的每个步骤。 为了弄清楚levenshtein距离中每个步骤的含义,程序将打印n个字符串,其中n是s1和s2之间的levenshtein距离,两个相邻字符串之间的levenshtein距离将始终为1。顺序无关紧要。输出应以换行符分隔,并且不包括s1,仅包括in和s2。该程序还应在一台现代计算机上在一分钟内运行。 例子: 输入: Programming Codegolf 输出: rogramming Cogramming Coramming Coamming Codmming Codeming Codeging Codegong Codegolg Codegolf 输入: Questions Answers 输出: uestions Aestions Anstions Ansions Answons Answens Answers 输入: Offline Online 输出: Ofline Online 输入: Saturday Sunday 输出: Sturday Surday Sunday 这是指向python脚本的链接,该脚本可打印出距离和步骤。 附加规则: 不使用互联网 适用标准漏洞 这是代码高尔夫球,因此请使代码简短;最短的代码胜出!
18 code-golf  string 

9
绘制越来越多的盒子
任务 在此挑战中,您的任务是绘制几叠高度递增的盒子的ASCII艺术作品。输入的堆栈数为正,是一个正整数。第一个堆栈包含一个size的框2x2。第二个堆栈包含2个size的框3x3。通常,第kth个堆栈包含ksize的盒子(k+1)x(k+1)。 每个框的边框都是使用字符绘制的-|+,它们的内部由空格组成。相邻的框共享其边界,并且+即使它们是另一个框的边界的一部分,也应始终使用绘制角。 例子 输出为1: ++ ++ 输出为2: +-+ | | +-+ ++ | ++-+ 输出为3: +--+ | | | | +--+ | | +-+ | | +--+ +-+ | ++ | | ++-+--+ 输出为5: +----+ | | | | | | | | +----+ | | | | | …

2
寻找僵局
寻找僵局 对多线程应用程序进行编程时,必须格外小心,以避免在访问共享资源时死锁各个线程。一个死锁发生时线程试图访问要锁定在另一个线程在同一时间,其他线程试图访问由第一锁定的资源的资源。这是简单的情况,但是如果资源链较长,则可能变得更加复杂。 挑战 您应该编写一个程序或函数,以在每个线程访问的资源列表中检测可能的死锁情况。这是代码高尔夫球,因此最短答案以字节为单位。 每个线程是同时启动的,但是之后它们可以按交错的任意组合运行。如果有2个线程,每个4个动作,它可以作为运行(其中,每个数字是具有该ID采取的线程的动作)1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,2,1,2,1,2,1,1,2,2,2,2,1,1,或任何其它可能的组合。 输入值 您将通过STDIN,函数参数或最接近的替代方法接收字符串列表。每个字符串将采用格式+a -b。该字符串中的每个字符串都表示线程对资源的locking(+)/ unlocking(-)。每个线程之间将有一个---分隔符。确保线程不会尝试锁定已锁定的资源,并且所有线程将在退出前显式解锁其锁定的所有资源。下面是一个示例来演示: +a # Lock resource a +b # Lock resource b -a # Unlock resource a -b # Unlock resource b --- # Thread separator +b # Lock resource b -b # Unlock resource b 输出量 如果输入不包含任何可能的死锁,则输出为假,如果输入包含可能的死锁情况,则输出为假。例如: true false 1 0 都是有效的输出,但是任何明确定义为“真/假”的内容都可以接受。 …

24
柜台柜台
在印刷术中,计数器是指字母的全部或部分由字母形式或符号包围的区域。封闭式计数器是完全由字母形式或符号包围的计数器。您必须编写一个将字符串作为输入的程序,并在文本中打印已关闭计数器的总数。 您的输入: 可以是命令行输入,也可以是STDIN的输入,但必须指定。 将完全由可打印的ASCII字符组成,表示所有ASCII值(介于32和126之间)。这确实包括空格。更多信息。 现在,这确实在字体之间略有不同。例如,您正在阅读的字体将'g'视为一个封闭的计数器,而google字体将'g'视为具有两个封闭的计数器。因此,这不是问题,这里是每个字符封闭计数器的正式数量。 所有没有封闭计数器的符号: !"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~ 请注意,这包括空间。 以下是所有带有一个封闭计数器的符号: #0469@ADOPQRabdegopq 这是带有2个封闭计数器的所有符号: $%&8B 最后但并非最不重要的是,这里有一些示例输入和输出。 Programming Puzzles and Code-Golf 应该打印 13 4 8 15 16 23 42 应该打印 5 All your base are belong to us 应该打印 12 Standard loopholes apply 应该打印 12 Shortest answer in bytes is the winner! 应该打印 8
18 code-golf  string 

5
硬纸板压缩
在研究非回文式多语种Boggle时,我发现将代码尽可能有效地打包到Boggle板上非常繁琐,即使只有两个字符串也是如此。但是我们是程序员,对吗?我们知道如何使事情自动化。 给定一个字符串列表,您将生成一个Boggle面板,可以在其中找到每个字符串(独立于其他字符串)。挑战在于使Boggle板尽可能小。因为这(希望)是一项相当困难的任务,所以这是代码挑战:不需要最佳性-挑战是尽可能地做到这一点。 规则 防撞板将为矩形,并且仅包含大写字母。因此,输入字符串也将仅包含大写字母。 通常采用Boggle规则:如果从任何地方开始都可以反复移动到相邻的字符(水平,垂直或对角线)来找到字符串,则字符串是棋盘的一部分。要形成单个字符串,不能多次使用板上的任何单元格。但是,可以在不同的字符串之间重用字符。 您有30分钟的时间来处理测试数据,并且您的代码不得使用超过4 GB的内存。我会在内存限制上留一点余地,但是如果您的程序始终使用超过4 GB的内存或峰值明显超过该内存的峰值,我将(暂时)取消其资格。 我将在运行Windows 8的我自己的计算机上测试所有提交内容。我确实有Ubuntu VM,但是如果必须测试,则无法充分利用30分钟的时间。请提供指向您所选语言的免费解释器/编译器的链接,以及有关如何编译/运行代码的说明。 您的得分将是以下测试数据的Boggle面板的大小(不包括换行符)。在平局的情况下(例如,因为多个人设法提供了最佳解决方案),赢家将是更快地产生此最佳解决方案的提交者。 您一定不能针对测试数据专门优化代码。如果我怀疑有人这样做,我保留生成新测试数据的权利。 例 给定琴弦 FOO BAR BOOM 一旦可以将它们平凡地放在4x3的Boggle板上: FOOX BARX BOOM 通过利用字符串不必是直的这一事实,我们可以将其压缩为5x2: BORFO OMABO 但是,我们可以通过在不同字符串之间重用字符来使其更小,并将其放入4x2的字符串中: FOOM BARX 现在,B既用于BOOM和BAR,又OO用于BOOM和FOO。 测试数据 您的提交将在以下50个字符串上进行测试。出于测试目的,您可以仅使用此数据的较小子集,然后将其运行得更快。我相信,此测试数据的绝对下限是一个包含120个字符的面板,尽管这不一定可以实现。 T WP GVI CIHM EGWIV QUTYFZ LWJVPNG XJMJQWSW JLPNHFDUW SWMHBBZWUG XVDBMDQWDEV TIUGAVZVUECC IWDICFWBPSPQR MMNWFBGMEXMSPY YIHYXGJXKOUOIZA BZSANEJNJWWNUJLJ XTRMGOVPHVZYLLKKG FLXFVVHNTWLMRRQYFQ VZKJRAFQIYSBSXORTSH …

13
扩展编码字符串
有经典的游程长度编码和解码。 input output a3b2c5 aaabbccccc 这是相当直接的,之前已经完成。 面临的挑战是也占了非标准的行为,当多个字符先于游程长度(一个单从0-9位)。游程长度位之前的每个字符(字符串的一个非数字或结束之前的最后一位数字)具有施加到其上该值单独地和以打印出来。 一些测试输入和输出,包括一些边缘情况: input output ab3c5 aaabbbccccc a0b3 bbb 13b1 111b a13b1 aaa111b a123b1 aaa111222b aa2a1b1 aaaaab 字符序列([a-zA-Z0-9]+)后必须跟游程长度长度([0-9]) 只需要考虑有效的输入(([a-zA-Z0-9]+[0-9])*) 是的,空字符串是有效输入。 输入通过标准输入,通过标准输出输出 这是代码高尔夫,字节数确定获胜者。
18 code-golf  string 

5
从数组中删除最小和缝
接缝雕刻算法或更复杂的版本用于在各种图形程序和库中调整内容感知图像的大小。高尔夫吧! 您的输入将是一个矩形的二维整数数组。 您的输出将是相同的数组,窄一列,并且从每一行中删除一个条目,这些条目代表从上到下的路径,且所有路径的总和最低。 https://zh.wikipedia.org/wiki/Seam_carving 在上图中,每个单元格的值都以红色显示。黑色数字是一个单元格值和其上方三个单元格之一中最低的黑色数字(由绿色箭头指向)的总和。突出显示的白色路径是两条最低的总和路径,总和均为5(1 + 2 + 2和2 + 2 + 1)。 如果有两条路径的总和最低,则删除哪一条都没有关系。 输入应来自标准输入或作为功能参数。可以用方便选择的语言(包括方括号和/或定界符)进行格式化。请在您的答案中指定期望输入的方式。 输出应该以明确定界的格式输出到stdout,或者作为函数的返回值使用您的语言,相当于2d数组(其中可能包括嵌套列表等)。 例子: Input: 1 4 3 5 2 3 2 5 2 3 5 2 4 2 1 Output: 4 3 5 2 1 4 3 5 3 5 2 3 or 3 2 5 …

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.