Questions tagged «code-golf»

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

8
彭罗斯三角Codegolf
的彭罗斯三角形,也被称为彭罗斯tribar或不可能tribar,是不可能的对象。 此挑战的目标是以尽可能少的字节显示Penrose三角形。 资料来源:维基百科 规则: 生成彭罗斯三角后,必须以数字方式显示它。 它们的外观必须与Wiki页面的上述图像相同(上述资源),而无需直接显示该图像。 具有相同配色方案的同一图像必须以至少400x400的尺寸显示。 应该尽可能准确。 祝好运并玩得开心点!

16
增量密码
此任务非常简单,并使用了三个不同的“操作员”字符。你的任务是,给定的字母简单的顺序,请执行以下任务使用对它进行编码<,>,*。您可以选择使用大写或小写字母,而不必同时使用两者。 密码说明 密码很简单,您使用递增和递减运算从字母1到结尾字母移动, *具有“提交”功能。“增加”的运算符为>,“减少” 的运算符为<。 一个使用单词的例子adbc: 从单词的第一个字母开始,输出该字母。 a 接下来,使用>和<(例如Brainfuck)将当前字母“导航”到下一个字母。a>将导致a该字母“ 加1” b。a<会z因为您降低字母(它会自动换行,所以您必须始终选择导致最少操作数的方向)而导致。 输出和的正确最小化组合后<,>输出a *表示我们已经到达下一个字母。 编码步骤adbc如下: a # a a>>>* # ad a>>>*<<* # adb a>>>*<<*>* # adbc 例子 编码步骤aza如下: a # a a<* # az a<*>* # aza 更多示例: "abcdef" = "a>*>*>*>*>*" "zyaf" = "z<*>>*>>>>>*" "zzzzzz" = "z*****" "z" = "z" …
19 code-golf  cipher 

8
反向插入排序
目的 根据“ 插入排序”对列表进行排序的动作,生成原始的加扰列表。原始列表将包含从0到N-1(包括)的所有数字,其中N输入的大小。 输入项 一个包含对列表进行排序的必要动作的列表。每个值代表由原始数字(加扰的数字)移位到其右位置的插槽数量,请记住,此过程是从左到右。输入列表 中(0索引)位置的值i将介于0和之间i。 您不需要处理无效的输入,在这种情况下,任何行为都是可以接受的(崩溃,无限循环等)。 输出量 混乱的名单 逐步生成动作 Scrambled List | Moves to sort [4,0,2,1,3,5] | [0, , , , , ] #4 stay in place [4,0,2,1,3,5] | [0,1, , , , ] #0 is moved 1 slot to the left [0,4,2,1,3,5] | [0,1,1, , , ] #2 …
19 code-golf  array-manipulation  code-golf  code-golf  animation  code-golf  restricted-source  code-golf  java  code-golf  decision-problem  graph-theory  code-golf  conversion  electrical-engineering  code-golf  ascii-art  code-golf  string  substitution  code-golf  math  code-golf  string  set-theory  code-golf  code-golf  compile-time  code-golf  kolmogorov-complexity  binary  code-golf  sequence  cops-and-robbers  code-golf  subsequence  card-games  code-golf  sequence  primes  code-golf  code-golf  number  graphical-output  music  code-golf  ascii-art  code-golf  string  lambda-calculus  code-golf  string  code-generation  code-golf  unicode  code-golf  math  combinatorics  code-golf  balanced-string  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-challenge  fastest-code  chess  code-golf  math  graphical-output  code-golf  string  hello-world  animation  code-golf  number  arithmetic  code-golf  integer  code-golf  code-golf  combinatorics  code-golf  kolmogorov-complexity  graphical-output  code-golf  string  code-golf  code-golf  game  code-golf  math  combinatorics  code-golf  ascii-art  popularity-contest  random  code-golf  arithmetic  number-theory  integer  code-golf  tips  underload  code-golf  math  sequence  primes  code-golf  math  path-finding  code-golf  ascii-art  primes  code-golf  kolmogorov-complexity  alphabet 

16
修改浮标!
3D建模软件主要使用UV贴图将纹理映射到3D对象上。U和V的有效值通常位于一个包含[0..1]范围内。 挑战 您购买了一个超级易于使用的新3D建模软件。但是,它有一个问题:它会从UV值中添加或减去一个随机整数。您的任务是创建一个程序或函数,以修改输入值以获取包含[0..1]范围内的浮点值。 生成的浮点数应与原始浮点数相同,并尽可能接近原始浮点。因为0和1都在输出范围内,所以0或更小的整数应更改为0,1或更大的整数应更改为1。 JavaScript中的示例算法: function modFloat(input) { while (input < 0 || input > 1) { if (input < 0) input += 1; if (input > 1) input -= 1; } return input; } 规则 输入是单个整数或浮点值。只要您的答案中指定了任何合理的格式。 输出应为浮点值的十进制表示。 输出精度应至少等于输入的小数位。 允许尾随零。 确保您的代码正确选择要为整数输入输出的0或1。 测试用例 Input | Output ------------+--------- -4 | 0 -1 …
19 code-golf 

8
给我你的疲倦,贫穷,拥挤的群众向往自由呼吸
自由女神像基座上的一块青铜牌上陈列着艾玛·拉扎鲁斯(Emma Lazarus)的诗“ 新巨像 ”,其中一部分写着: 给我你的疲倦,你的贫穷, 你拥挤的群众,向往自由的呼吸, 你茂密的岸边那可怜的垃圾。 把这些无家可归的暴风雨寄给我, 我把灯抬到金门旁边! 为了简化针对这一挑战的诗的这一部分,我们将其全部大写,并用斜杠(/)替换换行符,并保持逗号和其他标点符号不变: GIVE ME YOUR TIRED, YOUR POOR,/YOUR HUDDLED MASSES YEARNING TO BREATHE FREE,/THE WRETCHED REFUSE OF YOUR TEEMING SHORE./SEND THESE, THE HOMELESS, TEMPEST-TOST TO ME,/I LIFT MY LAMP BESIDE THE GOLDEN DOOR! 我们将此字符串称为S。它具有md5 hash 8c66bbb9684f591c34751661ce9b5cea。您可以选择假定它具有尾随换行符,在这种情况下,md5哈希为0928ff6581bc207d0938b193321f16e6。 编写一个包含单个字符串的程序或函数。当字符串为S时,按顺序输出,每行一个,描述这首诗所描绘的人的类型的六个短语描述了Lady Liberty要求: TIRED POOR HUDDLED MASSES …

5
项链劈开问题
背景 我受到3Blue1Brown最近关于项链劈裂问题(或他所说的是被盗的项链问题)及其与Borsuk-Ulam定理的关系的视频的启发。 在这个问题上,两个小偷偷走了一条有价值的项链,该项链由几种不同类型的珠宝组成。每种珠宝的数量都是偶数,盗贼希望在两种珠宝中平均分配每种珠宝。要注意的是,他们必须这样做,方法是将项链分成若干个连续的片段,并将片段分配在两个片段之间。 这里是表示4种宝石类型的示例S,E,D,和R(对于蓝宝石,祖母绿,金刚石和红宝石,分别地)。假设项链如下: [S,S,S,E,S,D,E,R,S,R,E,S,S,S,D,R,E,E,R,E,D,E,R,R,D,E,E,E] 有8蓝宝石,10祖母绿,4钻石和6红宝石。我们可以如下分割项链: [[S],[S],[S,E,S,D,E,R,S],[R,E,S,S,S,D,R,E,E,R,E,D,E],[R,R,D,E,E,E]] 然后,如果我们将第一,第三和第五部分分配给一个小偷,而将第二和第四部分分配给另一个小偷,则每一个都会以4蓝宝石,5祖母绿,2钻石和3红宝石: [S], [S,E,S,D,E,R,S], [R,R,D,E,E,E] [S], [R,E,S,S,S,D,R,E,E,R,E,D,E], 使用 0 -indexing,这些削减发生在index处[1,2,9,22]。 目标 事实证明,这样的公平划分总是可以使用最多 n切割,这n是珠宝类型的数量。您的任务是编写一个完整的程序或函数,该程序或函数将一条项链作为输入,并输出最小的此类分割(最少的切割次数)。 输入项 输入可以采用任何方便的格式。项链应该是一系列珠宝,仅此而已;例如整数列表,字典,字典中的键代表珠宝类型,而值代表索引列表。您可以选择包括项链的长度或不同珠宝类型的数量,但您不应输入任何其他信息。 您可以假设输入的项链有效。您无需处理给定类型的珠宝数量奇数或项链为空的情况。 输出量 同样,输出可以采用任何方便的格式。例如,片段列表,切割位置列表,带有表示两个小偷的键的字典以及片段列表的值等。片段可以通过其起始索引,结束索引,连续索引列表,珠宝列表,它们的长度等。您可以使用0-或1-索引。如果顺序对您的格式不重要,则您的输出可以按任何顺序排列。以下是上述输出的几种不同格式: list of segments: [[S],[S],[S,E,S,D,E,R,S],[R,E,S,S,S,D,R,E,E,R,E,D,E],[R,R,D,E,E,E]] list of cuts: [1,2,9,22] list of lengths: [1,1,7,13,6] dictionary: {'thief1' : [(R,R,D,E,E,E),(S),(S,E,S,D,E,R,S)], 'thief2' : [(S),(R,E,S,S,S,D,R,E,E,R,E,D,E)]} 请注意,顺序在片段列表(小偷之间的片段交替)和长度列表(以识别片段)中很重要,但在剪切片段或字典中则不重要。 编辑:格雷格·马丁(Greg Martin)指出,这些将不是有效的输出,因为可以通过两次削减获得公平的划分 测试用例 [1,2,1,2,1,3,1,3,3,2,2,3] -> [[1,2,1],[2,1,3,1],[3,3,2],[2,3]] …

4
Brachylog打高尔夫的秘诀
Brachylog是一种最近开始在代码高尔夫中崭露头角的语言(并且刚刚获得了Terser语法的重大更新)。像Prolog一样,它的优点是通常仅通过对问题的外观进行足够准确的描述即可解决问题(通常通过蛮力),该功能意味着在正确的挑战下,它通常可与挑战相提并论。顶级高尔夫语言(众所周知,它有时会打败Jelly)。 您对Brachylog打高尔夫球有什么秘诀(即编写最短的程序)?这主要是在寻找特定于Brachylog的建议,而不是适用于多种语言的建议。(有关声明性语言打高尔夫球的小技巧,在这里可能更合适,这取决于他们对Brachylog以外的其他语言有多少应用程序,尽管另请参阅Prolog中的打高尔夫球技巧。)
19 code-golf  tips 

23
帮助经销商重建甲板
发牌人已经草率,不知道他/她的卡座中包含哪些卡以及缺少哪些卡,您能帮助他/她吗? 一个完整的牌组由52张扑克牌组成,即: 牌组中的每种颜色(心形,钻石,黑桃,球棒)都包含: 数字[2-10] 杰克 女王 国王 王牌 任务 您的程序将从STDIN读取卡座的内容,直到读取换行符为止。您可以假定输入将采用“ nX nX nX nX”等形式,其中: n-在[2-10]之间或 “ J”,“ Q”,“ K”或“ A” 之间的任何数字。(您只能假设大写字母适用于非数字字符) X-以下任意一项:“ H”,“ D”,“ S”,“ C”(您只能使用大写字母) 哪里: 'J'=千斤顶 'Q'=女王 'K'=国王 'A'=王牌 和 'H'=心 'D'=钻石 'S'=黑桃 'C'=俱乐部 您可以假设输入中没有重复项。 然后,您的程序必须以与输入(“ nX nX nX”)相同的方式将卡座中丢失的卡片打印到STDOUT上,或者如果提供了全部52张卡片,则打印“无丢失的卡片”。卡输出的顺序没有限制。 输入示例: 9H AH 7C 3S 10S KD JS 9C …
19 code-golf 

30
让我更多!
让我更多!我告诉你宽度,全麦饼干的数量,巧克力的数量和棉花糖的数量。一个例子: 输入: 宽度:10 格雷厄姆:3 巧克力:2 棉花糖:1。 输出: GGGGGGGGGG GGGGGGGGGG GGGGGGGGGG CCCCCCCCCC CCCCCCCCCC MMMMMMMMMM GGGGGGGGGG GGGGGGGGGG GGGGGGGGGG 它是那么容易?嗯...是的 请注意,输入应该是函数或程序的参数列表,而不是字符串。您可以选择第一个是Width,然后选择Graham,但是任何顺序都可以。 完整的测试用例,如果您有兴趣。 堆栈代码段(用于测试等) 这是为了测试输出。 var smore = function(width, graham, chocolate, marshmallow){ return ("G".repeat(width) + "\n").repeat(graham) + ("C".repeat(width) + "\n").repeat(chocolate) + ("M".repeat(width) + "\n").repeat(marshmallow) + ("G".repeat(width) + "\n").repeat(graham); }; Snippetify(smore); <script src="https://programmer5000.com/snippetify.min.js"></script> Width: <input …

12
字谜因素
在最近发生的QI中,将142857的前5个倍数描述为原始数字的字谜。当然,只要对数字有足够的了解,任何人都将知道这些数字实际上是循环的,而不仅仅是字谜。但这让我思考。 请编写一个程序或函数,以输出所有六位数或更少的数字,这些数字或数字具有其自身的字谜。该列表应以以下数字开头: 3105 (divisible by 1035) 7128 (divisible by 1782) 7425 (divisible by 2475) 8316 (divisible by 1386) 8712 (divisible by 2178) 9513 (divisible by 1359) 9801 (divisible by 1089) 如果愿意,您可以找到带有字谜的数字,该字谜是该数字的适当因数,但请注意从字谜中排除前导零。 这是代码高尔夫,因此以字节为单位的最短代码不会破坏任何标准漏洞。

9
不见不散!
每个人都听说过“存在或存在”一词。因此,我认为现在是应对这一挑战的时候了。 输入项 您将使用完整的绝对目录地址作为文本,通过STDIN或等效输入。 输出量 如果目录地址存在且有效,则程序将自身移动到计算机上的该文件夹。如果不是,它将通过STDOUT或等效的以下平方输出: +-+ | | +-+ 要求 不允许出现标准漏洞。 如果不可避免,您可以输出一个尾随换行符。 如果程序被移动,则它不会产生任何输出。 您的程序无论移到何处都必须能够再次运行。 假设条件 您可以假定输入永远不会为空。 您可能会假设该目录永远不会在文件末尾附加文件名。 您可以假设输入目录永远不是当前目录。 您可能会假设您有权在任何地方编写和执行。 这是代码高尔夫球,因此最短答案以字节为单位。

1
打印对不起板
我只是在玩棋盘游戏,对不起!与一些人一起,我意识到我可以从中解决一些有趣的挑战。这很简单。 您的任务仅仅是输出对不起的电路板的ascii艺术版本,将片段放置在我告诉您的位置。 眼镜 首先,这是实际抱歉的图片!董事会参考: 空板看起来像: # > - - o # # # # > - - - o # # # # S v o # H # # # # # | | # | | # S o | # # ^ H # # # # …

2
解决冰迷宫
冰迷宫一直是我最喜欢的主食之一的神奇宝贝,因为他们的神奇宝贝黄金和白银登场比赛。您的任务是编写一个解决这些类型问题的程序。 顾名思义,冰迷宫主要由冰组成。一旦玩家在冰上向某个方向移动,他们将继续向该方向移动,直到与某个障碍物碰撞为止。还有可以自由移动的土壤,将阻止任何玩家在其上移动。最后的障碍是石头。石头不能与玩家占据相同的空间,如果玩家尝试进入其中,他们将停止移动,然后才能移动。 您将收到一个二维的值容器,例如列表列表或用换行符分隔的字符串,其中包含3种地板类型(冰,土壤和石头)中的每种的3个不同值。您还将收到两对(或其他等效的两个值容器),它们指示迷宫中的起点和终点坐标。这些可以是零或一个索引。 您必须输出一个动作列表(在N,E,S,W上有两个双射的4个不同值),这将导致玩家在执行时到达终点。 输入始终在迷宫周围有一个封闭的石头周界,因此您不必担心玩家退出迷宫 这是代码高尔夫球,因此最少的字节获胜 测试用例 这里.代表冰,~代表土壤,O代表石头。坐标为1索引。解决方案中的每个字母代表以该字母开头的方向(例如N=北) 输入项 OOOOO OO.OO O...O OOOOO Start : 3,3 End : 3,2 输出量 N 输入项 OOOOOOOOOOOOOOOOO O........O.....OO O...O..........OO O.........O....OO O.O............OO OO.......O.....OO O.............OOO O......O.......~O O..O...........~O O.............OOO O.......O......OO O.....O...O....OO O..............OO OOOOOOOOOOOOOO~~O OOOOOOOOOOOOOOOOO Start : 15,12 End : 16,8 输出量 N,W,N,E,N,E,S,W,N,W,S,E,S,E,N,E,N 输入项 OOOOOOOOOOOOOOOO O~~~~~OOOOO~~~~O O~~O~OOOOOOO~~OO O...O..........O …

6
数字符-点点滴滴!
简单的部分:给定仅包含可打印ASCII字符(空格-波浪号)的输入字符串,计算每个字符的出现次数并以任何方便的格式返回结果。字符串的结果a%hda7a应类似于:a:3, %:1, h:1, 7:1, d:1。排序是不必要的,定界符和格式是可选的,但必须易于理解哪个数字对应哪个字符。输入的字符串中不得包含字符(a:3, b:0, c:0, d:1, ...不正确)。 真正的挑战: 将代码中的每个字符转换为8位二进制数(如果使用的是UTF-16或类似格式,则转换为16位),并枚举每个字符0。 对于每个字符(i是枚举数),- i%7bit 1 必须为1。这些位从右开始编号。其他所有位都可以是您想要的。 让我们以以下代码为例: [f]-xif)#f 将其转换为二进制,我们得到下面的数组。第一个数字(表示[有1在第0位置,这样一方面是OK。第二个数字(表示f有1在第1'位置,所以,一个是OK了。继续这样下去,你会看到上面的代码是有效的。 C 76543210位号 --------- ---------- [0101101 1 0-确定 f 011001 1 0 1-确定 ] 01011 1 01 2-确定 -0010 1 101 3-好 x 011 1 1000 4-好 i 01 1 01001 5-好 f …

14
您的基数为1-2-3-Tribonacci的二进制数为基数的基数
背景 1-2-3-Tribonacci序列 想象一下,您可以通过将标准迭代公式替换为以下内容来制作斐波那契数列: 基本上,不是将最后两个求和以获得下一个,而是将最后三个求和。这是1-2-3-Tribonacci序列的基础。 布朗的准则 布朗的准则状态,您可以将任何整数值表示为序列成员的总和,条件是: 对于所有n大于1, 这对挑战意味着什么 您可以将任何正整数描述为由以下初始条件形成的1-2-3-Tribonacci序列的成员之和: 对于此序列中的每个值,这被称为项之间的比率永远不会大于2(该比率的平均值约为1.839)。 如何在此数字表示系统中编写 假设您使用小尾数表示法。像这样排列序列的成员: 1 2 3 6 11 20 37 68 然后,将您要表示的数字表示出来(对于我们的测试,假设是63),然后找到给定的1-2-3-Tribonacci的值总和为63 (首先使用最大值!)。如果数字是总和的一部分,则在其下放一个1,否则不放0。 1 2 3 6 11 20 37 68 0 0 0 1 0 1 1 0 您可以对任何给定的整数执行此操作-只需先确认您使用低于给定输入的最大值即可! 定义(最终) 编写程序或函数,以给定n介于1和您的语言最大值之间的正整数输入(以任何标准基数编写)来执行以下操作: 将值转换为定义的1-2-3-Tribonacci的数字表示形式。 使用这种类似于二进制的表示形式,并像对待二进制一样读取它。这意味着数字保持不变,但是它们的含义改变了。 将此二进制数字转换为原始数字的基数。 输出或返回此新号码。 但是,只要输出有效,就不需要执行以下步骤。如果您神奇地找到了一些更短的公式(在数学上是等效的),请随时使用。 例子 令函数f为定义所描述的函数,并[]表示所采取的步骤(为小端,尽管无关紧要)(您无需遵循此过程,这只是描述的过程): >>> f(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.