Questions tagged «code-golf»

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

1
Python 3-尝试打高尔夫球我的作业
注意:这并不是打高尔夫球的挑战;因此,更需要打高尔夫球的建议。 最近,我为我的Web开发类分配了Python作业,以检查是否可以编码。由于我已经对Python感到很自在,因此我决定尝试打高尔夫球,并且我想知道人们是否可以指出我错过的事情。 我已经知道某些地方有多余的空格,但是我对概念性的东西更感兴趣,例如使用while r:r为变量时,然后等待其“耗尽”! 那作业 import random from collections import Counter s=l='' c=['yellow','blue','white','green','Black', 'purple', 'silver', 'cyan', 'magenta', 'red'] n=[10,15,1,10,6,15,10,25,1,12,5,10,4,6,5,12,0,10,1,1] o=i=0 for y in c:l+=y[0]*(random.randint(n[o],n[o+1]));o+=2 l=list(l) print("Welcome to the CIMS Gumball Machine Simulator\nYou are starting with the following gumballs:") for b in c:print(str(l.count(b[0])) + " "+b);random.shuffle(l) print("Here are your random purchases:") …

5
几乎词典列表比较
输入项 两个列表A和B非负整数。 输出量 任一1,0或-1根据是否A大于,等于或小于B相对于所述扭曲词典式排序如下文所定义。如果需要,可以将1,0和替换-1为任何其他三个常数值。 扭曲的字典顺序与普通的字典顺序类似,在于您逐个元素比较列表,并在第一个不同的索引处确定列表的顺序。但是,在扭曲版本中,对于每个索引,我们对非负整数使用不同的排序。即,在每个索引处i(索引从处开始1),第一个i非负整数(从0到i-1)的顺序被颠倒,并且它们移至所有其他数字的上方。此外,表示一个列表比另一个列表短的“缺失元素”直接移到下面i-1。视觉上,索引的顺序i是 i < i+1 < i+2 < i+3 < ... < [missing element] < i-1 < i-2 < i-3 < ... < 2 < 1 < 0 请注意,第一个...表示无限多个数字。这意味着以下列表相对于扭曲的字典顺序而言按升序排列: [3,2,3,4] [3,2,3,5] [3,2,3,10] [3,2,3,1341] [3,2,3] [3,2,3,3] [3,2,3,2] [3,2,3,1] [3,2,3,0] 规则 您可以提供完整的程序或功能。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 Output 1: [0] [] [] [1] …

1
剪刀石头布比赛模拟器
您决定组织一次剪刀石头布冠军赛,以找出谁是最好的。您不想让运气来决定获胜者,所以每个人都必须在比赛前以书面形式给您提供战术。您还喜欢简单的事物,因此竞争对手的举动(显示石头,纸张或剪刀)必须仅基于前一轮(RvR,RvP,RvS,PvR,PvP,PvS,SvR,SvP或SvS)。在第一轮中,玩家必须显示一个固定的标志。 您决定编写一个程序(或函数)来模拟锦标赛。 比赛详情 至少有2位参赛者。 每个玩家都与其他人完全进行一场比赛。 一场比赛持续7回合。 在每个回合中,获胜者获得2分,失败者获得2分。如果出现平局,双方选手得分均为1分。 一名球员在一场比赛中的得分是他或她在比赛回合中得分的总和。 球员在锦标赛中的最终得分是他或她在所有比赛中的积分之和。 输入的详细信息: 您的程序或函数会收到N10个字符长的字符串,每个字符串都对应一个玩家策略。所有字符均为(小写)r p或s表示在给定情况下玩家将显示石头纸或剪刀。 第一个字母代表第一个回合(在该运动员的每场比赛中)。第二个显示如果上一轮是摇滚对摇滚,会发生什么。接下来的是RvP,RvS,PvR,PvP,PvS,SvR,SvP和SvS,其中第一个字母是玩家的牌子,第二个字母是对手的牌子。例如,rrpsrpsrps意味着玩家从岩石开始,然后复制对手的最后一步。 您可以将字符串列表输入为列表/数组或您的语言的类似数据或一个字符串。在后一种情况下,必须使用某种分隔符。 输出的详细信息: 您的程序或函数应按照提供输入的顺序输出每个玩家的最终得分。 分数应以空格或换行符分隔。允许使用尾随空格或换行符。 例子: 输入: ['rrpsrpsrps', 'rpppsprrpr'] 输出:( 5 9转rvr rvp pvs svp pvr rvp pvs) 输入: ['rrpsrpsrps', 'rpppsprrpr', 'ssssssssss'] 输出:( 13 17 12匹配项是5-9(第一对第二),8-6(第一对第三)和8-6(第二对第三)) 这是代码高尔夫球,因此最短的条目将获胜。

2
遗传基础变化
背景 在这一挑战,一个碱基b表示的整数的n是的表达n作为功率的总和b,其中每个术语最多出现b-1次数。例如,的基本4表示2015是 4^5 + 3*4^4 + 3*4^3 + 4^2 + 3*4 + 3 现在,遗传碱基b的表示n是通过将指数纳入其碱基获得的b陈述,然后将它们的指数,等等递归。因此,的遗传基础4表示2015为 4^(4 + 1) + 3*4^4 + 3*4^3 + 4^2 + 3*4 + 3 作为一个更复杂的例子中,遗传碱基3的表示 7981676788374679859068493351144698070458 是 2*3^(3^(3 + 1) + 2) + 3 + 1 从到的遗传基数变化(nbc表示为H(b, c, n))是通过获取的遗传基数b表示形式n,用bby 替换每一个c并评估结果表达式而获得的数字。例如, H(3, 2, 7981676788374679859068493351144698070458) 是 2*2^(2^(2 + 1) …

3
音乐:这个和弦的名字是什么?
这是音乐的反面:这个和弦是什么?,即按给定的和弦打印音符。这次输入的是和弦中的音符列表,您的任务是输出它是哪个和弦。 您的程序应支持以下三重和弦。例子以C为根。其他根的和弦是相同的和弦,所有音符都旋转,因此C将成为该根音,例如Dmaj由D,F#和A组成。 C C#D D#E F F#G G#A A#B Db Eb Gb Ab Bb Cmaj C E G Cm C D# G Caug C E G# Cdim C D# F# Csus4 C F G Csus2 C D G 请注意,Caug与Eaug和G#aug相同,而Csus4与Fsus2相同。您可以输出其中之一,但如果全部输出,则有额外的好处。 下表列出了奖金的第七和弦: C C#D D#E F F#G G#A A#B Db Eb Gb …

6
所有素数从0到1000
是否可以使C代码更小?它打印出从0到1000的所有素数。 C,89个字符 int i,p,c;for(i=2;i<1e3;i++){c=0;for(p=2;p<i;p++)if(i%p==0)c++;if(c==0)printf("%u\n",i);}
9 code-golf  number  tips  primes  c 

9
通过一次迭代对负数,零和正整数数组排序
取一个包含负数,正数和零的整数数组。对其进行一次迭代分组并放置在适当的位置,以使所有负数都在前,然后是所有零,然后是所有正数。 例: Input: 5, 3, 0, -6, 2, 0, 5 Output: -6, 0, 0, 3, 2, 5, 5 请注意,数字不需要完全排序:只需按符号排序即可。 因此,最终数组将如下所示: -, -, ..., -, -, 0, 0, ..., 0, 0, +, +, ..., +, + 规则 您只能使用输入数组和恒定数量的附加内存(即,您不能再创建任何数组) 您只能使用一个循环,该循环只能执行与数组长度相同的次数。您不得使用隐藏任何循环的内置函数。这包括内置的排序功能。 结果应为我描述的格式 获胜者将是提交最短代码(以字节为单位)的代码,该代码会将初始数组更改为正确的格式(如上所述)。

3
3x3连接的组件
挑战 考虑3x3国王网格,如以下ASCII图形所示: A--B--C |\/|\/| |/\|/\| D--E--F |\/|\/| |/\|/\| G--H--I 作为输入,您将获得一个长度9的整数列表,这些列表表示节点的标签。例如,输入[0,1,1,2,1,0,5,5,1]代表以下标签: 0--1--1 |\/|\/| |/\|/\| 2--1--0 |\/|\/| |/\|/\| 5--5--1 您的输出是输入中形成连接的节点集的整数集。更明确地说,n当且仅当n连接了带有label的节点集时,输出才应包含输入的整数。在此示例中,可接受的输出为[1,2,5],因为两个0未连接。最低字节数获胜。 详细规则 您可以为输入列表中的节点选择固定顺序,并且应该在答案中说明这一点。按照EFBDHCAGI的顺序,上述标签将指定为[1,0,1,2,5,1,0,5,1]。 您可以编写完整的程序或函数。在后一种情况下,如果您的语言支持,则输出可以是一组整数。 输出列表可能包含重复项,但其长度不能超过9。 不允许出现标准漏洞。 测试用例 这些具有与网格对齐的个位数;将它们调整为您选择的顺序。 011 210 => 1 2 5 551 010 202 => 0 2 221 110 123 => 0 2 3 221 111 111 => 1 111 …

4
策展人的困境
介绍 您是一家美术馆策展人的朋友,他最近很高兴能从四位艺术家那里获得现代艺术(其中有些人会为策展人提供零艺术品,年轻的流氓)。由于这是现代艺术,因此任何给定艺术家的作品都看起来完全一样。您的朋友想使用计算机来帮助确定这些零件的放置顺序。 课程要求 您的程序必须使用五个整数(传递给函数或通过stdin输入(或以其他方式输入))。前四幅是四位艺术家各自提供的绘画数量。最后一个值是排列索引i(从1开始计数,而不是0)。策展人希望i按字典的顺序查看绘画的排列。 您的程序必须以任何合理的格式输出此排列:例如abbccd或[0 1 1 2 2 3]。总输入少于十幅画的运行时间必须少于一个小时(希望这不会有问题)。 不允许使用任何内置函数来计算排列 例子 输入:0 1 2 0 2 假设我们有艺术家B的一幅画和艺术家C的两幅画(它们看起来都一样),则按字典顺序排列是: ['bcc',' cbc ','ccb'] 高亮显示的排列将是正确的输出,因为它是按字典顺序排列的第二个。 输入:1 2 0 1 5 [“ abbd”,“ abdb”,“ adbb”,“ babd”,“ badb ”,“ bbad”,“ bbda”,“ bdab”,“ bdba”,“ dabb”,“ dbab”,“ dbba”] 测试中 这是一些应该正确的测试。 1 2 4 1 5 - ABBDCCCC …

11
查找具有特定LCM和GCD的数字对
我当时正在和我的一个朋友一起处理数学问题,我们决定编写一个找到答案的脚本。原始问题如下: 两个自然数的差是2010,而它们的最大公分母是其最小公倍数的2014倍。找到所有可能的解决方案。 我们开始彼此独立地编写程序,当它起作用时,我们决定对其进行优化,以使我们可以管理的字节数最少。我们最终以了惊人的89个字节完成了这段漂亮的代码。 from fractions import*;print[i for i in range(10**6)if i*(i+2010)/gcd(i,i+2010)**2==2014] 我们想看看是否有人能编写较短的代码,该代码枚举了前100万个i。如果您足够勇于竞争,则可以使用任何喜欢的语言,但是我们希望Python 2能够将您的代码与我们的代码进行比较。 通常规则适用,最短字节获胜。适用标准代码的高尔夫球漏洞。标准的“漏洞”不再有趣 玩得开心!
9 code-golf  math 

3
打印序列的交集
顺序 您将得到第四位序列号1通过4。 OEIS0当自然数以二进制列出时,的位置。这是有关如何计算序列的示例: 0,1,10,11,100,101,110,111 ^ ^ ^^ ^ ^ 0 3 78 10 14 序列的开始是这样的: 0, 3, 7, 8, 10, 14, 19, 20, 21, 23, 24, 27, 29, 31, 36, 37, 40, 45, 51, ... OEIS此序列包括第一个自然数,跳过后两个,然后包括后三个,然后跳过后四个,然后继续。 0, 3, 4, 5, 10, 11, 12, 13, 14, 21, 22, 23, 24, 25, …

14
哪一年
2014年12月,2015年几乎已经开始。但是,似乎并非每个人都意识到这一点。 但是PPCG的人们来救助! 输入项 您的程序将获得一个像墙一样的网格,其中12月一个月的日子与11月和1月的日子有所不同。每个星期从星期日开始,到星期六结束。 一个月内的天以表示#。月份以外的日子用(空格,ASCII码32)表示。每周都有单独的一行。行之间用换行符(\n)分隔。您的程序可能要求省略或在输入末尾添加换行符。 例如,这是2009年12月的输入: ##### ####### ####### ####### ##### 日历始终是十二月。 任务 有了输入,您必须找到与日历关联的年份。由于日历与多个年份匹配,因此您必须返回最接近2015年的年份(2015年之前)。(2015年本身除外)。 您的程序必须在<2015年的任何年份中产生正确的输出,但那些12月的日历布局等于接近2015年的另一年(2015年前)的日历输出除外。 如果年份<2014,则还必须计算与2014年的年份差值。例如,对于2012年,差值为2。 输出量 程序的输出必须为: 文本:(Your calendar is for <year>.注意:由于最初被拼写为“日历”,因此我也将接受该拼写。) 后跟换行符(\n或\r\n)。 后跟文字: It's almost 2015. 如果年份<2014,则必须在其后加上文本:You're <difference> years behind.必须在单独的一行上。 后跟换行符(\n或\r\n)。 后跟文字: Go buy a new calendar! (可选)后跟换行符(\n或\r\n)。 规则 您可以选择是要接收日历作为命令行参数(例如yourprogram.exe <calendar>)还是提示用户输入。 您可能会认为您的程序不会收到无效的输入。无效的输入包括没有年份的日历布局。 最短的代码(以任何语言表示的字节数)为准。 任何非标准的命令行参数(运行脚本通常不需要的参数)都计入总字符数。 您的程序不得执行的操作: 取决于任何外部资源。 取决于具有特定的文件名。 输出所需输出以外的任何内容。 …

4
将数字分解为数字位数
Repdigits的形式是数a * (10^n - 1)/9与 a in [-9,9]\{0}(换言之111,-3333,66,这是通过重复只有一个数字由数字) 目标:编写一个使用单个正整数N并打印的程序或函数N = s_1 + s_2 + ... + s_k。每行应该有一个数字,并且这些数字需要右对齐。没有两个求和数应具有相同的位数,并且不允许加零。输出应按升序或降序排序(按位数) 例子: in: 24192 out: 24192 = 22222 + 2222 - 222 - 33 + 3 in: 24192 out: -7 -22 +888 +1111 +22222 =24192 in: 113 out: 113= NOT 111+ no empty lines …

5
第2洞-Prime Quine
在此处找到孔1 。 创建一个运行时输出多次自己的源代码块的工具。实际上,它必须输出n次,其中n是下一个质数。 我认为一个例子最能说明问题。 [MY QUINE][MY QUINE] [MY QUINE][MY QUINE][MY QUINE] [MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE] [MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE] [MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE][MY QUINE] 每个程序将在下一个质数输出其基本“块”(即[MY QUINE])。 不允许使用内置函数来计算数字是否为质数(如isPrime函数)或确定下一个质数(如nextPrime()函数)。 这意味着不允许列出除数的函数 同样禁止返回素数分解的函数 这应该是一个真实的信息(除了一些余地,请参阅下一点),因此您不应阅读自己的源代码。 由于Java和C#等语言已经处于不利地位,因此您无需输出完全有效的代码。如果可以将其放在一个函数中(即被调用)并输出下一个Quine,那么您就很好。 这是代码高尔夫球,所以最短的代码胜出!

1
注释
挑战 给定列表注释,您必须返回相应的目录。 笔记 音符必须在A到G的范围内,并且八度范围在2到6范围内。格式为音符八度,#代表锐利和b平坦。例如:A7或F#3。 标签 制表是一种通过图解表示乐器来编写音乐的方法。它通常表示为五行,上面有数字。 线上写的数字代表用来获得所需音高的品格。例如,谱号的第一行上的数字3表示演奏者应在高E(第一弦)的第三个琴格上按下。数字0表示螺母—即一个开放的字符串。 琴码不能大于22,吉他为六弦。 制表必须采用标准ASCII格式。您不得包括任何技术指标(锤击,滑动等)。每个音符用五个破折号隔开。如果是两位数,请将破折号减少到四个。 标签的开头应如下所示: e |----- B |----- G |----- D |----- A |----- E |----- 最后应该是这样的: -----| 对于所有行。 (来源:justinguitar.com) 例 Input: C3 C3 D3 E3 F3 Output: e |-----------------------------------| B |-----------------------------------| G |-----------------------------------| D |-----------------0-----2-----3-----| A |-----3-----3-----------------------| E |-----------------------------------| 获奖 最短的代码胜出

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.