Questions tagged «code-golf»

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

1
随机南瓜补丁
前几天,我正走过南瓜地参加生日聚会,注意到南瓜藤蔓上有一个漂亮的图案,有漩涡,毛圈和分支。我们将在这里使用一些ASCII艺术进行模拟。 (()) \ p--q p-----q / \ / \ (()) b--d (()) 葡萄藤构造规则 只有一个主蔓,仅由\ / - p q b d字符组成。 藤蔓仅从左到右穿过屏幕。换句话说,假设您是从最左边藤蔓字符开始的蚂蚁。在前进到主葡萄树上的下一个相邻角色时,必须向右移动一列-绝不能向左移动。 当藤蔓改变方向时,需要一个p q b d字符来模拟一个循环。在p加入藤蔓东北向东行驶,在q东向东南,在b从东南到东部,d从东部到东北。请注意,字母的“循环”连接到水平的藤蔓,字母的“茎”连接到对角线。 藤蔓的起点必须是p或b(您可以选择,不一定是随机的)之一,并且水平开始。藤蔓的末端必须是q或d(您可以选择,不一定是随机的)之一,并且必须水平末端。 请注意,可以将循环放置在与其他循环紧邻的位置(例如,pd是葡萄树的有效子串),但这可能会使以后放置南瓜更加困难。您可能希望总是- / \在循环后立即拥有其中之一(就像我在示例中所做的那样),但这不是必需的。 南瓜规则 南瓜仅由(())(确切的字符串)组成。 南瓜是从主葡萄藤上附着的。这些分支只能附加到p q b d环上,长度恰好一个\或/长度,并附加到南瓜上,因此分支的“末端”位于中间。 它们可以连接在主葡萄树的上方或下方。 分支可以连接到“左侧”。 每个分支只能附加一个南瓜,每个循环只能附加一个分支。 随机性 在水平行驶时,葡萄藤有50%的机会继续水平行驶,有25%的机会向东北转动,有25%的机会向东南转动。 当沿对角线行驶时,葡萄树有90%的机会水平转弯,而有10%的机会继续对角线行驶。 尽管允许更多匝数,但必须有足够的匝数来支持输入的南瓜数量。 藤蔓建成后,可以将南瓜随机放置在尚未被南瓜占据的任何角落。 南瓜不能与葡萄藤或其他南瓜重叠。 挑战 给定输入数字,请按照上述规则输出随机南瓜补丁。使用相同的输入多次执行代码应产生不同的结果。给定输入数字的所有可能的南瓜补丁应具有一定(不一定相等)的非零发生机会。 输入值 一个整数n,以任何方便的格式表示补丁中南瓜的数量。为了简化代码,您可以假设输入为0 < n …

4
优先权
您的任务是调节十字路口的交通。北,东,南和西有4条道路。 输入是一个字符串,代表每条道路上即将到来的交通。例如,NNNWS表示总共有5辆车:北三辆,西三辆,南三辆。字符的顺序在这里不重要,NNNWS等效于WNNSN。 您必须使用正确规则的优先级来输出小汽车行驶的顺序:从南方来的汽车必须先让从东方来的汽车先行,向东让北,向北让西,向西让路南。 例如,在输入的情况下NNNWS,应该先向南行驶,然后向西行驶,再向北行驶3辆。因此,输出应为SWNNN。 存在一些不确定的情况,例如:NS或NNWSE:然后应输出string stuck。 测试用例 N => N NW => WN NWS => SWN SNW => SWN SSSSS => SSSSS ENNNNES => NNNNEES NS => stuck NNWSE => stuck
12 code-golf 

12
生成单路径迷宫
给定一个奇数N(5 <= N <= 51),生成一个边长为N的迷宫,其遵循以下要求: 迷宫必须由字符 | -和组成+。它必须将|角色用作垂直墙,将-角色用作水平墙,并且如果该墙转弯,+则应使用角色。 路径的宽度必须是一个字符。 迷宫必须转动至少四次。 迷宫必须具有外壁,该壁在两个点处断裂:起点和终点。 从头到尾,迷宫必须包含一条不间断的路径。 例如,以下是有效的迷宫:(N = 5) +---+ | | | | | | --+-- 对于N = 7: --+---+ | | | | | | | | | | | | | | | | +---+-- 请记住,这是code-golf,所以字节数最少的代码将获胜。

6
哈克塞高尔夫技巧
您在Haxe打高尔夫球有哪些一般提示?我正在寻找可以应用于代码高尔夫球问题的想法,并且这些想法至少也特定于Haxe(例如,“删除评论”不是答案)。 请为每个答案发布一个提示。 Haxe可以在这里在线运行!
12 code-golf  tips 

3
音位错误
性格 我们将这些Unicode字符称为英语IPA辅音: bdfhjklmnprstvwzðŋɡʃʒθ 我们将这些Unicode字符称为 英语IPA元音: aeiouæɑɔəɛɜɪʊʌː (是的,ː这只是长元音标记,但出于此挑战的目的,请将其视为元音。) 最后,这些是主要和次要压力标记: ˈˌ 注意,ɡ(U + 0261)不是小写的g,主应力标记ˈ(U + 02C8)不是撇号,并且ː(U + 02D0)不是冒号。 你的任务 给出一个单词,将元音堆叠在跟随的辅音之上,并将重音标记放置在其跟随的辅音下方。(正如问题标题所暗示的,这样的书写系统将辅音元音序列作为一个单元打包在一起,称为abugida。)给定输入ˈbætəlʃɪp,产生输出: æə ɪ btlʃp ˈ 甲字被保证是声母,韵母和应力标记的字符串,如上面所定义。永远不会有连续的重音标记,它们将始终放置在单词的开头和/或辅音之前。 测试用例 可能有连续的元音。例如,kənˌɡrætjʊˈleɪʃən变为 ɪ ə æ ʊeə knɡrtjlʃn ˌ ˈ 如果一个词以元音开头,打印在“基线”与辅音:əˈpiːl变 ː i əpl ˈ 一个测试用例的初始,强调元音:ˈælbəˌtrɔs变 ə ɔ ælbtrs ˈ ˌ 一句话:ˌsuːpərˌkaləˌfrædʒəˌlɪstɪˌkɛkspiːæləˈdoʊʃəs变成 æ ː ː ʊ uə aə …

5
A047841:自传编号
定义 这是描述数字的过程: 对于数字中从0到的每个9数字: 写下该数字的频率,然后写下该数字。 例如,对于数字10213223: 有1发生0, 2出现了1, 3出现了2, 2发生3。 因此,描述的数字10213223是10213223(10从第一个属性,21从第二个属性,等等)。 注意,数字的出现次数可以大于9。 任务 您将打印/输出所有描述自己的数字。 眼镜 除了允许您对输出进行硬编码或将与输出有关的信息存储在程序中之外,存在标准漏洞。 输出中的数字可以任意顺序。 输出中的数字允许重复。 如果选择打印而不是输出,则可以使用任何分隔符。 你是允许的,如果你选择要打印的,而不是输出到前缀和/或后缀输出。 分隔符,前缀和后缀不得包含任何数字(U + 0030至U + 0039)。 解决方案必须在一天内计算。 全部列表(109个条目) 22 10213223 10311233 10313314 10313315 10313316 10313317 10313318 10313319 21322314 21322315 21322316 21322317 21322318 21322319 31123314 31123315 31123316 31123317 31123318 31123319 31331415 31331416 31331417 …

30
输出字符串的累积斜率
挑战 给定一个字符串,例如Hello World!,将其分解为字符值:72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33。 然后计算每对连续字符之间的差:29, 7, 0, 3, -79, 55, 24, 3, -6, -8, -67。 最后,对它们求和并打印最终结果:-39。 规则 适用标准漏洞 请勿使用执行此确切任务的预制函数 鼓励创意解决方案 玩得开心 这被标记为code-golf,以字节为单位的最短答案将获胜,但不会被选择。

2
解决纸牌象棋难题
最近,我被介绍给了一款名为Solitaire Chess的益智游戏。我将在此处总结规则: 该板是一个4x4的棋盘格。 所有作品都使用相同的颜色(没有团队),并且所有作品都可以捕获其他任何作品。 每一步都必须抓住。不得搬到空方格。 最后必须只剩下一件。 所有棋子的移动都与象棋中的动作完全相同,但有一个修改:棋子可以在任何对角线方向上捕捉(从技术上讲,它像是ferz)。为了使那些可能不知道的人受益,我提供了运动图。 国际象棋的其他规则(例如支票,cast等)均不适用于此。全部与捕获有关。 国王(K) K * . . | * K * . | * * * . * * . . | * * * . | * K * . . . . . | . . . . | * * * …
12 code-golf  chess 

18
所有二进制组合到十进制
免责声明 这个问题不是这个问题的重复。我没有在计算特定数字,因为我们已经在初始参数中设置了这些数字。这个问题集中在可以根据提供的数字从二进制字符串构造的十进制数。 挑战 给定两个整数X和Y,分别代表零(0)和一((1)的数量),计算所有可能的十进制等价物,这些等价物可以通过仅使用提供的零和一创建二进制字符串来确定,并将它们显示为输出。 范例1: 输入: 0 1 输出: 1 说明:1只占一种,只能以一种方式转换。 范例2: 输入: 1 1 输出: 1,2 说明:01转换为1,10转换为2。 范例3: 输入: 3 2 输出: 3,5,6,9,10,12,17,18,20,24 说明:三0和二1构成00011(3),00101(5),00110(6),01001(9),01010(10),01100(12),10001(17),10010(18),10100(20),11000(24) 限制和规则 我只希望您的代码能在0 < X + Y <= 16这样的地方工作,所以输出中的最大数量只能从16 1秒开始,即参数0和16。 由于上述限制,我们期望输出中的数字范围是0和65535。 我将接受功能或代码,所以只要提供所得到的输出,这是否是一个逗号分隔的列表,阵列,输出到STDOUT列表等的唯一标准,我必须强调关于输出的是,它必须进行排序。 这是代码高尔夫,最少的字节将获得最大的荣耀。 我们不会容忍愚蠢的漏洞
12 code-golf  binary 

3
验证选票三角形
甲签号码,我们将标签乙,是的布置从1号的方法,通过B(B + 1)2号/成三角形,使得每个行和列是任何递增的顺序。前四个投票号码是: a(0) = 1 a(1) = 1 a(2) = 1 a(3) = 2 a(3)是2,这意味着有2种方式将数字从1排列到3(3+1)/2 = 6这样的三角形: 1 1 2 3 or 2 4 4 5 6 3 5 6 有关更多详细信息,请参见OEIS序列条目。 给定选票三角形,您的挑战是验证其正确性。如果满足选票三角形的条件(行数和列数增加),则应该输出其他几种方法(输入中的方法除外)以正确地布置三角形。如果输入三角形的构造不正确,则不应输出任何内容。 尾随换行符是允许的。 输入值 数字三角形,可能是也可能不是有效的选票三角形。例如: 1 2 3 4 5 6 1 10 5 9 8 2 7 6 …

8
密数序列
OEIS:A167171 阿密号是一个数字,具有完全一样多素因子作为无素因数(包括1和本身作为除数)。等效地,它是素数或两个不同素数的乘积。前100个密集数字为: 2, 3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 19, 21, 22, 23, 26, 29, 31, 33, 34, 35, 37, 38, 39, 41, 43, 46, 47, 51, 53, 55, 57, 58, 59, 61, 62, 65, 67, 69, 71, 73, 74, 77, 79, 82, 83, 85, 86, …

6
切达打高尔夫球的秘诀
Cheddar是由我们的用户Downgoat创建的一种高级,功能性+面向对象的编程语言,旨在使编程更容易,更快和更直观。 您在切达(Cheddar)打高尔夫球有哪些一般提示?我正在寻找可以应用于代码高尔夫球问题并且至少在某种程度上特定于Cheddar的想法(例如,“删除不必要的空格。”不是答案)。
12 code-golf  tips 

2
解释基普尔!
介绍 Kipple是Rune Berg于2003年3月发明的基于堆栈的深奥编程语言。 Kipple有27个堆栈,4个运算符和一个控制结构。 堆栈 堆栈被命名为a- z并包含32位带符号整数。还有一个特殊的堆栈,@使输出数字更加方便。当将数字压入时@,实际上将压入该数字的ASCII值。(例如,如果您将12推到@,它将推49,然后推50。@) i在执行程序之前,将输入压入输入堆栈。解释器将i在执行之前要求存储值。执行完成后,输出堆栈上的所有内容o都会弹出以ASCII字符形式输出。由于这是Kipple唯一的IO机制,因此无法与Kipple程序进行交互。 经营者 操作数可以是堆栈标识符或带符号的32位整数。 推送:>或< 语法:Operand>StackIndentifier或StackIndentifier<Operand Push运算符将操作数向左移并将其推入指定的堆栈。例如,12>a将值12推入stack a。a>b将从堆栈中弹出最高值a并将其推入堆栈b。弹出空堆栈总是返回0 a<b相当于b>a。a<b>c从弹出最高值,b并同时推入c和a。 加: + 句法: StackIndentifier+Operand Add运算符将堆栈上最顶层项目和操作数之和压入堆栈。如果操作数是堆栈,则从中弹出值。例如,如果堆栈的最高值为a1,a+2则将3压入堆栈。如果a为空,a+2则将2推入。如果堆叠的最值a和b是1和2,然后a+b将从栈中弹出的值2 b和3推入堆栈a。 减去: - 句法: StackIndentifier-Operand 减法运算符的工作方式与加法运算符完全相同,只是它减去而不是加法。 明确: ? 句法: StackIndentifier? 如果最上面的项目为0,则Clear运算符将清空堆栈。 解释器将忽略操作符旁边不存在的所有内容,因此以下程序将起作用:a+2 this will be ignored c<i。但是,添加注释的正确方法是使用#字符。#执行前,a 和行尾字符之间的所有内容都将被删除。ASCII字符#10在Kipple中定义为行尾。 操作数可以由两个运算符共享,例如a>b c>b c?可以写为a>b<c?。 该程序1>a<2 a+a将导致a包含值[1 4](从下到上),而不是[1 3]。对于-操作员也是如此。 控制结构 Kipple中只有一种控制结构:循环。 句法: (StackIndentifier code …
12 code-golf  interpreter  code-golf  string  code-golf  math  string  code-golf  ascii-art  path-finding  code-golf  string  ascii-art  code-golf  interpreter  binary  logic-gates  logic  code-golf  ascii-art  code-golf  graph-theory  code-golf  string  code-golf  number  sorting  code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

8
自动数组
每个人都喜欢嵌套列表!但是,有时很难创建嵌套列表。您必须决定是否要将其嵌套得更深,或者是否需要将其嵌套得更浅。因此,对于您的挑战,您必须“自动”列表。要自动列出列表,请比较列表中的每对项目。 如果第二个元素较小,则通过在两个元素之间插入闭合和打开括号来分隔这两个元素,如下所示: } { {2 , 1} 例如,{2, 1}变为{2}, {1},并且{3, 2, 1}变为{3}, {2}, {1} 如果第二项相同,则保持不变。例如,{1, 1, 1}保持不变,{2, 1, 1, 1}将变为{2}, {1, 1, 1}。 如果第二个项目较大,则将每个后续项目嵌套更深一层。例如,{1, 2}将成为{1, {2}}并且{1, 2, 3}将成为{1, {2, {3}}} 挑战 您必须编写一个接受数字列表的程序或函数,并在自动嵌套后返回相同的列表。以您的语言本机列表格式(或最接近的替代格式)或字符串形式输入此输入。您不必像我在示例中那样使用花括号。您可以使用语言中最自然的括号类型,只要这是一致的即可。您可以放心地假设列表将仅包含整数。您也可以假设列表中至少包含2个数字。这是一些示例IO: {1, 3, 2} --> {1, {3}, {2}} {1, 2, 3, 4, 5, 6} --> {1, {2, {3, {4, …

3
广义生日问题
今晚,未婚夫带我出去吃饭庆祝我的生日。当我们外出时,我听说在一家50人的餐厅里,向5位不同的客人(包括我自己)唱着生日快乐。这让我感到奇怪-最初的生日问题(确定一个房间中2 N个人共享同一生日的概率)非常简单明了。但是,如何计算至少k有人中N有人共享同一生日的概率呢? 如果您想知道,那么在50个共有相同生日的人中,至少有5个人的概率约为1/10000。 挑战 给定两个整数N和k,其中N >= k > 0,输出k一组中至少N有人共享同一生日的概率。为简单起见,假设总是有365个可能的生日,并且所有日子都有相同的可能性。 对于k = 2,这归结为最初的生日问题,概率为1 - P(365, N)/(365)**N(其中P(n,k)是n个元素形成的k长度排列的数量)。对于的较大值k,Wolfram MathWorld的这篇文章可能会很有用。 规则 输出必须是确定性的,并且对于您选择的语言必须尽可能准确。这意味着没有蒙特卡洛估计或泊松近似。 N且k不得大于您选择的语言中可表示的最大整数。如果您选择的语言对整数没有硬性限制(除了内存限制),那么N它k可能会很大。 由浮点误差引起的精度误差可以忽略不计-您的解决方案应假定为完全精确,无限精度的浮点数。 测试用例 格式: k, N -> exact fraction (float approximation) 2, 4 -> 795341/48627125 (0.016355912466550306) 2, 10 -> 2689423743942044098153/22996713557917153515625 (0.11694817771107766) 2, 23 -> 38093904702297390785243708291056390518886454060947061/75091883268515350125426207425223147563269805908203125 (0.5072972343239854) 3, 3 -> 1/133225 (7.5060987051979735e-06) 3, …

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.