编程拼图和代码高尔夫

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

12
绘制一个星号模拟时钟N小时
挑战: 创建一个函数或程序,该函数或程序将接受代表小时的输入N(0到24之间的数字)。 输出应从显示小时N的星号中提取一个模拟时钟。 🕛🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛 笔记: •分针必须比时针长(就使用的星号而言) •分针必须至少有两个星号。 •正午,3pm,6pm和9pm将始终正交。按度数排列时,中间小时的输出应与一天中的小时顺序相同。我的意思是中午时针为0º,在下午3点时针为90º,因此对于您的1pm和2pm输出情况,必须满足以下条件: 0pm_deg < 1pm_deg < 2pm_deg < 3pm_deg。除此规则外,实际的度数可以是您决定的任何值,显然它将根据字体和其他本地因素而变化。 •时针和分针之间的连接点是任何一种圆形/椭圆形的Unicode字符。 o, O, •, 0, etc. 输入/输出示例(可能会因工程图样式而异) N = 3; * * * O * * N = 4; * * * O * * N = 5; * * * 0 * * N …

11
标记UKMT IMC论文
我今年做了IMC。这里还有其他人吗? 在UKMT中级数学挑战赛论文中,有25个问题。如果正确回答,前十五个问题将给您五个分数。对于其他十个问题,您将获得正确的六分。在最后十个问题中,如果您弄错了它们,您将失去分数!对于第十六至二十个问题,您将失去一分;对于最后五个问题,您将失去两分。如果您将问题留为空白,则不会授予或扣除任何分数。不会因前15个问题中的任何一个错误而扣分。本文是多项选择;您可以为每个问题从A,B,C,D和E中选择任何答案。每个问题始终只有一个正确答案。 创建一个使用两个字符串并输出分数的程序/函数。第一个字符串将是您对本文的回答。如果跳过问题,请使用空格,空字节或下划线。否则,请使用字母A,B,C,D或E作为答案。您可以输入为大写或小写。第二个字符串将是本文中每个问题的正确答案。然后,您的程序/功能将输出一个分数。使您的代码简短。 测试用例: DDDDDDDDDDDDDDDDDDDDDDDDD ABCDEABCDEABCDEABCDEABCDE 15 BDBEACCECEDDBDABBCBDAEBCD BDBEACCECEDDBDABBCBDAEBCD 135 DBACBDCDBAEDABCDBEECACDC_ DBADBDCDBAEDABCDBEEDACDCA 117 _________________________ DABDABDABDABDABDABDABDABD 0 DBADBDCDBAEDABCD_E__A__C_ DBADBDCDBAEDABCDBEEDACDCA 99 _______________BBBBBBBBBB AAAAAAAAAAAAAAAAAAAAAAAAA -15
22 code-golf 

30
获取一个具有不同数字的随机n位数字,第一个不是0
我读了这个问题,并认为这将是一个不错的挑战。 任务 给一个输入0<n<10生成一个随机数 正好n位数字 第一个不是 0 所以 f(n)>10**(n-1)-1 不同的数字 获奖标准 这是代码高尔夫球,因此最短的代码获胜。 随机 我的意思是随机分布均匀。因此,从程序的角度来看,每个可能的数字都有相同的机会。如果您使用的语言具有一个奇怪的随机数生成器,则可以使用该生成器。 例 要从中随机选择的值的列表n=2是: [10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, …
22 code-golf  number  random  grid  game  king-of-the-hill  javascript  code-golf  arithmetic  statistics  code-golf  math  code-golf  math  code-golf  string  palindrome  code-golf  string  interactive  code-golf  quine  polyglot  code-golf  string  stack-exchange-api  code-golf  number-theory  decision-problem  code-golf  tips  code-golf  string  internet  code-golf  graphical-output  image-processing  fractal  code-golf  ascii-art  geometry  hexagonal-grid  code-golf  string  restricted-source  hello-world  code-golf  game  code-golf  cipher  code-golf  permutations  cops-and-robbers  permutations  cops-and-robbers  code-golf  internet  stack-exchange-api  code-golf  ascii-art  random  code-golf  tips  code-golf  ascii-art  code-golf  code-golf  kolmogorov-complexity  code-golf  string  unicode  code-golf  number  sequence  primes  palindrome  code-golf  game  decision-problem  code-golf  math  geometry  code-golf  graphical-output  interactive  code-golf  set-partitions  code-golf  number  arithmetic  restricted-source  code-golf  decision-problem  python  recursion  code-golf  ascii-art  code-golf  source-layout  code-golf  function  recursion  functional-programming  code-golf  game  combinatorics  permutations  code-golf  string  file-system  code-golf  string  hashing  code-golf  stack-exchange-api  code-golf  string  code-golf  math  number  arithmetic  polyglot 

4
将网格拆分为网格
介绍 有一个小村庄,只有几栋房子和空旷的田野。当地官僚希望将村庄分成很多部分,以便每个地块都包含一所房子,并且地块的边界形成一个漂亮的直线网格。您的任务是确定是否可行。 任务 您的输入是一个矩形的二维位数组;1代表房屋,0代表空字段。它的大小将至少为1×1,并且将至少包含1个1。您可以采用任何合理格式的输入(嵌套的整数列表,字符串列表,多行字符串等)。 您的程序将确定是否可以使用水平和垂直直线将数组划分为多个网格单元,以便每个网格单元仅包含一个1。网格单元可能具有不同的大小和形状,尽管它们始终是矩形。这些线必须从阵列的一条边缘延伸到另一条边缘。 例如,以下是数组的有效划分: 00|0010|01|1 01|0000|00|0 --+----+--+- 00|0000|00|1 01|0010|01|0 --+----+--+- 01|1000|10|1 而以下划分是无效的,因为存在没有1或多个1的网格单元: 00|0010|01|1 --+----+--+- 01|0000|00|0 00|0000|00|1 01|0010|01|0 --+----+--+- 00|1000|10|1 如果存在有效的除法,则应输出真实值,否则输出虚假值。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜。 测试用例 [[1]] -> True [[0,1],[1,0]] -> True [[1,1],[1,0]] -> False [[1,0,1],[0,1,0]] -> True [[1,0],[0,1],[0,1]] -> True [[1,0,0],[0,0,1],[0,1,1]] -> True [[1,1,1],[1,1,1],[1,1,1]] -> True [[1,0,1],[0,1,0],[1,0,0]] -> True [[1,0,0],[1,0,0],[0,1,1]] …

10
两种颜色的重叠圆
编写一个程序或函数,以您选择的合理格式接收以下输入: 两个正整数W和H定义要生成的图像的宽度和高度。 两种RGB颜色C1和C2将用于为图像着色。 形式的三元组列表,(r, x, y)用于定义在图像平面中具有半径r和中心的圆x, y。r是一个正整数,x并且y是任何整数。图像的左上像素为0, 0,x轴向右增加,y轴向下增加。 输出尺寸为W x H的图像,并用C1和C2着色,以使所有重叠圆所定义的两个相邻区域都不是同一颜色。 例如:如果输入是 W = 300 H = 200 C1 = (255, 200, 0) C2 = (128, 0, 255) Circles = (25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162) 那么圆边界看起来像这样: 圆圈创建的图像中有六个不同的连续区域。每个区域必须用C1(黄色)或C2(紫色)上色,以使没有两个相邻的区域具有相同的颜色。 有两种方法可以做到这一点,它们唯一的区别是可以交换颜色: 因此,对于示例输入,这两个图像中的任何一个都是有效输出。 喜欢的东西这是因为两个黄地区彼此相邻无效的输出。 您的输出图像应遵循以下准则: 除了C1和C2,第三种中性色(例如黑色或白色)也可以用于圆形边界,只要它们的厚度不超过5像素即可。(上面的示例中存在黑色的1像素厚边界。) 但是,圆边界不是必需的。这些区域可以彼此直接相邻: …

2
生成ASCII Padovan螺旋
这是此挑战的ASCII版本。最初的职位由Martin Ender根据请求分开 介绍 类似于斐波那契数列,Padovan 数列(OEIS A000931)是一个数字序列,是通过在序列中添加前项产生的。初始值定义为: P(0) = P(1) = P(2) = 1 第0,第1和第2项均为1。递归关系如下所示: P(n) = P(n - 2) + P(n - 3) 因此,它产生以下序列: 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, ... 将这些数字放在一起时,将它们用作等边三角形的边长会产生一个不错的螺旋,就像斐波那契螺旋: 图片由维基百科提供 …

4
我刚刚玩什么?将吉他指法转换为和弦
相关:音乐:这和弦里有什么?,弹奏笔记,生成吉他弹片?,将数字对转换为吉他音符 给定吉他指法,输出它代表的和弦。您可以使用标准输入和输出,也可以编写返回字符串的函数。 输入的指法将分类为以下和弦之一,表示如下(如果根音为C): 大三合会: C 小三合会: Cm (主要)第七名: C7 小七: Cm7 和弦可能颠倒了,因此您不能依靠最低音为根。您也不能依靠这是现实世界中的简单指法。更一般而言,程序的输出必须忽略音高的八度,并将与同一音符(即A)相对应的所有音高均视为相等。 这是code-golf,因此以字节为单位的最短代码获胜。 输入格式 输入是一系列由6个值组成的值,这些值针对标准调音(EADGBE)中的6弦吉他的每个弦指示将在哪个弦上弹奏。这也可能表明该字符串根本没有播放。“零”品格也称为打开位置,品格号从那里开始递增计数。假设吉他有21个品格位置,因此最高品位是20号。 例如,输入X 3 2 0 1 0意味着将一根手指放在吉他脖子顶部的以下位置: (6th) |---|---|---|---|--- |-X-|---|---|---|--- |---|---|---|---|--- |---|-X-|---|---|--- |---|---|-X-|---|--- (1st) |---|---|---|---|--- 并弹奏第二至第六弦。它对应于以下ASCII标签: e |-0-| B |-1-| G |-0-| D |-2-| A |-3-| E |---| 您可以灵活选择所需的输入类型:每个品格位置可以表示为字符串或数字。未弹奏的吉他弦通常用指示X,但-1如果您更方便(例如,使用数字),则可以选择其他前哨值。可以将6个品格位置序列输入为任何列表,数组或序列类型,单个以空格分隔的字符串或作为标准输入-再次选择。 您可以依赖与上述4种和弦类型之一对应的输入。 请在您的帖子中说明您的解决方案采用哪种输入形式。 输出格式 您必须将描述指法所用的和弦的字符串返回或打印到标准输出。此字符串由串联在一起的两个部分组成。资本化问题。允许尾随空格。 第一部分表示根音的一个A,A#/ Bb,B,C,C#/ Db,D,D#/ …

9
<(“ <)鸟舞者(>”)>
您的鸟一直在瘙痒一些运动,并且讨厌一直被困在静止的位置。编写一个程序,该程序将显示一个随机跳舞的ascii鸟,并根据跳舞动作每100ms * n或200ms * n更新一次。鸟总是从舞步开始&lt;(")&gt;。 程序应接受一个输入,该输入是一个将睡眠间隔乘以(n &gt;= 0 &amp;&amp; n &lt;= 50)的数字。 100ms动作 ^(")v v(")^ ^(")^ v(")v 200ms动作 (&gt;")&gt; &lt;(")&gt; &lt;("&lt;) 额外细节 随机性不一定要统一,但是每个舞步都应该有合理的发生机会(每60个舞步中至少有1个看起来很公平,如果同一舞步连续出现两次也可以) 一次只能显示一只鸟,而不是多只鸟 允许尾随空格(但不允许其他尾随字符) 鸟应显示之前的睡眠 Python 3中的示例 import random, time, sys birds = """(&gt;")&gt; &lt;(")&gt; &lt;("&lt;) ^(")v v(")^ ^(")^ v(")v""" birds = birds.split() interval = int(input("Sleep for 100ms*")) selection …

3
我们到了吗?
我是一个时光旅行者,我迷恋时间的流逝。我特别喜欢钟针经过12时,翻动日历的下一页或所有人大喊“新年快乐”的那一刻。 请为我编写一个程序,以进度条的形式显示我从最后一刻到下一刻的距离。例如,如果我告诉它时间是09:12,它应该打印以下内容: 09:00 ####---------------- 10:00 如果我告诉它月份是1982年5月,则应打印以下内容: 1982-01 #######------------- 1983-01 我是否提到我是时光旅行者?我从0 AD的第一个毫秒到9999 AD的最后一个毫秒旅行到任何地方,因此程序需要处理该范围内的任何日期和时间。 输入项 输入将采用以下格式之一: YYYY-MM-DDThh:mm:ss.sss YYYY-MM-DDThh:mm:ss YYYY-MM-DDThh:mm YYYY-MM-DDThh YYYY-MM-DD YYYY-MM 这些是唯一需要处理的格式。每个部分将完全具有显示的数字位数,这意味着小数秒可能带有尾随零(例如.120,never .12)。该T是文字字母“T”划定从时间日期。小时是24小时制。 月和日以1为基础(请参见下文)。 无效和超出范围的输入无需处理。 根据程序员的判断,输入可能只有一个尾随换行符。 进度条数学 程序与给定输入中的最低和第二最低有效单位有关。例如,如果输入具有日级精度(例如2016-12-14),则进度条将指示输入月份中已过的天数比例与剩余的天数比例。 进度条将具有20个单位(字符),并表示将被舍入到最近的增量比例1 / 20。例如,给定2016-12-14T12:28,所述进度条显示轮(28 / 60 ×20)= 9 20的单位“填充”。 从1开始的月份和日期 尽管(例如)12月1日01位于2016-12-01,但出于计算目的,它是该月的第0天,因为截断的单位表示该天的第0小时的第0分钟的第0毫秒。换句话说,2016-12-01是0 / 31的方式,通过腊和2016-12-02是1 / 31,等等。 同样地,2016-01是一月的第0天的第0毫秒,所以在计算中它是0 / 12,该装置2016-12是11 / 12。 是的,这意味着几个月和几天永远不会完全填满进度栏。 不同的月份持续时间和leap年 不同的月份有不同的天数,并且输出必须反映出这一点,包括leap年。2017年2月6日的进度条将与2016年2月6日(或两年的1月6日)的进度条不同。 杂 …
22 code-golf  date 

7
查找最小和最大之间最长子序列的最大乘积
输入: 大于零的整数的非空序列,其长度大于1。 输出: 序列的最小和最大元素之间的最长子序列的所有元素的最大乘积,包括其自身。 注意: 因为最小和最大元素可以重复,所以必须找到确定的答案才能找到可能的最长子序列,该子序列的一端是序列的最小元素,而另一端是序列的最大元素。如果存在多个最长子序列,则选择乘积最大的子序列。 例子: 第一个例子: 输入: [5, 7, 3, 2, 1, 2, 2, 7, 5] 输出: 42 说明: min == 1,max == 7。有2个可能的子序列,末端分别为min和max:[1, 2, 2, 7]和 [7, 3, 2, 1]。它们的长度相等,因此比较乘积:7*3*2*1 == 42和1*2*2*7 == 28。因为42 &gt;= 28,请回答:42。 第二个例子: 输入: [1, 2, 2, 2, 4, 3, 3, 1] 输出: …

17
中和数据
要中和数据,请将所有数字(非数字!)递归替换为零,并将所有字符(非字符串!)替换为空格。 您必须接受您的语言可以处理的任何单个数字,字符或字符串,或者可能是混合数字/字符数据的递归数组*。例如,如果您的语言可以处理,则必须接受实际的字符串(而不是将输入限制为单个字符的列表)。 如果您的语言包含一个内置的程序,可以完成所有或大部分任务,那么不提供该程序的话,我将不胜感激。 每种语言中提交时间最短的作品都是获胜者,我会收到我的支持。 样品盒 "" → "" 7 → 0 123.456 → 0 "X" → " " " " → " " "Yo!" → " " [] → [] [-1.2E3] → [0] ["Hey"] → [" "] ["H","e","y"] → [" "," "," "] ["R",2,"D",2] → [" ",0," ",0] ["C","3","P",0] → …

6
动画俗气的灯光装饰
这项挑战是为了纪念我在法律院里的俗气的圣诞灯。 面临的挑战是创建一个显示“实时”装饰的图形输出。 视频(gif或其他格式)将具有n×m的垂直和水平“灯光”。5 &lt;= m,n &lt;= 40。帧的大小和分辨率可能随n 和m的不同而变化,但对于n,m = 5(矢量图形是可以的),必须至少为50x50像素。带有和的图片如下所示:n=6m=5 装饰: 颜色: 所有的灯都会有以下6个RGB-的颜色之一{255,0,0},{0,255,0},{0,0,255},{255,255,0},{0,255,255}和{255,0,255}。 动画: n并将m以您喜欢的任何合理格式和顺序作为输入 图像每隔都会改变dt = 25 ms。如果是由于“外部因素”(例如解释器的限制,计算机运行缓慢等)导致的偏差,则可以。 如果无法手动设置时间步长,则接受默认时间步长。 所有指示灯在处将变为红色({255,0,0})t=0。 第一个灯(左上)总是有5%的机会改变颜色。所有颜色(当前具有的颜色除外)应该具有相同的可能性。 每个灯(第一个灯除外)将在其左侧获得灯的颜色。如果光源在最左边,那么它将获得上方行最右边的颜色。灯的编号如下所示。灯光编号k将获得灯光编号的颜色k-1。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 理论上,输出应该永远运行(除非您的语言/解释器有一定的限制,以防止这种情况)。 请提供至少5秒钟的样本,最好在答案中提供更多(这是一种鼓励,而不是要求)。(到TIO或类似的链接当然也可以:D) 可以接受框架,轴,网格线等。 6乘5 15乘30

6
魔镜疯狂
介绍 我的房间里装满了魔镜。它们是神秘的文物,可以复制任何物品,但另一个魔镜除外。更明确地说,该项目的重复版本将以相同的距离出现在镜子的另一侧。但是,如果在复制镜和任一物品(原始或复制品)之间的任一侧都有另一个魔术镜,则不会形成复制品。原始项目可以在镜子的左侧或右侧,并且重复项将出现在另一侧。而且,重复项本身可以被另一个镜像复制。项目永远不会阻止其他项目的重复(除非直接位于要复制的位置上)。 输入项 您的输入是一个由字符组成的字符串.#|,它们代表空白,物品和魔镜。输入中将始终至少有一个魔术镜。 输出量 根据上述规则,您的输出将是另一个字符串,其中每个魔术镜都复制了它可以复制的所有物品。您可以假设出现重复项的位置始终有一个空白空间(因此它们不会超出范围)。 例子 考虑输入字符串 .#.|.....|......# A B C D 为了清楚起见,我们在其中标记了一些位置。镜像B重复项item A,其最终在其右边: .#.|.#...|......# A B C D 镜像C然后复制新项目: .#.|.#...|...#..# A B C D 镜像C无法复制项目A,因为镜像B一直在进行中。它也不能复制项目D,因为镜像B在另一侧。同样,mirror B不能复制项D或旁边的重复项,因为mirror C妨碍了,所以这是正确的输出。 再举一个例子,考虑输入 .##..#...|#..##...|..##....#. AB C DE FG H IJ K 镜子D可以复制A和B右侧,并且E和G左侧。 C并且F已经是彼此的副本。字符串变成 .##.##..#|#..##.##|..##....#. AB C DE FG H IJ K Mirror H可以复制E,,F以及和的重复项,A以及B在右边和I左边的重复项。 …
22 code-golf  string 

7
打印多语种碎片
通常,以多种语言构造多语言,通过将它们包装在字符串文字中,使用注释语法或其他类似的技巧,每种语言可以忽略其他语言存在的代码部分。 您的目标是编写一个多语言版本,其中每种语言的输出是来自产生该输出的多语言版本的代码。具体来说,输出必须由仅删除的多语言代码构造而成,并且必须是给定语言的Quine。 规则 只要 允许适当的Quins(禁止读取源代码,禁止接受输入,如果没有STDOUT选项,则输出必须为STDOUT或最接近的替代方案,并且程序必须不仅包含隐式打印的文字,而且还应包含其他内容)。 由于不同的语言可以使用不同的编码,因此原始字节在这里很重要。例如,如果语言A使用UTF-8,语言B使用CP437,则(十六进制)代码C3 88 46 47为ÈFG用于语言A和├êFG语言B。 所有输出必须是不同的(再次比较原始字节)。这避免了尝试限制次要语言版本时的麻烦-如果两种语言使用代码的同一部分来执行相同的操作,则不能同时声明它们两者。 如果您有两种语言A和B,它们XY在这两种语言中都是有效的输出,但YZ在B中也是有效的,那么您可以选择XY作为A YZ的输出和B的输出,因此可以在分数中同时使用它们(但XY由于上述规则,您无法同时使用两种语言。 所有输出必须尽可能短。例如,如果您的代码是print('foo')#something,对于Python 3(忽略输出不正确的事实),您需要输出的代码将是print('foo'),并且print('foo')#将不允许使用。如果有多个长度相等(最小)的字符串产生正确的输出,则可以选择其中任何一个。 提交内容必须是至少两种语言的多语种。 您的分数将由给出(number of programming languages with distinct outputs)**3/(total byte size of polyglot)。最高分获胜。如果两个提交者得分相同,则首先达到该得分的提交者将获胜。

12
得分之心
《红心大战》是一款供4位玩家玩的花样纸牌游戏。每把戏都是由打出领先套装最高牌的玩家所采取的。在每局结束时,玩家都会根据所持的罚卡获得罚分;任务是根据Microsoft Hearts规则确定分数。 输入项 输入的是4个列表(或定界字符串,数组等),显示4个玩家中每一个所拿的罚卡。罚卡是 2♥, 3♥, 4♥, 5♥, 6♥, 7♥, 8♥, 9♥, 10♥, J♥, Q♥, K♥, A♥, Q♠ 我们将表示为 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 0 分别。 输出量 输出是4个玩家(列表,字符串,数组等)产生的4个罚分。得分如下: 每个心脏(♥由整数表示1,以13含)招1点 黑桃皇后(以Q♠代表0)得13分 例外:如果一名玩家拿走了所有罚点卡(称为射月球),则他获得0分,而所有其他玩家得到26分。 测试用例 [2, 8, 7, 1], [3, 4], [], [9, 5, 6, …

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.