编程拼图和代码高尔夫

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

2
N-皇后马奎因
众所周知的N皇后问题有一个变体,其中涉及皇后和骑士,并且据说“难度更大” 1。问题陈述如下: 您必须在棋chess上放置相等数量的骑士♞和皇后♛,以使任何棋子都不会攻击其他棋子。您可以在板上放置的最大块数是多少,可以用几种不同的方法来做? 在此代码高尔夫球挑战中,将为您提供3到32之间的输入n(以最适合您的语言的方式)。对于给定的n,上述问题可能有零个或更多个解决方案。如果没有解决方案,则必须不输出/返回任何内容(nil,空字符串,false,...)。否则,您必须给出两个结果: 尺寸为n的解决方案板(请参阅下文),在没有任何棋子受到攻击的情况下无法添加皇后或骑士棋子。皇后和骑士人数相等。 要运行的程序的源,该程序不接受任何输入,并且以相同的格式给出(i)具有相同大小n的另一个解决方案(或不提供任何东西),以及(ii)用于下一个解决方案的另一个程序(依此类推) ...)。 注意: 程序序列必须永远不会返回同一块板两次,必须涵盖大小为n的问题的所有可能解决方案,并最终必须终止(不产生输出)。 您可以返回两个值,返回一个并打印另一个值,或者打印两个返回值。 但是,如果您同时打印电路板和下一个程序,则不能将电路板视为下一个程序的一部分(建议您在注释中打印电路板,或者同时使用标准输出和错误流)。 程序的返回值必须是字符串,而不是闭包。 板格式 一块木板是大小为n的正方形。 棋盘格可以是空的,皇后或骑士。 您必须为每种单元格选择不同的值(即,在印刷电路板时可以使用Q,N以外的其他符号)。 如果返回一个非字符串板,则它必须是该板的n 2个值的有序集合(例如,矩阵,向量或以行/列为主的列表,...)。 如果要打印板,则可以将其打印为正方形或线条。例如,可以按以下方式打印大小为4的解决方案板(不需要空格;可以根据需要选择符号): Q - - - - - - - - - - - - - N - 如果有这种感觉,您还可以输出: ♛ · · · · · · · · · · · · · …
21 code-golf  quine  chess 

9
数字1至7的总和
挑战 给定一个正整数N是28或以上,输出一个数字求和到的列表N,它使用每个数字1通过7一次。您可以给出程序或功能。 这些数字可以单独出现,也可以串联在一起,只要您一次使用它们而无重复即可。例如,[12, 34, 56, 7]是有效的,因为是[1, 27, 6, 4, 35]和[1234, 567],但不[123, 34567]还是[3, 2, 1476]。列出数字的顺序无关紧要。 如果N不能用1-7表示,则不返回或不输出。 其他资讯 这是代码高尔夫球,因此10月15日星期四之前以字节为单位的最短代码将获胜。 在评论中提出任何问题。 我在挑战中未指定的任何内容都取决于您。 不允许出现标准漏洞。 例子 这些可能会清除任何混淆: 输入项 28 输出量 [1, 2, 3, 4, 5, 6, 7] 输入项 100 输出量 [56, 7, 4, 31, 2] 输入项 1234567 输出量 [1234567] 输入项 29 输出量 没什么,29无效。 输入项 1891 …
21 code-golf  math  number 

4
用法语讲时间
卓悦,PPCG!Quelle heure est-il?这意味着法语现在几点了,因为这恰恰是这一挑战所要解决的。 用法语(至少是正式时间)讲时间与用英语讲时间有点不同。告诉时间从Il est(It)开始。然后,您在小时数后面加上小时数(时)。(如果您不知道法语数字,请使用以下列表:http : //blogs.transparent.com/french/french-numbers-learn-how-to-count-from-1-to-1000/)。如果是1点钟,请谨慎处理。中午时分,使用midi(不加尿),午夜时使用minuit。 除非分钟为00,否则您将以分钟为单位。但是,有一些例外。15分钟内您要说et夸脱,30分钟内您要说et demi。对于30分钟后的任何内容,您可以将小时数增加1,然后加上单词moins和60-分钟。因此,下午9:40是9月下午的生命(生命 = 20)。45分钟将是夸脱。 最后,以一天中的时间结束它。对于早上(上午1点至下午12点),您说du matin。对于下午(主观,但我将其定义为下午1点至下午5点),您说的是de l'apres-midi(从技术上讲,应在e上方加上一个重音符号,但是eh)。在晚上(下午5点至中午12点),您说du soir。请注意,在午夜和中午(小腿和midi)之后,您不要放任何这些-根据您使用的时间暗示一天中的时间。 您可能已经确定,这里的挑战是使用这些规则以法语打印当前当地时间。这是在各个时间样本输出的样子。(括号中的时间不必明显地打印出来,它只是在那里,所以您知道现在几点了): Il est sept heures du matin. (7:00 A.M) Il est deux heures de l'apres-midi. (2:00 P.M) Il est une heure du matin. (1:00 A.M) Il est huit heures du soir. (8:00 P.M) Il est …

9
为什么?为了讨好有钱的程序员!
您是否曾经想问过编译器“为什么?” 当代码无法正常工作时,我们大多数人都感到沮丧。因此,Mathworks实现了一个很好的小功能why,它回答了这个问题。举一些MATLAB的例子: why The programmer suggested it. why To fool the tall good and smart system manager. why(2) You insisted on it. why(46) Bill insisted on it. 您的任务是why用您的语言实现该功能。该函数应在有或没有输入参数的情况下工作(或者使用input 0或-1)。该函数必须被命名why(或者,why(n)用STDIN 编写将导致打印适当的字符串)。 如果未提供任何参数,或者参数为零或负数,则输出字符串应为随机的有效短语。因此,应该有一个功能why,why(),why(0)或why(-1)返回一个随机的句子。 如果给出了输入参数n(函数参数,不是STDIN),则输出应为第n个字符串(定义如下)。因此,why(1)应始终输出(打印/显示)相同的结果。 句子的构成如下(类型1,类型2和特殊)。所有句子都以结尾!。 "Person" "ending" ! "Verb" "adjective" "Person" ! A list of special cases 人员名单: Stewie Peter Homer The …
21 code-golf 

3
计算给定大小的组
团体 在抽象代数中,一个组是一个元组,其中是一个集合,而是一个函数,使得以下内容成立:G ∗ G × G → G(G,∗)(G,∗)(G,\ast)GGG∗∗\astG×G→GG×G→GG\times G\rightarrow G 对于所有的在,。G (x ∗ y )∗ z = x ∗ (y ∗ z )x,y,zx,y,zx, y, zGGG(x∗y)∗z=x∗(y∗z)(x∗y)∗z=x∗(y∗z)(x\ast y)\ast z=x\ast(y\ast z) 存在一个元件在使得对于所有中,。G x G x ∗ e = xeËeGGGxXxGGGx∗e=xx∗e=Xx\ast e=x 对于每一个在,存在一个元素在使得。G y G x ∗ y = exXxGGGyÿyGGGx∗y=ex∗y=Ëx\ast y=e 组的顺序定义为的元素数。G(G,∗)(G,∗)(G,\ast)GGG 对于每个严格的正整数,至少存在一组阶。例如,是这样的组,其中和。Ñ (ç Ñ,+ …

15
计算程序的字节数
注意2:我接受了@DigitalTrauma6字节长的答案。如果有人能击败我,我将更改接受的答案。感谢参与! 注意:我将在美国标准时间15/14/15下午6:00接受答复。感谢所有的参与! 对于尚未被问到这个问题,我感到非常惊讶(或者我搜索的不够努力)。无论哪种方式,这个挑战都非常简单: 输入:字符串形式的程序。此外,输入内容可能包含也可能不包含: 前导和尾随空格 尾随换行符 非ASCII字符 输出:两个整数,一个代表UTF-8字符计数,一个代表字节计数,您可以选择顺序。尾随换行符是允许的。输出可以是STDOUT或从函数返回。IT可以采用任何格式,只要两个数字可以区分即可(2327是无效输出)。 笔记: 您可以将换行符视为\n或\r\n。 这是一个用于测试的不错的字节和字符计数器。另外,这是一个具有相同内容的元帖子(感谢@Zereges)。 I / O示例:( 所有输出均为形式{characters} {bytes}) 输入: void p(int n){System.out.print(n+5);} 输出: 37 37 输入: (~R∊R∘.×R)/R←1↓ιR 输出: 17 27 输入: friends = ['john', 'pat', 'gary', 'michael'] for i, name in enumerate(friends): print "iteration {iteration} is {name}".format(iteration=i, name=name) 输出: 156 156 这是代码高尔夫球-以字节为单位的最短代码获胜! …

8
圆形蓝调
编写一个程序或函数,该程序或函数接受一个正整数N并重新创建按比例缩放以适合N×N像素图像的这种圆形图案: 该图像是N = 946的有效输出示例。 如果不清楚,则所有小的浅蓝色圆圈都具有相同的半径,并且以相同的方式位于四个深蓝色圆圈中。深蓝色圆圈的半径是该半径的两倍,并且类似地位于较大的浅蓝色圆圈中。 可以使用任何两种视觉上不同的颜色来代替两种蓝色。 背景方块确实需要着色。 抗锯齿是可选的。 将图像保存到文件,显示它或将原始图像数据通过管道传输到stdout。 允许使用任何常见的图像文件格式。 以字节为单位的最短代码获胜。 如果您将该圆形图案的递归方面扩展到其他级别,则布朗尼指向。(请与您的挑战条目保持区别。)

18
整数百分比
编写一个函数,该函数接受一个正整数列表,并返回一个整数列表,该整数列表近似于相同位置中相应整数的总百分比。 返回列表中的所有整数必须正好等于100。您可以假定传入的整数之和大于0。只要以百分比形式返回的任何单个结果整数,就可以舍入或截断小数在任一方向上的偏离不超过1。 p([1,0,2]) -> [33,0,67] or [34,0,66] p([1000,1000]) -> [50,50] p([1,1,2,4]) -> [12,12,25,51] or [13,12,25,50] or [12,13,25,50] or [12,12,26,50] p([0,0,0,5,0]) -> [0,0,0,100,0] 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

8
疯狂的图书管理员的惊人分类系统
回到学校了!因此,对于兼职工作,您正在学校的图书馆里帮忙。问题是,首席图书馆馆长甚至从未听过“杜威十进制”一词,更不用说实施该系统了。取而代之的是,随着库的扩展,正在使用的排序系统已经“有机地”增长了。 为了保持理智,您选择编写一个程序来帮助您归还书本,因为如果对书本进行错误的分类会给您带来麻烦。(首席图书馆员非常严格。) 输入输出 输入将是(假设的)书名列表,每行一个,来自STDIN /等效语言。 您一次最多只能输入100本书(您一次只能在图书馆中随身携带这么多书籍)。 书的标题中可以有多个单词,这些单词可以用空格或其他标点符号(例如,冒号:,破折号-等)分隔。 为了便于计算,假设所有标题均为UTF-8。 输出是相同的标题,根据以下规则排序,每行再一次,与STDOUT /语言等效。 排序规则 根据书籍的平均字符值(即,累积字符值除以书籍标题中的字符数)对书籍进行数字排序,并按以下规则计数: 所有字符都用于确定标题中的字符数。 小写字母按其在字母表中的位置计数。(a = 1,b = 2,... z = 26) 如果标题中包含大写字母,则它们的小写字母价值为1.5(A = 1.5,B = 3,... Z = 39)。(“大写字母很重要!”图书管理员说。) 该列表中的每个标点符号/符号在!@#$%^&*()-=_+[]\{}|;':",./<>?~取平均值之前均从累计值中计数为-1。(“华丽的标题不是!”) 如果标题中包含以阿拉伯数字表示的数字,则在排序之前从平均值中减去该数字。多个连续的数字被视为一个数字(例如,42将减去42,而不是减去4,然后再减去2)。单个数字不计入累计值(即,每个数字贡献0),但DO计入字符数。请注意,这可能会导致负值,应适当对待。(有传言,图书馆员迷恋数学老师已有好几年了。) 如果书名包含两个以开头的单独单词R,则该书的得分为“无穷大”,并被丢到角落的一堆书中(即,随机排列在列表的末尾)。(图书馆员曾经被一个带有这些缩写的人丢弃,或者您已经听说过。) 空格不计入字符的累积值(即,它们贡献0),但确实对标题中的字符数有所贡献。 不符合上述规则的字符(例如a ÿ)不会计入字符的累积值(即,它们贡献0),但确实会增加标题中的字符数。 例如,假设的书ÿÿÿÿÿ的“分数”为(0+0+0+0+0) / 5 = 0,但是假设的书的ÿÿyÿÿ分数为(0+0+25+0+0) / 5 = 5。 您可以按自己选择的顺序输出两本“得分”相同的书。(无论如何,它们在同一架子上) 示例输入1 War and Peace Reading …

4
递归ASCII螺旋
这场比赛结束了。感谢您提供有趣的非eolang条目,并祝贺Jakuje赢得了JavaScript提交。 按照此站点上ASCII艺术挑战赛的悠久传统,这是另一个。给定输入,绘制螺旋。 &>----v ||>--v| |||>v|| |||@||| ||^-<|| |^---<| ^-----< 很简单,是吗?呵呵呵呵...是的... (灵感来自ASCII Dragons Curve帖子和Optimizer的ASCII Art of the Day帖子) 输入项 输入将采用一系列参数的形式,这些参数取自通常的STDIN /函数自变量/等,无论您使用哪种语言,均由四个部分组成。这些部分可以是四个单独的参数,一个四元组,一个大小为4的数组等。为了在整个挑战中保持简洁和一致,我将输入表示为单个单词。 一个整数2 ≤ x ≤ 20,以“正方形”指定螺旋的大小,每个打印字符代表一个“正方形”的大小。从理论上讲,它的范围可能很大,但是考虑到我们正在绘制ASCII艺术,此值的安全上限为20,因此它在屏幕上的显示效果相当不错。 d u r或的单个字母l,表示从开始的“正方形”(向下,向上,向右,向左)的初始移动。 可选的c,指示“逆时针”。如果c省略,则假定螺线为顺时针旋转。 最后一个整数1 ≤ y ≤ 10,用于指定将螺旋图形递归多少次,使用前一个螺旋的完成“正方形”作为新螺旋的开始“正方形”。我选择上限为10,因为我想在某个时候完成绘图。 一些示例输入: 20lc5 13d2 2rc1 有趣的是,请注意,输入尺寸的奇数值将@始终始终是螺旋的精确中心,但是偶数值可能会在四个对角线方向的任何一个上具有起始“平方”偏移量,具体取决于初始方向旅行。这可能会导致某些有趣的模式。请参阅下面的两个偶数示例。 未遵循输入规范的输入(例如11q#s)是未定义的,我完全希望程序能够正确发出信号。:) 输出量 输出是通过与语言等效的STDOUT的ASCII可打印输出,具有以下规范: (每次递归的)起始“平方”必须标有at-符号@。 最后的“正方形”必须标有“&”号&。在多次递归的情况下,仅应标记最后一个“正方形” &。 螺旋路径的角需要使用来“指向”行进方向< > v ^。 垂直行程需要用管道来绘制|。 …

6
伟大的英国蛋糕
我听说有人生日那天很自私,要求所有人都做蛋糕,而且没有分享的计划!🎂 今天一定是某人的生日,所以为什么不给他们烤蛋糕呢。使用您喜欢的编程语言制作可口的蛋糕,并带有一条漂亮的“生日快乐”消息作为输出。(我建议厨师!) 你的蛋糕应该 模仿现实世界的食谱(如果可以链接,那就太好了!) 适合制作蛋糕的换行分隔成分列表 用新行分隔的方法步骤列表 服务多少人 保持尽可能接近正确的配料比。 投放时最少输出“生日快乐”。 最好的蛋糕是: 美味 -由于这是一场人气竞赛,因此社区将决定什么是美味 个性化 -尝试向特定人员发送自定义生日快乐消息。(如果找不到PPGC用户,为什么不名人?) 平衡 -尝试使用适当数量的食材以达到食谱准备的食用量。1000 eggs, serves 1对于一个服务可能只是一个却有点 大,巨大的,绝对巨大! 奇特的 -您不仅可以烘烤基本的海绵,例如还可以加一些糖霜,毛毛雨,佐料,装饰品等。 视觉吸引力 -图像在源代码中如ascii或在输出中都很好。毕竟是第一个“字节”。 而且,不要忘记,好的面包师不会偷工减料,不能正确地做事。(不要只使用无操作代码使它看起来像食谱,然后打印,确保您的代码有意义)。我鼓励选民以负面的态度看待这些食谱。 祝您烘焙愉快!

13
每个可能的周期长度
如果反复在其自己的输出上调用该函数最终达到原始编号,则可以认为具有输入并提供输出的函数(或程序)具有一个循环。例如,采用以下功能: Input: n 1 2 3 4 5 6 Output: f(n) 5 7 1 3 4 9 如果我们开始n=1,f(n)=5,f(f(n))=f(5)=4,f(f(f(n)))=f(4)=3,f(f(f(f(n))))=f(3)=1。 这是书面的(1 5 4 3)。由于此循环中有4个唯一数字,因此这是一个长度为4的循环。 您面临的挑战是编写一个具有每个可能长度的循环的程序或函数。也就是说,必须有一个长度为1,长度为2的循环,依此类推。 另外,您的函数/程序必须从正整数到正整数,并且必须是双射的,这意味着在所有正整数上,每个可能的输出值都必须有一个准确的输入值。换句话说,函数/程序必须计算正整数的排列。 详细信息:允许使用任何标准输入/输出系统,包括STDIN,STDOUT,函数参数,返回等。禁止使用标准漏洞。 您无需担心数据类型的限制-例如,仅在假设int或float可以容纳任何值的情况下保留以上属性。 对于非正整数的输入,该函数的行为没有任何限制,这些输入/输出将被忽略。 计分是按字节计的代码高尔夫球,最短的代码获胜。

9
实施函数式编程范例
您的公司才刚刚开始一个项目,并且您第一次决定使用功能性编程代码风格。但是,您的老板确实很不满意,不想使用内置功能,需要您自己实现主要功能。特别是你需要写功能:Map,Nest,Apply,Range,Fold并Table在您选择的语言。老板是一个非常忙碌的人,他想让程序尽可能短,这样他就不会浪费时间阅读。他也不想让您使用循环,因此,如果不使用循环,您的字节数将减少10%。 功能的详细要求如下: 地图 该Map函数有两个参数:f和list其中where f是一个函数,list是一个值列表。它应返回f应用于的每个元素list。因此它将按以下方式工作: Map(f,{a,b,c}) 退货 { f(a), f(b), f(c) } 和 Map(f, {{a,b},{b,c}}) 退货 { f({a,b}), f({b,c})} 巢 该Nest函数有三个参数,以及:f,arg,times这里f是一个功能,arg就是它的启动参数,times是功能多少次应用。它应返回一个对f施加times时间的表达式arg。因此它将按以下方式工作: Nest(f, x, 3) 退货 f(f(f(x))) 和 Nest(f, {a,b}, 3) 退货 f(f(f({a,b}))) 应用 该Apply函数有两个参数:f和args这里f是一个函数和args一个列表。它应该适用f于args。因此: Apply(f, {a,b,c}) 退货 f(a,b,c) 范围 该Range函数采用一个整数,r并输出直至该数字的整数。因此: Range(5) 退货 { 1, 2, 3, 4, 5} 折 该Fold函数有三个参数f,arg,others这里f是一个功能,arg就是简单的参数,并others列表。它将这样工作: …

2
旋转钻石瓷砖
任何规则的六边形都可以用钻石平铺,例如这样(从该问题中被盗): ______ /_/_/\_\ /_/\_\/\_\ /\_\/_/\/_/\ \/_/\_\/_/\/ \_\/_/\_\/ \_\_\/_/ 我们将考虑上述大小为1的拼贴(因为钻石的侧面由一个/或\组成)。大小为2的相同拼贴如下所示: ____________ / / /\ \ /___/___/ \___\ / /\ \ /\ \ /___/ \___\/ \___\ /\ \ / /\ / /\ / \___\/___/ \/___/ \ \ / /\ \ / /\ / \/___/ \___\/___/ \/ \ \ / /\ \ / …

26
制作PPCG图标
到11月1日,Programming Puzzles和Code Golf将会毕业,因此在接下来的11个月中,我们将保留一些我们尚未毕业时的记忆。 编写一个生成PPCG图标的程序,如下所示。 图片必须至少为64x64像素。 蓝色必须是颜色#62B0DF。背景可以是白色或浅灰色。 图像不必像这里一样被像素化。 或者,使用青色和白色的标准明亮ANSI颜色代码创建文本(尺寸至少为64x64个非空白字符)。 不允许内置图像和导入PPCG徽标。 这是代码高尔夫球,因此适用标准规则。以字节为单位的最短代码获胜。

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.