Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

4
确定战争游戏的赢家
该卡的游戏战争是在最后的结局是完全由甲板的初始配置决定的,只要一定的规则并遵守在卡片从比赛场地拿起并移动到甲板的顺序有趣。在这次挑战中,将只有2个玩家,大大简化了事情。 游戏 每位玩家将获得26张牌。 每个玩家将顶牌正面朝上放置在卡组中。拥有较高排名卡(Ace > King > Queen > Jack > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3 > 2)的玩家赢得回合,并将其卡放置在对手卡的顶部,将其翻转,然后将其添加到其牌组的底部(因此,他们的获胜牌位于牌组的底部) ,而另一位玩家的输家牌正好在其上方)。直到玩家之一的卡用完为止。 如果这些牌的等级相同,则每个玩家将其牌组的前2张牌面朝上放置在其前一张牌的顶部(这样,位于牌组顶上的卡牌便是堆叠中的第二张牌,并且排名第二的卡片位于顶部)。然后,再次比较(每叠顶牌的排名),获胜者将其整个叠放在输家的整个叠层之上,将其上下颠倒,然后将其放在牌组的底部。如果还有其他平局,则以相同的方式玩更多的牌,直到选择获胜者或一个玩家的牌用完为止。 如果任一位玩家需要从其牌组中抽出一张牌,但其牌组为空,则他们立即输掉比赛。 挑战 给定玩家牌组中的两张纸牌列表,采用任何方便的格式,如果玩家1获胜,则输出真实值,如果玩家2获胜,则输出假值。 为方便起见,将用表示10张卡T,并且将面部卡缩写(Ace -> A, King -> K, Queen -> Q, Jack -> J),以便所有卡都长一个字符。或者,等级可以用十进制整数2-14(Jack -> 11, Queen -> 12, …

14
离散卷积或多项式乘法
给定两个非空的整数列表,您的提交应计算并返回二者的离散卷积。有趣的是,如果您将列表元素视为多项式的系数,则两个列表的卷积代表两个多项式的乘积的系数。 定义 给定列表A=[a(0),a(1),a(2),...,a(n)]和B=[b(0),b(1),b(2),...,b(m)](设置a(k)=0 for k<0 and k>n和b(k)=0 for k<0 and k>m),则两者的卷积被定义为A*B=[c(0),c(1),...,c(m+n)]其中c(k) = sum [ a(x)*b(y) for all integers x y such that x+y=k] 规则 允许使用适用于您的语言的任何方便的输入和输出格式。 不允许使用内置的卷积,创建卷积矩阵,相关性和多项式乘法。 例子 [1,1]*[1] = [1,1] [1,1]*[1,1] = [1,2,1] [1,1]*[1,2,1] = [1,3,3,1] [1,1]*[1,3,3,1] = [1,4,6,4,1] [1,1]*[1,4,6,4,1] = [1,5,10,10,5,1] [1,-1]*[1,1,1,1,1] = [1,0,0,0,0,-1] [80085,1337]*[-24319,406] = [-1947587115,7,542822]

18
排序一年中的月份
编写一个函数或程序,需要字符串输入,完全拼写,英语月份名称首字母大写:January,February,March等(空/ CR / LF终止OK,分隔与一些非字母字符,如果你选择),要么 比较两个输入,如果第二个输入(按月顺序)大于第一个输入,则返回True值。相等的值导致Falsey值 或按时间顺序对它们的任意序列(列表,定界字符串等)进行排序 (挑战的症结在于定义一种方法/表达式,以给出正确的词典编排排序。某些语言对另一种语言的回答可能较短) 您不能使用任何内部时间解析方法(例如strptime)将月份名称转换为数字或预设的月份名称映射。使用字符串本身的属性,您定义的简约查找表或更巧妙的方法。 例 正常运行的示例,尽管规则禁止使用第一个示例... import datetime def is_later_month(a, b): ''' Example of prohibited code because it relies on language features about how to parse month names ''' return datetime.strptime(a, '%B') < datetime.strptime(b, '%B') 以下版本是可以的,因为我们将信息编码 months = { 'January': 1, 'February': 2, 'March': 3, 'April': …

13
迷彩变色变色龙挑战
变色龙的挑战显然是一件坏事。太糟糕了,变色龙是美丽的生物。改变的时候了! 众所周知,许多变色龙具有通过改变肤色来与周围环境融为一体的卓越能力。这也是这一挑战的目标。 挑战 想象一个九像素的正方形。周围有八个像素。中心是变色龙。 像这样: 变色龙自然地试图与周围环境融为一体。它通过将其颜色更改为周围像素的平均颜色来实现。因此,在这种情况下,变色龙会将其颜色更改为。 目的 给定周围像素的颜色,输出​​变色龙的颜色。 变色龙的颜色定义为像素中所有红色,绿色和蓝色的总和÷8。 输入项 八个周围像素的颜色值的数组,从左上角开始,然后按顺时针方向继续,如下所示: [[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>]] 您可以选择以其他形式接收输入,只要它包含八个三进制的十进制数字0-255。 如果您收到其他形式的输入,则数字的长度必须一致,或者之间必须有非数字分隔符。三元组必须有一个分隔字符,除非将其0填充为9位数字。(例如044200255044200255044200255044200255044200255044200255044200255044200255,有效,44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255and和都是有效的,44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255但4420025544200255442002554420025544200255442002554420025544200255不是。) 输出量 包含中心像素颜色(十进制)的数组/字符串/等,如下所示: [<red>,<green>,<blue>] 如果输出的不是数组,则数字必须是一致的长度,或者数字之间必须有非数字分隔符。(例如044200255,有效,44 200 255但44200255无效)。 数字可能不包含小数点,因此例如44.0 200 255.0无效。 四舍五入 输出必须四舍五入到最接近的整数。(一半必须四舍五入。)例如,如果所有红色的总和为1620,则必须输出203,而不是202或202.5。 例子 图片仅供参考。中间像素是输出,周围像素是输入。 …

7
产生Gijswijt序列的n位数字
介绍 Gijswijt的序列(A090822)确实非常慢。为了显示: 前三个出现在第9个学期中(好的)。 前4个出现在第220届(距离很远,但可行)。 前5个出现在(大约)第10 ^(10 ^ 23)个词上(只是否)。 没有人真正知道前6个在哪里...怀疑它在... 第2 ^(2 ^(3 ^(4 ^ 5)))个项。 您可以假定您不必处理两位数的数字。 该序列是这样生成的: 第一项是1。 此后的每个术语是在其之前的重复“块”的数量(如果存在多个重复的“块”,则使用最大数量的重复块)。 为了澄清,这是前几个术语。 1 -> 1, 1(一个重复的块(1),所以记录的数字是1) 1, 1 -> 1, 1, 2(两个重复的块(1),所以记录的数字是2) 1, 1, 2 -> 1, 1, 2, 1(一个重复的块(2或1, 1, 2),因此记录的数字是1) 1, 1, 2, 1 -> 1, 1, 2, 1, 1 …

27
带E的字母E
给定五个输入,您的任务是显示以下字母“ E”形的ASCII艺术作品。 例子: 输入:(7,2,+,|,-注意:您不必遵循此确切的输入格式,如果不使用它,则必须说明自己的输入格式是如何工作的) 说明: 7 总宽度,包括左右边缘字符。 2 垂直字符数。 + 应该显示在边缘的字符。 | 在边缘之间垂直显示的字符。 - 应该水平显示的字符。 上面示例的输出: +-----+ | | +-----+ | | +-----+ 其他例子: 输入: 7,2,@,|,- 输出: @-----@ | | @-----@ | | @-----@ 输入: 7,2,+,|,# 输出: +#####+ | | +#####+ | | +#####+ 输入: 8,3,+,|,# 输出: +######+ | | …

1
寻求跳跃者
我最近有一个非常奇怪的不规则棋盘。它的正方形到处都是,甚至没有全部相连。至少它们仍然布置在常规网格上。我希望适应国际象棋规则,以便能够在棋盘上玩游戏,但首先,我需要一块可以在棋盘上任何地方玩的棋子,这似乎是我最好的选择。 跳跃者是骑士的国际象棋概括。跃点由两个整数m和n设置参数,可以在一个方向上移动m个正方形,然后在任一垂直方向上移动另一个n个正方形。对于标准骑士,我们有(m,n)=(2,1)。整个动作被认为是一次跳跃,因此到目标途中的正方形都不需要为空,甚至不存在。 挑战 您会以正2D整数坐标列表的形式获得“棋盘”,该2D整数坐标表示作为棋盘一部分的正方形。您的任务是找到一个跳线,如果有足够的动作,该跳线可以到达板上的任何正方形。 让我们看一些例子。标准棋盘使用8x8正方形的规则网格(请注意,对于此挑战,我们不区分白色和黑色正方形): ######## ######## ######## ######## ######## ######## ######## ######## 标准骑士可以达到所有目标,因此(2, 1)是有效的输出。但是,(1, 1)例如,这将是无效的,因为无论从哪里开始,这样的一块都只能达到正方形的一半。(1, 0)另一方面,由于所有正方形都是正交连接的,因此这也是有效的输出。 现在,如果我们有一个不规则的董事会,例如: # # # # # # # # # # # 然后可能的解决方案是(1, 1)和(3, 1)。我们还可以拥有一个完全断开区域的板,例如: #### #### #### #### #### #### #### #### 标准的骑士(2, 1)仍然可以到达这里的所有方块,这实际上是唯一的解决方案。 最后,任何跳伞者都无法完全达到以下简单的要求: # ## 请注意,输入格式将不是ASCII表示,而是坐标列表。例如,上面的第二个示例可以给出为: [[1, 1], [5, 1], …

20
计算字符串的直方图熵估计
编写一个程序或函数来估计给定字符串的香农熵。 如果一个字符串有n个字符,d个 不同的字符,x i是第i个不同的字符,P(x i)是该字符出现在字符串中的概率,则我们对该字符串的香农熵估计为: 对于此挑战中的估计,我们假设一个字符出现在字符串中的概率就是该字符出现的次数除以字符总数。 句点后,您的答案必须准确到至少3位数字。 测试用例: "This is a test.", 45.094 "00001111", 8.000 "cwmfjordbankglyphsvextquiz", 122.211 " ", 0.0

3
PPCG高级恶作剧
我们即将毕业于一个完整的站点,毕业前只剩下一件事要做:拉一个高级恶作剧!我认为我们应该对经典的“用一杯水装满走廊”插科打do做一个变体。 挑战 您的程序将读取文本并输出该文本,并盖上上下颠倒的水。上下颠倒的水杯看起来像这样:/~\ 这些杯子只能放在输入中的空白处,并且只能放置成使杯子的所有三个字符都位于非空白字符的正上方(否则水会溅出)出来!)。杯子不能叠放在其他杯子上。杯子必须放置在每个可用的开口中,并且假定每个输入都被无限的空白区域包围。 您可以假定输入被填充为带有空格的矩形。 我们需要迅速进行恶作剧,而无需任何人注意,因此每种语言中最少的字节数会获胜。 测试用例 输入: ____________________________________________ / ___ / ___ / ______/ ________/ / /__/ / /__/ / / / /_______ / _______/ _______/ / / //__ / / / / / / /_____/ /___/ / /___/ /___/ /_________/___________/ 输出: /~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\ ____________________________________________ / ___ / ___ / …

5
是否有更多的硬物或软物
与假设分析书的开头相切。 输入是一个由空格组成的矩形,如字符串,字符串列表等,其对象由#内部组成: ######## # # ######## ### #### ### #### ### 对象将始终是非相交,非接触的矩形。软对象的定义是#中间没有用填充的对象,而只是边界,而硬对象则是填充的对象。具有宽度或高度的对象<=2被认为是坚硬的。所有对象都是硬的或软的。 如果输入,输出中有更多的硬对象"Hard",如果较软,则输出"Soft",如果相等则输出"Equal"。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 这些情况不是全部输入,而是每个对象应表征的内容。实际输入将类似于问题顶部的ascii艺术。 硬 # #### ## ## ########## ########## ########## 柔软的 ### # # ### ################### # # # # # # ################### #### # # # # # # # # # # # # …
19 code-golf  ascii-art  counting  code-golf  number  grid  decision-problem  chess  code-golf  grid  graph-theory  chess  code-golf  math  geometry  code-golf  arithmetic  roman-numerals  fastest-code  code-golf  math  geometry  code-golf  string  cryptography  code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

6
稳定的生活游戏
挑战: 给定0和1的矩阵(或2d数组),输出Conway的生活游戏达到稳定状态所需的步数,如果从未达到1,则输出-1。稳定状态是每个步骤都没有打开或关闭任何单元的状态。游戏必须在给定的矩阵中运行,顶部和底部连接,侧面连接。(即给定的4x3矩阵,它应该在4x3的圆环上运行)输入矩阵的大小不得超过15x15。 注意:如果矩阵以稳定状态开始,则输出应为0。 样品: 输入: [[0,0,0], [0,1,1], [0,1,0]] 输出: 2 流程:(此不需要显示) [[0,0,0], [0,1,1], [0,1,0]] [[1,1,1], [1,1,1], [1,1,1]] [[0,0,0], [0,0,0], [0,0,0]] 输入: [[0,0,1,1], [0,1,1,1], [0,1,0,0], [0,1,1,1]] 输出: 2 处理: [[0,0,1,1], [0,1,1,1], [0,1,0,0], [0,1,1,1]] [[0,0,0,0], [0,1,0,1], [0,0,0,0], [0,1,0,1]] [[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]] 输入: [[0,1,0,0], [0,1,0,0], [0,1,0,0], [0,0,0,0]] 输出: -1 处理: [[0,1,0,0], [0,1,0,0], …

2
写一个聊天坪柜台
您的任务是编写一个程序,给该程序一个聊天消息列表,计算每个人被ping通的次数,这样我就可以知道每个人的受欢迎程度。但是,由于必须秘密执行此操作,因此我需要使其尽可能小以隐藏代码。 眼镜 输入包含2个元组的列表,每个项目的形式为("username", "message")。 对另一个用户的ping定义为@后跟3个或更多明确表示该用户的字母。 但是,您还必须考虑答复,必须以:messageid空格开头。 假定第一条消息具有ID,0然后按顺序进行。 输出每个用户并说出每个用户ping多少次。 输出可以是任何顺序/合理的格式。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 [["AlexA.", "I am wrong"], ["Quartatoes", "@Alex you are very wrong"], ["AlexA.", ":1 I am only slightly wrong"]] AlexA.: 1 Quartatoes: 1 [["Doorknob", "I have never eaten an avocad."], ["AquaTart", ":0 I will ship you an avocad"], ["AlexA.", ":0 this …

3
匈牙利字母顺序
对于那些希望比旧的西班牙字母顺序更具挑战性的人,让我们看一下匈牙利字母的顺序。 a,á,b,c,cs,d,dz,dzs,e,é,f,g,gy,h,i,í,j,k,l,ly,m,n,ny,o,o, ö,ő,p,q,r,s,sz,t,ty,u,ú,ü,ű,v,w,x,y,z,zs 实际上,q,w,x而y不是在匈牙利词连用,但它们包含了外来语和外国名字。不属于匈牙利字母(如ñ)的外来带重音符号的字符与不带重音的字符具有相同的优先级,但是我们对此挑战视而不见。 规则总结如下: 有向图(cs,sz,等)和三字符(dzs)被认为是因为他们对自己的信件。 cudar cukor cuppant csalit csata 如果同一图或三部曲在一个单词中彼此直接出现两次,则它们将以简化方式书写:ssz代替szsz,ddzs而不是dzsdzs字母顺序使用非简化顺序。例如kasza< kaszinó< kassza,因为kassza被用作k+ a+ sz+ sz+ a订货的缘故。有时,如果是复合词,您可以在一个词中找到非合同版本。 kasza kaszinó kassza kaszt nagy naggyá nagygyakorlat naggyal nagyít 大写无关紧要,除非两个词在没有大写的情况下完全相同,在这种情况下,小写字母优先 jácint Jácint Zoltán zongora 重音的元音的短期和长期的版本具有相同的优先级(a - á,e -é,i - í,o - ó,ö - ő,u - ú ü - ű),有一个例外:如果两个词本来是完全一样的,短元音比长元音具有优先权。请注意,与元音(元音ö和ü)是由完全不同的人物o和u。 Eger egér író …

19
让我们建立一个楼梯
对于初学者,我们没有足够(半)轻松的挑战。越来越多的简单方法已经被采用。因此,我试图提出一些初学者可能可以实现的目标,但这并不是重复的。 输入: 用您的OS换行符(即\r\n)分隔的单个字符串, 或包含多个字符串的数组。 输出- 楼梯: 删除所有非字母和非数字符号。所以剩下的就是[A-Za-z0-9]。然后“建楼梯”;基本上按长度排序,顶部最小,底部最大。 挑战规则: 当两个字符串的长度相等时,我们将它们彼此合并为一个大字符串(顺序无关紧要,因此可以是从第一到最后或从最后到第一,无论您喜欢哪两个)。 当合并的字符串再次具有相等的长度时,上述规则可以堆叠(请参见测试案例2)。 通用规则: 输入为STDIN,仅包含ASCII字符。输出为STDOUT。 输出的大小写必须与输入的大小写相同。 每个提交必须是能够编译和运行的完整程序,而不仅仅是方法/功能。编辑:我是新手,所以即使我自己更喜欢完整的程序,也许从现在开始使用默认值确实更好。对不起,每个人都已经发布了完整程序。随时进行编辑,下次我将尽量不更改挑战中的帖子。 这是代码高尔夫球,因此最短的答案以字节为单位。我可能会接受一年后最短的答案。 不要让代码高尔夫球的答案阻止您发布像C#之类的高尔夫非代码高尔夫球语言!尝试提出所有编程语言的最短答案。 随意使用比该问题更新的语言。 测试用例: 输入1: This is a sample text, that you will have to use to build stairs. The wood may be of excellent quality, or pretty crappy almost falling apart and filled with termites. …

3
圆上的文字
编写一个程序或函数,在具有最小可能半径的离散圆周围打印输入字符串。例如,对于input This is an example,您的程序应输出: a si n s i e h x T a m p le 圈子产生 您应使用中点圆算法计算离散圆的每个点的坐标。您可以在Wikipedia页面上找到有关如何实现此算法的示例。 这是算法的伪代码(基于Wikipedia的C示例): integer x = radius integer y = 0 int decisionCriterion = 1 - x while y <= x point at coordinates (x,y) belongs to the circle // Octant 1 …

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.