Questions tagged «code-golf»

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

3
激烈的四方密码
背景 一百十三年前,业余密码学家FélixDelastelle在四方形密码上发表了他的作品,该密码是一种二位置换密码,它接受25个字母的两个排列作为密钥,并对包含这些字母的消息进行编码。 像大多数纸笔密码一样,四平方密码今天没有任何密码价值,但是在其发明之时,它比其专论密码具有明显的优势。 一百十三年后,爱丽丝·德勒斯特勒(Alice Delastelle)决定通过增加字母的大小和键的数量来改进四格密码。[需要引用] 按键设定 字母包含以下字符(以空格开头): !"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ 给定一个密码短语,我们按以下方式构造此字母的排列: 仅保留每个字符的第一个出现。 按字母的自然顺序附加字母中未使用的字符。 在将四个密码短语变成四个键之后,我们将每个键分成边长为7的正方形,并排列四个得到的正方形,以便它们形成一个大正方形。 例如,如果密码短语是 PROGRAMMING PUZZLES & CODE GOLF POPULARITY CONTESTS & CODE BOWLING CORRECT HORSE BATTERY STAPLE DON'T TELL EVE!!! 密钥将像这样构造和排列: PROGAMI POULARI N UZLES TY CNES &CDF!"# &DBWG!" $%'()*+ #$%'()* ,-./:;< +,-./:; =>?@BHJ <=>?@FH KQTVWXY JKMQVXZ CORET H DON'T …

14
找到参考角
这是一个相当简单的问题。根据我发现的这个随机网站-Web Archive的参考,the acute angle formed by the terminal side of the given angle and the x-axis.您必须编写一个程序来查找这些内容。 我不记得代数2的任何内容,这是什么意思? 角度通常以标准形式给出,方法是将角度的一侧放置,然后逆时针向另一侧测量,如下所示: 这将是您的输入。您的输出将为此的参考角度。您可以认为这是从终端到X轴的最小距离。除了角度,不是距离。这里有些例子: 澄清说明 输入和提交的所有默认设置。 角度以度为单位。 负角,非整数的角度和角度> 360度被允许的。 以表格形式输出60 deg。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 另一个有用的链接。 测试用例 70 -> 70 deg 135 -> 45 deg 210 -> 30 deg -60 -> 60 deg 91 -> 89 deg 610 …

6
重建ASCII城市
+-+ +-+ | | +-+ +-+ | | | | | | | | +-+ +-+ +-+ ++ ASCIIville人民正在重建他们的城市并草拟新的蓝图。您的工作是根据所需的建筑物来绘制新城市。 输入将是有多少座建筑物。每个建筑物的高度是输入值的一半(如果是奇数,则四舍五入),不包括建筑物的顶部和底部。 让我们画一个基本的例子 4 +-+ +-+ +-+ ++ | | | | | | | | | | | | | | | | +-+ +-+ +-+ ++ 如您在此处看到的,|由于输入为四个,所以每座建筑物中都有两个。但是有一个陷阱!(这意味着上面的示例是不正确的,而本文顶部的示例是4 的实际输出) 对于不是素数的每栋建筑物,其高度都会降低一个。如果该数量整除3,5,或10,它会下沉一个。如果它可以被两个或多个这些数字整除,则扣除的金额相加(10被10和5整除,它不是质数,因此被3减去)。 让我们看一个输入为 …

18
比赛格式同义词
我今天整整都是在Super Smash Bros.比赛中度过的,我开始考虑在描述场景时使用的一些术语。这是我在锦标赛中看到的三组比赛: 最好的3(Bo3) 进行了三场比赛。比赛的获胜者是赢得大部分比赛的玩家。 如果一个玩家赢得了本局的两场比赛,他们将立即被宣布为获胜者,因为对手不可能追上。 最好的5(Bo5) 玩了五场比赛。比赛的获胜者是赢得大部分比赛的玩家。 如果一个玩家赢得了该局的三场比赛,他们将立即被宣布为获胜者,因为对手不可能追上。 第1至5(Ft5) 好吧,我之前的措词有点作弊。这种场景不是比赛的一部分,但是您经常会看到它们在场地中发生。传统上,如果您已经挑战了另一个玩家并且钱就到了,这就是您将要玩的那种背景。 听起来很简单:玩家反复玩游戏,直到其中一位赢得五分,然后宣布该玩家为赢家。 显然,Bo3和Bo5非常相似,只是玩的次数不同。但是Ft5明显不同...对吗?并不是的!无论Bo3组合如何下降,获胜者都将赢得两场比赛。Bo5组的赢家将赢得3场比赛。为什么不称它们为Ft2或Ft3?反向应用相同的逻辑将表明Ft5与Bo9完全相同。 这个挑战的目的是确定集合格式的同义词。 规格 您的程序或函数将从input中获取单个字符串。前两个字符为Bo或Ft,后跟一个数字。程序/函数将输出带有相反前缀和数字的字符串,以使输入和输出字符串含义相同。 以开头的任何字符串Bo都将以奇数结尾。 您可能会假设输入字符串中的数字永远不会大于200。也可能会假设您永远不会收到正确的输出包含大于200的数字的输入。同样,输入和正确的输出数字将始终大于0。 例子 Bo3 -> Ft2 Ft2 -> Bo3 Bo5 -> Ft3 Ft3 -> Bo5 Bo9 -> Ft5 Ft5 -> Bo9 Bo51 -> Ft26 Ft26 -> Bo51 Bo199 -> Ft100 Ft100 -> Bo199
17 code-golf 

24
在单词2上签名!
在单词2上签名! 不久前,我发布了一个名为Sign that word的挑战!。在挑战中,您必须找到单词的签名,即按顺序排列的字母(例如,thisis 的签名hist)。现在,这个挑战做得很好,但是存在一个关键问题:这太简单了(请参阅GolfScript答案)。因此,我也发布了类似的挑战,但是规则更多,PPCG用户在上一个难题的评论中建议了大多数规则。所以,我们开始! 规则 您的程序必须接受输入,然后将签名输出到STDOUT或任何您使用的语言的等效语言。 您不允许使用内置的排序功能,因此不允许使用$GolfScript之类的东西。 必须支持大写字母-您的程序必须将大写和小写字母组合在一起。因此,的签名Hello是eHllo,而不是Hello第一个版本的GolfScript回答所给的签名。 您的程序必须有一个免费的解释器/编译器,您应该链接到该解释器/编译器。 计分 您的分数就是字节数。最低字节数获胜。 排行榜 这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 显示代码段 var QUESTION_ID=55090;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var …

4
显示MIDI音轨
背景 MIDI文件与WAV或MP3音频文件完全不同。MP3和WAV文件包含表示音频“记录”的字节,而MIDI文件具有存储在MIDI事件中的一系列MIDI消息,这些信息通知MIDI合成器要播放的虚拟乐器或MIDI音序器应使用的播放速度。这些消息存储在轨道中,轨道的集合构成一个MIDI序列,其事件可由音序器分析,并将其消息从音序器传输到合成器的接收器。 在大多数情况下,存储在MIDI事件中的MIDI消息是“音符开”消息,它告诉合成器播放特定的音符,或者是“音符关”消息,告诉合成器停止播放音符。这些消息包含两个数据字节,第一个数据字节通知合成器该音符的速度(较高的速度会导致一个更大的音符),而第二个字节则通知合成器该音符的演奏(即中音C)。事件本身还包含刻度,用于告知音序器何时发送消息。 挑战 面临的挑战是编写一个完整的程序或函数,以单轨MIDI序列分析一系列Note On和Note Off MIDI消息,并向STDOUT输出一个图表,该图表显示何时打开特定音符,何时关闭这些音符以及这些音符的速度。图表的纵轴表示音符值,应按以下说明进行标记,横轴表示以MIDI音调为单位的时间(尽管应保持未标记状态,以减少复杂性和间距问题)。 您的输入可能是四个单独的数组或列表,每个数组或列表包含一系列整数值。包含四个带有一系列整数值的子数组/子列表的二维数组或列表;或任何其他方便的方式;这表示音轨中具有“音符开启”和“音符关闭”消息的MIDI事件集合。这些数组中的第一个数组中的值指定音符,第二个数组中的音符指定力度,事件滴答声中的第三个音符,和音符关闭事件音符的第四个音符。例如,给定四个这样的数组: {60, 62, 64, 65, 67} {20, 40, 60, 80, 100} { 0, 4, 8, 12, 16} { 2, 6, 10, 14, 18} 分析每个数组的第一个元素会产生两个事件:在滴答0处发生的事件,其中包含一条消息,其中包含Note On命令,note 60(中间C)和note速度为20;以及在第2滴答处发生的事件,并带有一条带有“音符关闭”命令且音符和力度相同的消息。 规则 图表的左侧应显示降序显示的数字0到127(代表音符值),音符开始时,每个音符的持续时间(音符关闭记号减去音符开启记号)以及音符的力度。表示音符的符号取决于其速度: 0-15: O 16-31: = 32-47: # 48-63: - 64-79: @ 80-95: + 96-111: 0 …

15
Insta名称...只需添加编码器即可!
在英语中,一种确保发音无意义的字母组合的保证方法是完全使它脱离辅音元音对,例如,Wu ko pa ha或Me fa ro,首先是辅音,然后是元音。 挑战: 编写一个程序或函数,给定用户指定的字母数,将使用此原理创建一个随机名称。就这么简单。 输入: 大于或等于2的整数,表示输出中所需的字母数。输入可以来自STDIN,命令行参数或函数参数。 输出: 给定长度的字符串,包含随机选择的辅音元音对。可以将其打印到STDOUT或最接近的替代版本,或者在使用函数的情况下返回。 规则: 英文字母的每个辅音应该为每对第一个字符选择的概率相等,英文字母的每个元音应该为每对第二个字符选择相等的概率。 字母对可以重复。 由于这是一个名称,因此首字母必须大写。 如果输入为奇数,则名称中随机选择的字母对应在末尾附加y或h。y或h的选择也应该是随机的。 不允许有标准漏洞。 以字节为单位的最小代码获胜。 字母定义: 辅音: bcdfghjklmnpqrstvwxyz 元音: aeiou I / O示例: Input: 6 Output: Mefaro Input: 9 Output: Wukohpaha 请享用!
17 code-golf  random  word 

8
分析地震
背景 在随机的Domino自动机是一个地震玩具模型,通过元胞自动机的启发。在此挑战中,您的任务是模拟该模型的简化版本,并从中收集数据。 自动机定义在位阵列上A,k位阵列表示可能发生地震的断层线。数组在其边界处环绕。条件A[i] = 0意味着位置i被放松,并且A[i] = 1手段,它的兴奋,或包含存储的能量。在每个时间步长,均一地随机选择阵列的一个位置。如果该位置放松,它将变得兴奋(将势能添加到系统中)。如果该位置已被激发,则将引发地震,并且所选位置和与其连接的所有激发位置将再次放松。放松的激发位置数就是地震的幅度。 例 考虑数组 100101110111 长度为12。如果随机过程从左侧选择第二个位,则数组将更新为 110101110111 ^ 由于所选位(标有^)为0。如果我们接下来从左边选择第四位,它是一个隔离的1,则触发震级为1的地震,并且该位0再次设置为: 110001110111 ^ 接下来,我们可以从右边选择第二个位,这将触发5级地震: 000001110000 ^ 请注意,1与所选择的“群集”相同的所有“ s”都是地震的一部分,并且数组在边界处环绕。 任务 您应将两个正整数k和用作输入t,您的任务是模拟随机的多米诺自动机的t时间步长,从k所有0s 的初始长度数组开始。您的输出应L为k整数列表,其中L[i](基于1的索引)包含i模拟过程中发生的震级数。您可以从输出中删除尾随零。 对于输入k = 15和t = 1000,一些代表性的输出是 [117, 97, 45, 26, 10, 5, 3, 1, 3, 0, 0, 0, 0, 0, 0] [135, 91, 58, 21, 8, 2, …

11
网格交叉顺序
如果您拿一张方格纸并画一条m向右移动并向n上移动的斜线,则您将按一定顺序交叉n-1水平和m-1垂直网格线。编写代码以输出该序列。 例如,m=5并且n=3给出了: 可能相关:产生欧几里德节奏,斐波那契平铺,FizzBu​​zz 输入:m,n相对质数的两个正整数 输出:将交叉点作为两个不同标记的序列返回或打印。例如,它可以是一串H和V的列表,True并且False,或0的和1的打印在单独的行。令牌之间可以有分隔符,只要它始终是相同的即可,而不是可变数量的空格。 测试用例: 第一个测试用例输出为空或不输出。 1 1 1 2 H 2 1 V 1 3 HH 3 2 VHV 3 5 HVHHVH 5 3 VHVVHV 10 3 VVVHVVVHVVV 4 11 HHVHHHVHHHVHH 19 17 VHVHVHVHVHVHVHVHVVHVHVHVHVHVHVHVHV 39 100 HHVHHHVHHVHHHVHHVHHHVHHVHHHVHHHVHHVHHHVHHVHHHVHHVHHHVHHHVHHVHHHVHHVHHHVHHVHHHVHHVHHHVHHHVHHVHHHVHHVHHHVHHVHHHVHHHVHHVHHHVHHVHHHVHHVHHHVHH 格式(m,n,output_as_list_of_0s_and_1s): (1, 1, []) (1, 2, [0]) (2, 1, [1]) (1, …

6
查找原始半完美数字
半完美数字 半完美/伪完美数是一个等于其除数的一部分或全部(不包括自身)的总和的整数。等于所有除数之和的数字是完美的。 Divisors of 6 : 1,2,3 6 = 1+2+3 -> semiperfect (perfect) Divisors of 28 : 1,2,4,7,14 28 = 14+7+4+2+1 -> semiperfect (perfect) Divisors of 40 : 1,2,4,5,8,10,20 40 = 1+4+5+10+20 or 2+8+10+20 -> semiperfect 原始 原始的半完美数是没有半完美除数的半完美数(自身除外:)) Divisors of 6 : 1,2,3 6 = 1+2+3 -> primitive Divisors of …

3
有没有更短的方法在python中获取用户输入?
这不是挑战。我想知道是否有可能将用户输入到少于19个字节的python(2或3)中的两个独立变量中。这些是我能得到的最短的信息: a,b=input(),input() a=input();b=input() (newline replaced with semicolon for readability) i=input;a,b=i(),i() 有没有更短的方法可以做到这一点?
17 code-golf  tips  python 

29
第n三元
我将第n个三元定义为返回n并具有以下形式的三元: 1 ? 2 ? 3 ? n - 1 ? n : 0 : 0 : 0 # n - 1 zeroes 编写一个函数或完整程序,给定输入n将输出或返回第n个三进制。代码高尔夫球。 测试用例 0 #=> undefined behaviour 1 #=> 1 2 #=> 1 ? 2 : 0 3 #=> 1 ? 2 ? 3 : 0 : 0 …
17 code-golf  string 

7
在K打高尔夫球的技巧
K是Arthur Whitney设计的APL家族中的一种编程语言。虽然官方口译员是开源的,但可以在Kx Systems网站上找到试用版,其工作空间限制为32位寻址空间(这不会对代码高尔夫球造成问题)。捆绑在kdb +数据库中的该版本俗称“ K4”。还提供了开源的K实现,包括基于K3的Kona和我自己的名为oK的解释器,该解释器基于 K5并具有基于浏览器的REPL。 Kx Systems有一个包含K4 / kdb + / Q信息的Wiki,而Kona GitHub页面上还有一个优良的收集的参考材料。我已经开始为oK / k5 编写手册,这可能是有用的参考。 像J和APL 一样,K是一种非常简洁而强大的语言,通常可以在代码高尔夫球中表现出色。请分享发现的技巧,窍门和成语,如果您还没有尝试过K,那么请考虑尝试一下!请为每个答案发布一个提示!
17 code-golf  tips  k 

7
将分数转换为重复的小数
如果遇到这种挑战,几乎是两极对立的,我怀疑这会稍微容易一些。 您的任务是采用格式为2的两个整数a/b(形成一个有理数),然后精确输出十进制数。 例如,如果要输入1/3,它将输出: 0.33333333333333333 并且将持续打印3s直到时间结束,并带有可选的前导0。(如果且仅当您的语言不允许在同一行上打印时,您才可以每行打印一个字符。) 的行为x/0将是不确定的。对于看起来不重复的数字(例如说5/4),它实际上确实重复。以下两种形式均可以接受5/4: 1.25000000000000000 1.24999999999999999 (与整数相同,1.9999999或2.000000) 分数可能无法在其最简单的形式,和a或b可能是负的(注-a/b = -(a/b),-a/-b = a/b,a/-b = -a/b,和-.6249999是无效的,但是-0.6249999是可以接受的,但你仍然可以使用。

3
科学家海豹被困在冰山上
介绍 一系列海豹被困在北极圈的冰山上。冰山上有一个无线电发射器,海豹可以用来寻求帮助。但是,只有爸爸封印才知道如何操作无线电发射器。更糟糕的是,每年的这个时候,冰非常滑,因此海豹将无法控制地滑动,直到它们碰到另一个海豹或滑出冰山的边缘,这使爸爸海豹很难到达无线电发射器。幸运的是,其中一个印章是计算机科学家,因此她决定编写一个程序,以弄清楚如何将爸爸印章操纵到无线电发射器上。由于没有足够的空间来编写程序,因此她决定使程序使用尽可能少的字节。 输入说明 Seal的程序将从STDIN,命令行参数或用户输入函数(例如raw_input())中接受输入。不能在变量中对其进行预初始化(例如,“此程序需要在变量中输入x”)。 输入的第一行由两个逗号分隔的整数组成,形式为 A,B 接下来是各B由A字符组成的行。每行只能包含以下字符: .:寒冷,寒冷,海洋。地图将始终以此为边界。 #:冰山的一部分。 a... z:不是冰山上的爸爸密封的密封。 D:冰山上的爸爸海豹。 *:无线电发射器。 (请注意,爸爸印章始终以大写字母表示D。小写字母d只是常规印章。) 输出说明 根据有关封条如何移动的以下规则,输出有关封条如何移动以将爸爸封条带到无线电发射器的说明列表。 规则:所有密封件均可向上(U),向下(D),向左(L)和向右(R)移动。它们不能对角滑动。 规则:海豹在移动时将继续沿相同方向移动,直到与另一海豹相撞或掉入海中。 如果一个密封件与另一个密封件碰撞,它将停止移动。与之碰撞的密封不会移动。 如果海豹掉入海中,它将淹没并从地图上消失。也就是说,它不能用作其他密封件的对撞机,并且不能再次移动。 规则:两个印章不能同时移动,而另一个印章仍在移动时也不能移动。下一个密封件只能在前一个密封件停止移动后才能移动。 规则:多次移动印章或淹没印章的数量没有限制。 规则:正确的解决方案将在无线电发射器的末端加封印。爸爸密封不能简单地在滑动时通过变送器。 输出将包含几行,每行形式为 A,B 其中A是移动(密封D的密封爸爸,a... z为其他),并且B是移动的密封件(或者方向U,D,L,或R)。请注意,您不需要找到最短的路线。任何将爸爸封印带入目标的路线都是可接受的输出。 输入和输出示例 输入: 25,5 ......................... .#######################. .####D#############*k###. .#######################. ......................... 输出: D,R 输入: 9,7 ......... .a#####b. .#####d#. .##l*###. .###m#p#. .#D#.#c#. ......... 输出(可能的一种输出): m,R b,L D,U …
17 code-golf 

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.