Questions tagged «code-golf»

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

11
做自动超对数
给定一个正整数Ñ和若干一个,所述Ñ个迭代幂次的一个被定义为一个 ^(一个 ^(一个 ^(... ^ 一))),其中^表示幂运算(或功率)和表达式包含数一正好ñ倍。 换句话说,四方是右缔合的迭代指数。对于n = 4和a = 1.6,四边形为1.6 ^(1.6 ^(1.6 ^ 1.6))≈3.5743。 相对于n的四次方的逆函数是超对数。在前面的示例中,4是3.5743与“超级基数” 1.6的超级对数。 挑战 给定一个正整数n,找到x,使n是超基数x中其自身的超对数。也就是说,找到x使得x ^(x ^(x ^(... ^ x)))(x出现n次)等于n。 规则 允许的程序或功能。 输入和输出格式像往常一样灵活。 该算法理论上应该适用于所有正整数。实际上,由于存储器,时间或数据类型的限制,输入可能被限制为最大值。但是,该代码必须100至少在不到一分钟的时间内适用于输入。 该算法理论上应能0.001精确给出结果。实际上,由于数值计算中的累积误差,输出精度可能会更差。但是,0.001对于指定的测试用例,输出必须准确。 最短的代码胜出。 测试用例 1 -> 1 3 -> 1.635078 6 -> 1.568644 10 -> 1.508498 25 -> 1.458582 50 -> 1.448504 100 …
18 code-golf  math  number 

8
扫雷在工作
每个人都知道Windows XP附带的旧扫雷游戏。这是一个简单的网格,具有9x9的单元格矩阵,其中包含一个数字(指示与之相邻的地雷数量)或一个地雷。 挑战在于,如果您自己实施PRNG,则要生成一个随机的9x9网格,其中包含10个炸弹,给出任意整数种子(取决于您的计算机/语言最大的int)并带有布朗尼点。 示例输出:单元格包含地雷的数字0-8或* *101*1000 110111000 123210000 1***10000 123210011 00000002* 00000114* 000112*3* 0001*2121 以字节为单位的最短代码获胜。标准规则等。

26
英语到外国人翻译
简报 外星人已经定居在地球上,而且很奇怪,他们的字母和我们的字母完全一样。他们的语言也与我们的语言非常相似,但有一些非常独特且易于计算的差异。 挑战 取一个字符串并输出等效的外语。翻译工作如下: 用相应的词交换单词中的所有元音: Vowel | With --------+-------- a | obo e | unu i | ini o | api u | iki 您也可以编写其他翻译器来翻译Alien-> English,但是这是可选的。 例子 Input: Shaun Output: Shoboikin Input: Java Output: Jobovobo Input: Hello, World! Output: Hunullapi, Wapirld! 如果元音大写,则第一个字母大写。 Input: Alan Output: Obolobon Input: Australia Output: Oboikistroboliniobo …
18 code-golf  string 

21
整数过多
对于具有素数分解的正整数n,n = p1^e1 * p2^e2 * ... pk^ek其中p1,...,pk素数和e1,...,ek正整数,我们可以定义两个函数: Ω(n) = e1+e2+...+ek主除数的数量(乘以倍数)(A001222) ω(n) = k不同的素数除数。(A001221) 通过这两个功能,我们定义了多余的部分 e(n) = Ω(n) - ω(n)(A046660)。可以认为这是一个数字与无平方的接近程度的度量。 挑战 对于给定的正整数,n返回e(n)。 例子 对于n = 12 = 2^2 * 3我们有Ω(12) = 2+1和ω(12) = 2,因此e(12) = Ω(12) - ω(12) = 1。对于任何无平方数,n我们都非常清楚e(n) = 0。前几个词是 1 0 2 0 3 0 4 1 …

10
RGB渐变生成
挑战 给定两个表示RGB值的大写十六进制字符串(长6个字符,XXXXXX和YYYYYY)(范围从000000到FFFFFF包括)和一个正非零整数N,显示从XXXXXX到YYYYYY生成的N + 2种颜色的线性过渡这会导致颜色渐变。 例 输入值 FF3762 F08800 9 输出量 请注意,在我们的示例中,我请求了两种颜色之间的9个过渡步骤,因此从初始颜色到最终颜色将显示11行 FF3762 FD3F58 FC474E FA4F44 F9573A F75F31 F66727 F46F1D F37713 F17F09 F08800 注意事项 虽然我已经进行了一个简单的线性过程,即在将中间颜色转换回十六进制之前导出中间值的整数值,但是您的方法可能会有所不同。请考虑可以采用多种方式对数字进行四舍五入的方法。 测试中 为了使这一点有趣,我提供了一个片段来测试您的代码,其中包括一个按钮,为您提供两种随机颜色来测试您的代码。显示结果是可选的,但鼓励您! c1=()=>('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6); $("#col").click(function(){ alert("Your two colors are: "+c1()+" and "+c1()+"."); }); $("#colors").blur(function(){ $("#test").empty(); var colArr = $("#colors").val().split("\n"); for(c in colArr){ $("#test").append('<div class="tester" style="background-color:#'+colArr[c]+';">'+colArr[c]+'</div>') } }); …
18 code-golf  color 

13
评估骰子10,000卷
介绍 骰子10,000是一个骰子游戏,可以玩6个骰子和一些东西来写。玩家每回合多次掷骰子,并在骰子结束时获得分数。首先达到10,000点的玩家将赢得比赛。计算这一卷的分数是您在这项挑战中的工作。 在这里查看完整规则。 请注意,规则(尤其是得分)因地区而异,因为该游戏广为人知。我们使用下面描述的规则。 挑战 给定从一个骰子到六个骰子的六个数字列表,输出它们的分数。分数的计算方法如下: 算100分 击掌得分50分 三元组将其数字乘以100分。例如,三分之二可得200分。有一个例外,那就是三个1000分。 如上所述,六个相同数目的数字像两个三胞胎一样计数。因此,六个三分球得出600分。带有1的边缘情况也是如此:六个为2,000点。 一个骰子不能使用超过一次。如果骰子是三元组的一部分,则不计入其他得分。在三重含五都不会,除了500分,他们给算50分。 为了使得分最大化,始终会首先计算三元组。因此,三分之五绝对不能算作150分。四五分之一被算作三胞胎,一普通五数被算作550分。 笔记 输入将始终包含从1到6的六个数字。您将不会收到无效的输入。 数字可以是任何顺序。您可能不承担任何特定的订购。 规则 输入格式取决于您,只要不进行预处理即可。 允许功能或完整程序。 输入/输出的默认规则。 有标准漏洞。 这是代码高尔夫球,因此最低字节数获胜。Tiebreaker是较早提交的内容。 测试用例 [1、2、3、4、5、6]-> 150 [1,1,1,2,3,5]-> 1050 [1,1,1,1,1,1]-> 2000 [2,2,2,2,2,2]-> 400 [6,6,1,5,5,6]-> 800 [2、3、4、6、2、4]-> 0 [1,5,1,5,1,5]-> 1500 [5、5、5、5、2、3]-> 550 [1,1,1,1,1,5]-> 1250 [3,3,4,4,4,3,4]-> 700
18 code-golf  game 

19
可变素数“双胞胎”
我和我的兄弟是2/3双胞胎,即在同一个月的同一天出生,但十二年后出生。我5岁时,他17岁,都是素数。我们可以合理地指望的最后一对年龄是[71,83],我们俩都还活着并且能够庆祝这个偶然的禧年。 任务 创建一个代码 接受两个整数作为输入:计数器和“ twin”之间的差为正整数k(是的,我是年轻的),上限为正整数u(运行时注意) 并给出了所有的阵列或列表输出我不是数字低于或等于ü对于其中两个我和I + K是素数。输出不需要排序。 测试用例 12, 1000 -> [5, 7, 11, 17, 19, 29, 31, 41, 47, 59, 61, 67, 71, 89, 97, 101, 127, 137, 139, 151, 167, 179, 181, 199, 211, 227, 229, 239, 251, 257, 269, 271, 281, 337, 347, 367, 389, 397, …
18 code-golf  primes 

14
排列异常数
给定一个整数N作为输入,输出Nth的排列变数。 排列错误的数字是严格的正整数,因此其数字至少有一个排列会导致回文(即,一个本身相反的数字)。 例如,117是一个排列错误的数字,因为它的数字可以排列成171回文,即回文。 我们认为10,即使01 = 1是回文,类似的数字也不是排列变态数字。我们强加回文排列必须不带前导零(因此,0它本身不是变排列林)。 已经排列为回文的数字也属于排列变幻无常,因为排列无意义。 输入和输出 N可以是0索引或1索引。请指出您的答案使用的是哪两个。 输入可以通过STDIN,作为函数参数或使用您选择的语言中的任何类似内容进行。可以将输出写入STDOUT函数,从函数返回或使用您选择的语言进行的任何类似操作。 输入和输出必须以十进制为基础。 测试用例 以下测试用例是1索引的。您的程序必须最多能够在1分钟内通过此处介绍的任何测试用例。 N Output 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 11 42 181 100 404 128 511 256 994 270 1166 计分 这是代码高尔夫球,因此最短的答案以字节为单位。

23
快速高尔夫:金牌领袖
挑战 使用此处来自API的数据,输出在2016年里约奥运会上获得奥运金牌最多的三个国家的名称(即返回列表的第一个元素)。 例如,在发布时(UTC + 1,18:23 UTC,8月15日,星期一),美国,英国和中国拥有最多的金牌,因此输出为: United States Great Britain China 国家名称必须用换行符分隔,并且您可能会有前导或尾随的换行符。 奥运会结束后,该程序不必按预期工作。 不允许使用URL缩短器,但可以使用JSON解析库。 这是代码高尔夫,因此以字节为单位的最短代码获胜。 我将继续努力在这里获得奥运主题的挑战 排行榜 显示代码段 var QUESTION_ID=89919,OVERRIDE_USER=30525;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i; body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> …

14
动作相当顺畅
在算术中,n光滑数(其中n是给定的质数)在数学上被定义为不具有大于n的素数的正整数。例如,42是7平滑的,因为它的所有素数都小于或等于7,但是44不是7平滑的,因为它也有11作为素数。 将一个非常平滑的数字定义为没有素数大于其平方根的数字。因此,相当平滑的数字列表可以表述为: (已编辑!) 1是一个非常平滑的数字,因为它完全没有任何主要因素。(请注意,在此问题的原始版本中,错误地从列表中排除了1,因此,如果从输出中排除它,则不会被标记为错误。) 在4(= 2 2)和8之间,相当平滑的数字是2平滑的,这意味着它们以2为唯一素数。 在9(= 3 2)和24之间,相当平滑的数字是3平滑的,并且在素数分解中可以有2s和3s。 在25(= 5 2)和48之间,相当平滑的数字是5平滑的,并且在素数分解中可以有2s,3s和5s。 依此类推,每次到达下一个质数的平方时就升级标准。 相当平滑的数字列表是固定的,并且从以下开始:1、4、8、9、12、16、18、24、25,... 您的挑战是编写代码,以输出所有非常平滑的数字,包括10,000(= 100 2)。列表中的每个数字与下一个数字之间至少必须有一个分隔符(无论哪种分隔符,空格,逗号,换行符等等),但是使用什么字符完全无关紧要。 像往常一样,最低字节数会获胜-显然,仅输出列表不会对您有太大帮助。祝好运!
18 code-golf  math  primes 

4
我已经有一段时间找字母了
您知道,最近我们遇到了很多“字母”挑战。(一个 2 3 4 5。)虽然我喜欢挑战,而这些挑战是很好玩的,我认为它的时间节奏的变化。我们将来需要排除这些挑战。现在是自动化的时候了! 您会为我找到一些字母,并为自动化(和荣耀!)找到一些字母。字母很棘手,喜欢伪装自己。[需要引用]您需要考虑以下因素: 字母可以是大写或小写(但不能两者都写)。因此,您需要查找ABCDEFGHIJKLMNOPQRSTUVWXYZ和abcdefghijklmnopqrstuvwxyz,但不需要AbCdeFGhIJkLmNOpQRsTuvwxyZ。即,仅查找完全由一种情况组成的字母。 字母可以四处移动。它们可能并非总是以开头A,而是以G或开头U。因此,您必须寻找类似的东西OPQRSTUVWXYZABCDEFGHIJKLMN。 字母可能并不总是向前读。他们还可以向后,向上和向下阅读。例如,ZYXWVUTSRQPONMLKJIHGFEDCBA也是有效的字母。 这是一个带有字母的字符串的示例: JIHGFEDCBAZYXWVUTSRQPONMLK 这是一个向后的移位字母: JIHGFEDCBAZYXWVUTSRQPONMLK <--------|<--------------- 这还包含一个字母: F G H I J K L M N O P Q R S T U V W X Y Z A B C D E 这是一个向下的字母: F | G | H | I | …
18 code-golf  string  grid 

6
识别折页
任务 根据形式f(x)= x%a 1 %a 2 %…%a k定义mod折叠,其中a i是正整数,且k≥0。(此处,%是左联想模运算符。) 给定n个整数y 0,…,y n-1的列表,确定是否存在模倍f,以便每个y i = f(i)。 您可以为功能/程序选择并固定任意两个输出 Y和N。如果存在这样的f,则必须始终完全返回/打印Y;如果没有,你必须总是返回/打印准确ñ。(这些可能是true/ false,或1/ 0或false/ true等)。在您的答案中提及这些。 以字节为单位的最短提交获胜。 例 定义f(x)= x%7%3。其值开始: | x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | f(x) …

9
生成Rummy序列
您的任务是获取Rummy序列的输入n和输出元素n,该序列是我制作的(在OEIS上查找不会帮助您)。 定义 Rummy序列的每个元素都是一组真或假值。例如:[true, false]。 生成Rummy序列的成员的步骤非常简单: 从第一个索引开始[](这是元素0)。 将最左边的falsey设置为true。如果没有要更改的错误,则将列表的长度增加1并将新列表的所有成员设置为错误。 重复步骤2直到到达element n。 例 让我们将函数定义为rummy(int n)({}插入是为得到答案所采取的步骤): >>> rummy(5) {[]} {[false]} {[true]} {[false, false]} {[true, false]} [true, true] 规则 有标准漏洞。 必须通过您的语言的数字上限来输入0。 您可以以您认为合适的任何方式输出,只要清楚地知道输出是一组true / falseys。 琐事 我将其称为“ Rummy序列”是因为从索引2开始,它定义了在每一轮Progressive Rummy中需要放置的集合,其中falsey是一本书,而Truth是运行。 测试用例 >>> rummy(0) [] >>> rummy(1) [false] >>> rummy(6) [false, false, false] >>> rummy(20) [true, true, true, …

11
合法化冲销日期
输入: 日期(含dd,MM和yyyy)。日期对象或三个独立的整数也可用作输入。 输出: 每个部分(dd,MM和yyyy)单独恢复,比四舍五入到最接近的有效日期。 例如(格式为dd-MM-yyyy): 21-10-2016变为12-01-6102 挑战规则: 只有dd,MM,yyyy是有效的,但为了和您使用独立的符号是你自己的选择。 因此,这些都是一些有效的格式例子:dd-MM-yyyy; MM/dd/yyyy; yyyy MM dd; ddMMyyyy等 是一些无效的格式示例:dd MMM yyyy; dd-MM-'yy; 等等 如果您的语言支持日期对象或三个单独的整数参数,也可以选择仅输入日期对象,而不是代表日期的字符串。 请说明您使用的日期格式!(并且输入和输出必须采用相同的格式。)还可以输出Date对象,只要它可以处理以下所有测试用例和质询规则即可。 从儒略历到公历的过渡对此挑战被忽略了。因此,1582对于只是一个有效的反向年份2851。 请参阅挑战信息/所有有效年,月和日的提示。 由于您无法将2月与其他任何月份相反,因此您不必担心worry年。 所有倒转的年,月和日: 年份可以任意倒转,范围从0001(倒数为1000)到9999(剩余数9999)。(因此0000这不是有效的输入,也没有测试用例。) 您将要撤消的唯一月份是:一月(从十月/撤消10);十月(与一月/相反01);11月(仍为11月/ 11);和月(从隔月扭转/ 02- ,)。0912 您将撤消的唯一日期是:01(从撤消10),02(从撤消20),03(从撤消30),10(从撤消01),11(剩余11),12(从撤消21),13(从撤消31) ,20(从反向02),21(从反向12),22(剩余22),30(03与11月的31反向或相同!),31(从04- 09/ 13- 反向19/ 23- 29)。 通用规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有适当参数的函数/方法以及return语句/输出,完整程序。你的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 另外,如有必要,请添加说明。 测试用例(dd-MM-yyyy格式): 21-07-2016 -> 12-12-6102 …
18 code-golf  date 

4
编写VIC密码编码器
该VIC密码是有史以来设计最为复杂的铅笔和纸密码之一。1950年代由苏联间谍ReinoHäyhänen使用,代号为“ VICTOR”,其主要原理是通过迷惑实现安全。一个很多混淆。 您的任务是编写将接收消息并使用VIC密码对其进行编码的程序或函数。我还在这里发布了VIC密码解码器挑战赛。如果以下任何说明不清楚,请随时在评论中询问。该说明改编自该站点。 编码VIC密码 制备 您将需要五个输入: 明文消息 包含您语言中最常见字母的简短关键字或短语 关键短语,例如报价单或歌曲中的一行(至少20个字符) 日期(或其他六位数或更多的数字) 个人代理号码 实际上,这最后四个应该由发送方和接收方事先商定,包括在编码中是否使用发送方或接收方的代理号码。 我的示例消息将是: We are discovered. Take what you can. Burn everything else. Move to Safehouse Foxtrot 3. 我们将使用英语编码(尽管您可以使用喜欢的任何语言和字母),而英语字母中最常见的字母是A, E, I, N, O, R, S, T。我将使用关键字SENATORI。 我的主要用语是理查德·费曼(Richard Feynman)的一句话:“第一个原则是,您切勿欺骗自己,而您是最容易欺骗的人。” 作为日期,我将使用2016年7月31日(格式为3172016),也就是我撰写此说明的日期。 我为自己选择的个人号码是9。 步骤摘要 派生用于以下步骤的中间键。 构造并应用跨界棋盘。 构造并应用第一个换位表。 构造并应用第二个(中断的)换位表。 通过插入消息指示符组来完成消息。 子机制 在深入探讨该问题之前,还有两件事需要解释:链添加和排序的过程。 链加法也称为滞后斐波那契生成器,其工作原理是采用起始数字序列,将前两位数字相加而不携带(然后将它们加在一起mod 10),然后将结果附加到末尾。例如: …

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.