Questions tagged «code-golf»

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

5
巫师的法术书
编辑:我以前没有玩过D&D,所以当我最初提出这个问题时,我没有进行适当的研究。对此我深表歉意,我正在做一些修改,这些修改可能会使答案无效,以使它们尽可能完全符合dnd 5e规则。抱歉。 最近的热门网络问题中的D&D爱好者似乎在确定巫师选择的咒语是否与可能性相符时遇到了一些麻烦-我想我们应该提供帮助! 介绍 (所有这些已经在前面提到的问题中进行了描述) 巫师从开始就知道两个1级法术(1级): [1, 1] 每次巫师获得一个等级(除了等级12、14、16、18、19和20),他们都会学习一个新的法术(强制性)。 此外,升级时,可以选择(可选)将其中一个咒语替换为另一个。 学习和替换的法术必须是有效的法术槽位,是你巫师等级的一半。见下表: Sorcerer level Highest spell level possible 1 1 2 1 3 2 4 2 5 3 6 3 7 4 8 4 9 5 10 5 11 6 12 6 13 7 14 7 15 8 16 8 17 …

13
乘除法
给定值x,找到大于y的最小数值,该数值可以乘以x并除以x,同时保留所有原始数字。 新数字不会丢失数字。 新数字不获取数字。 例如: 输入:x = 2,y = 250000 原件:285714 师:142857 乘法:571428 这是正确的,因为285714大于y。然后,当被x除时,结果为142857;当与x相乘时,结果为571428。在这两个测试中,都存在285714的所有原始数字,并且没有添加任何额外的数字。 规则 X应该是2或3,因为更高的值需要太长时间才能计算。 Y必须是大于零的整数。 最短的代码获胜。 测试用例 这些是我最常用的测试用例,因为它们是测试最快的用例。 x = 2,y = 250000 = 285714 x = 2,y = 290000 = 2589714 x = 2,y = 3000000 = 20978514 x = 3,y = 31000000 = 31046895 x = 3,y …
10 code-golf  number 

6
旅行牙刷
介绍 今天的挑战完全是牙齿。具体来说,从一颗牙齿刷到另一颗牙齿需要多长时间。您面临的挑战是,鉴于两颗牙齿的位置,从第一根到第二根要刷牙的时间最短。 挑战 对于这一挑战,我们将使用成年人口的布局: 该图显示了广泛使用的ISO编号系统。系统将嘴巴分为四个部分,并分别为它们分配一个数字:右上(1),左上(2),左下(3)和右下(4)。然后,他们从嘴中开始从1-8编号每个部分的牙齿。因此,从右上角中央起第四个牙齿(第1部分)是牙齿编号14。 假设刷一颗牙齿花费1单位时间。从一颗牙齿向另一颗牙齿横向移动需要0个时间单位。您还可以从牙齿到牙齿正上方或下方的牙齿交叉,这也需要1单位时间。那么,您从牙齿14刷到牙齿31需要多长时间?通过查看上图,您将看到它花费了7个时间单位。计算方法如下: Action : Unit of time Brushing tooth 14 : 1 unit Brushing tooth 13 : 1 unit Brushing tooth 12 : 1 unit Brushing tooth 11 : 1 unit Brushing tooth 21 : 1 unit Cross to bottom of mouth : 1 unit Brushing …
10 code-golf 

7
谁的邻居是敌对的?
介绍 出于挑战的目的,我们将在正方形矩阵定义元素的邻居(使得)为 与对角线,水平或垂直相邻的所有项。(即,它们“环绕”而不环绕)。ËËE一个一个AË= A我,ĴË=一个一世,ĴE=A_{i,j}一个一个AEËËE ËËE 对于悬挂物,的邻居的正式定义用于 MATIX为(0索引): 中 一个我,Ĵ一个一世,ĴA_{i,\:j}n × nñ×ñn\times n一个一个Añ我,Ĵ= { A一,b| (一,b )∈ Ë我,Ĵ∩([ 0 ,n )∩Z )2}ñ一世,Ĵ={一个一个,b∣(一个,b)∈Ë一世,Ĵ∩([0,ñ)∩ž)2}N_{i,\:j}=\{A_{a,\:b}\mid(a,b)\in E_{i,\:j}\:\cap\:([0,\:n)\:\cap\:\Bbb{Z})^2\}Ë我,Ĵ= { i − 1 ,我,i + 1 } × { j − 1 ,Ĵ ,j + 1 } \ { i ,j }Ë一世,Ĵ={一世-1个,一世,一世+1个}×{Ĵ-1个,Ĵ,Ĵ+1个} \ {一世,Ĵ}E_{i,\:j}=\{i-1,\:i,\:i+1\}\times \{j-1,\:j,\:j+1\} \text{ \\ …

2
解决模块化SNISP的暂停问题
本着为Befinge解决停机问题的精神,让我们定义另一种称为Modilar SNISP的 2D语言。Modilar SNISP具有以下六个指令: \ 指令指令指针如下: 如果从顶部接近,请向右走; 如果从右边靠近,则往上走; 如果从底部接近,则向左走; 如果从左侧接近,则向下走。 / 指令指令指针如下: 如果从顶部接近,则向左走; 如果从左侧接近,则上升; 如果从底部接近,请向右走; 如果从右边靠近,则往下走。 ! 跳过下一条指令。 @ 将IP位置和方向推送到调用堆栈中。 #从调用堆栈中弹出IP位置和方向并进行恢复,然后跳过下一条指令。如果调用堆栈为空,则执行停止。 . 什么也没做。 指令指针从右上角的左上角开始。如果它离开了运动场,执行将停止。 模块化SNISP不能比PDA强大,因为它的唯一无限存储源是带有有限字母(所有IP(位置,方向)对的集合)的堆栈(调用堆栈)。暂停问题对于PDA来说是可以决定的,因此这一挑战应该总是可能的。 挑战 您的目标是编写一个程序,该程序使用代表Modilar SNISP程序的字符矩阵,并根据是否停止而返回两个不同的输出之一。 这是代码高尔夫球,因此最短的有效程序(以字节为单位)获胜。 技术指标 字符矩阵的处理方式很灵活:可以使用换行符分隔的字符串,字符串数组,字符数组,二维字符数组,带整数表示宽度的扁平字符数组等。测试用例选择其中的第一个。 您可以假设输入矩阵将是矩形的(因此您不必填充短行)并且长度和宽度将为非零。 您可以选择任意两个不同的输出,而不仅仅是真/假。 你可以假设输入矩阵将只包含有效的命令(\,/,!,@,#,和.)。 当说一条命令“跳过下一条指令”时,您可以假定将要跳过下一条指令。特别是,在以下情况下将永远不会遇到它:(1)它位于运动场的边缘,并且(2)IP垂直于该边缘移动,以使IP之后的“下一条指令”位于运动场之外。 测试用例 以下代码段可用于测试使用该语言的程序。请注意,它比此处给出的实际规范稍微宽松一些(例如,它允许使用.非禁忌字符)。 function htmlEscape(t){let i=document.createElement("span");return i.innerText=t,i.innerHTML}function tick(){snisp.tick(),snisp.update()}function run(){runButton.style.display="none",stopButton.style.display="",code.style.display="none",executionArea.style.display="",snisp.initialize(),intervalId=setInterval(tick,INTERVAL_MS)}function stop(){runButton.style.display="",stopButton.style.display="none",code.style.display="",executionArea.style.display="none",clearInterval(intervalId)}let TICKS_PER_SECOND=5,INTERVAL_MS=1e3/TICKS_PER_SECOND,runButton=document.getElementById("run-button"),stopButton=document.getElementById("stop-button"),code=document.getElementById("code"),executionArea=document.getElementById("execution-display"),intervalId,snisp={x:null,y:null,direction:null,callStack:null,stopped:null,playfield:null,padRows:function(){let t=Math.max(...this.playfield.map(t=>t.length));for(let i=0;i<this.playfield.length;i++)this.playfield[i]=this.playfield[i].padEnd(t,".")},initialize:function(){this.x=0,this.y=0,this.direction="right",this.callStack=[],this.stopped=!1,this.playfield=code.value.split("\n"),this.padRows(),this.update()},getCurrentChar:function(){let t=this.playfield[this.y];if(void 0!=t)return t[this.x]},backslashMirror:function(){let …

5
告诉我月相!
挑战 给定月球图像作为输入,输出月球的相位。 月相 您的程序将以png格式提供这些图像之一,并且您必须完全按照给定的相位输出相位: new moon 十六进制转储 waxing crescent 十六进制转储 first quarter 十六进制转储 waxing gibbous 十六进制转储 full moon 十六进制转储 waning gibbous 十六进制转储 third quarter 十六进制转储 waning crescent 十六进制转储 输入值 输入将是240 px x 240 px png文件的路径,并且将是上面的图像之一。 图像字节保证是相同的。 获奖 最短代码胜出

3
输出ASCII“ splat”
如果朝给定方向扔ASCII鸡蛋,最终将得到大小为n的ASCII代码。它以一个o(蛋黄)“开始” ,并以给定的方向(由2到n个 组成的“线”)继续*。的*s被一个“空格”分隔,而的s o和所有“线” 被“ space” 的“线” *分隔。 splat的方向可以是的八个方向之一o,例如: 1 2 3 4 o 5 6 7 8 下面是在方向大小为4的ASCII层片的实施例5,2和3分别。左边是实际的ASCII图示,而右边是一样的图示,但与“空间”“行”与实际的“线”替换(即-或\或|取决于方向)只是为了澄清什么是一个意思空间的“线”。 Size 4, direction 5 * | | |* * | |*| * * |*| |* o * o| |*| * * |*| |* * | |*| * | | |* Size …

6
查找最近距离的总和
对于此任务,您的代码应采用整数X和Y的两个排序数组作为输入。它应该计算X中每个整数与其Y中最接近的数字之间的绝对距离之和。 例子: X = (1 5,9) Y = (3,4,7) 距离是2 +1 + 2。 X = (1,2,3) Y = (0,8) 距离是1 + 2 + 3。 您的代码可以采用任何方便的方式进行输入。 主要限制是您的代码必须在两个数组的总和中以线性时间运行。。(您可以假设将两个整数相加需要固定的时间。)

3
将文本转换为按键
我是机器人。我购买此键盘的原因是其矩形布局简单: ~` !1 @2 #3 $4 %5 ^6 &7 *8 (9 )0 _- += tab Qq Ww Ee Rr Tt Yy Uu Ii Oo Pp {[ }] \| Aa Ss Dd Ff Gg Hh Jj Kk Ll :; "' [-enter-] Zz Xx Cc Vv Bb Nn Mm <, >. ?/ …

5
通函有限公司
挑战 让我们想象一个N介于0到0之间的整数元组M,并将其称为F。 总共(M + 1) ** N可能有F。 有多少个这样的Fs满足以下所有不等式(索引基于一)? F[n] + F[n+1] <= M 对于 1 <= n < N F[N] + F[1] <= M 编写一个使用两个正整数 N并M以任何方便的形式输出答案的程序或函数。 测试用例 (N,M) => Answer (1,1) => 1 (2,1) => 3 (3,1) => 4 (4,1) => 7 (1,2) => 2 (2,2) => 6 (3,2) => …

1
跳棋跳棋
这项挑战的目标是确定此举是否是合法的英国跳棋棋子。 这项挑战将使用8x8电路板。移动的棋子应被视为只能对角移动的人(不是国王)。板上将有0个或更多的黑色块和1个或更多的白色块。一块白色的东西目前正在移动。如果直接在其后面的正方形为空,则白色块可以“跳跃”到其前面的一个黑色块上。如果在它的对角线前面的任何一个方向都有另一个黑色块,则可能会从该位置再跳一次。捕获是强制性的,因此不进行可用的跳转是非法的。但是,并不一定要采用最大化跳跃次数的路径。基本上,这意味着,如果您进行了跳跃,并且从终点位置跳出了另一个可能的跳跃,则该移动是非法的。件位使用以下编号方案: 规则 输入: 代表黑块的数字列表。 代表白色的数字列表。 白棋的起始位置 白片的结束位置 输出: 如果移动有效,则为真实值,否则为假值 您可以假设一块白色将始终占据起始位置。 如果方便,您可以假定白名单中的第一个白名单将包含起始位置,而不是接受输入3。 标准代码高尔夫规则。最少的字节数获胜。 测试用例 例如,O是开始位置,X是结束位置,B是黑色块,W是白色块 Black pieces: [] White pieces: [5] Move: (5, 1) Output: True Single move no jump X _ _ _ O _ _ _ B: [6] W: [9] M: (9, 2) O: True Single jump _ …

26
接受三个整数并返回整数和字母列表的函数
挑战 我们需要三个正整数a,b以及c作为输入。使用这些整数,首先[0, c]以的步长在范围内(包括两端)创建一个序列b。例如,对于a=4, b=2, c=100,序列将为[0,2,4,...,96,98,100]。 对于此序列中可被整除的每个数字a,将其替换为小写字母中的下一个字母,从字母“ a”开始,到“ z”后回绕到“ a”。 例: 输入:a=4, b=2, c=100 输出:a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z 挑战规则: 你可以假设a,b以及c只为正整数,其中b ≤ a ≤ c。 您可以假设a是的倍数b。 您可以假定c被整除b。 首选输出是如上所述的单个串联字符串,但是列表/数组也是可以接受的。 测试用例: Input: a=4, b=2, c=100 Output: a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z Input: a=9, b=3, c=174 Output: a36b1215c2124d3033e3942f4851g5760h6669i7578j8487k9396l102105m111114n120123o129132p138141q147150r156159s165168t174 Input: a=10, b=2, c=50 Output: a2468b12141618c22242628d32343638e42444648f Input: a=25, b=1, c=25 Output: a123456789101112131415161718192021222324b Input: a=6, …

5
撰写两个Brainfuck程序
给定2个Brainfuck代码片段A和B,输出一些与输入s结果时C运行行为相同的Brainfuck代码。请注意,它必须适用于与以下假设相匹配的任何输入,就像给定了一样。BACA 您可以假设: 有限的输入。 A和B都停止了。 EOF始终为0或始终为-1。 始终允许或不允许细胞离开 磁带无界(否则可能无法达到要求) 始终为8位换行或无界整数 没有流(A或B的输入或输出)包含表示EOF的字节 代码A和B可以包含可能出现在C中的字符,并且 +-[]<>,. 例如(EOF = 0) A = ,[..,] B = ,[...,] C = ,[......,] A = >,[>,]<[.<] B = ,[...,] C = >>>>,[[-<+<+<+>>>]>>>,]<<<<[.<] A = >,[>,]<[.<] B = ,[...,] C = >,[>,]<[...<] A = ,. B = ,. C = ,>,[,]<. …

4
您不会相信的十大要素
又名:从阵列生成Clickbait。 给定一个整数数组,请根据其排列和长度生成一些值得赞扬的clickbait: 如果不超过20个元素,则可以列出“ Top X列表”。参数:数组的长度。 素数是名人,因此每当两个人相邻时,它就会成为八卦。参数:两个相邻素数在数组中出现的顺序。 如果任何数字在数组中出现两次或多次,那么这令人震惊且令人难以置信,每个人都需要听听它。如果多个数字出现两次,则为每个数字制作一个新闻故事。每个唯一编号仅打印一次。参数:出现次数以外观总数表示。 如果你看到3+元素排序 单调递增的顺序,然后突然下降,然后告诉他们如何排序,并了解后续挑逗。每直只做一次。参数:直线的长度。 这些是您应使用的各个Clickbaits: The Top {{N}} Array Elements {{N1}} And {{N2}} Were Spotted Together, You Won't Believe What They Did These {{N}} Elements Will Blow Your Mind {{N}} Elements Sort Themselves, Find Out What Comes Next 请记住,您代表一家廉价媒体公司,因此您需要挤奶并打印所有可能的标题。如果有两个相同的标题,请同时打印两个标题。 例如,如果您得到此数组… 1,2,3,4,2,1,1,5,6 您应该以任意顺序输出所有这些: The Top 9 …

2
孤岛
输入: 包含两个不同(可选)值的2D数组。在解释规则时,我将使用0和1。输入格式当然是灵活的。 挑战: 零是水,一个是小岛。为了确保孤独,您的任务是通过插入零行和零列将所有岛屿用水包围。您不想浪费水,因此您必须减少添加的水量。如果有不止一种溶液需要添加相同量的水,则应添加水栏,而不是行。我将在测试案例中展示这一点。 输出: 新的修改后的2D数组。输出格式当然是灵活的。 测试用例: 输入和输出以短划线分隔。添加的零以粗体显示。如果要将测试用例转换为更方便的格式,请在此处使用答案之一。 1 --- 1 1 1 --- 1 0 1 1 1 1 1 --- 1 0 1 0 0 0 1 0 1 1 0 0 1 --- 1 0 0 0 0 1 请注意,我们添加了一列零,而不是一列零。这是因为必要的零的数目相等,因此应首选列。 1 0 0 0 1 0 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.