Questions tagged «code-golf»

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

1
将加密的罗马数字转换为阿拉伯小数
编写一种算法,将字母序列解释为罗马数字。(请参阅下面的罗马数字规则) 每个不同的字母都有一个匹配的阿拉伯十进制值,没有最大值。但是您事先没有密钥,因此{A=10, I=1, X=5, ... Z=1000000}取决于您的解释。 挑战 通过读取输入 STDIN或等效和写入输出经由STDOUT或等效 有效输入是大小写字母的组合,即匹配 \[a-zA-Z]+\ 输入应经过验证,以查看字母序列是否可以解释为有效的罗马数字 如果输入通过验证,则有效输出应该是最低的阿拉伯十进制解释,并且所使用的键即Aa解释为4 {a=5, A=1} not 6 {A=5, a=1} 或 9 {a=10, a=1} 罗马数字规则 只能重复表示十次幂的字母,最多重复三次,总共重复四次,例如 II III XXXIX 如果将一个或多个字母放置在另一个价值更高的字母之后,请添加该金额 AAaa => 22 {A=10, a=1} (20 + 2 = 22) bbAAaa => 222 {b=100, A=10, a=1} (200 + 20 + 2 …

1
给定长度列表和代表这些长度的字符串,它们匹配吗?
给定一个表示长度列表的模式,以及一个表示这些长度的字符串,它们匹配吗? 对于感兴趣的人来说,这等同于验证Nonogram的行或列是否正确。但是,我省略了与非图相关的所有语言,以使那些不熟悉这些谜题的人感到困惑。 输入值 两行数据,由换行符分隔。 第一行将是一个由空格分隔的整数列表,例如: 3 6 1 4 6 该行描述的填充模式的大小等于整数列表,并由第二行必须匹配的,未知长度,正长度的空白空间分隔。匹配的字符串的开头和结尾处也可能有空格。 第二行将是可能与第一行中的模式不匹配的行。它完全由#,x和_。这条线被保证为至少只要在第一行中的整数的总和,再加上不同整数的数目减1,并且可以更长。因此,在这种情况下,第二行保证至少为(3+6+1+4+6) + (5) - 1或24个字符长。这是与第一行中的模式匹配的示例24个字符行: ###_######_#_####_###### 符号的含义: # 这代表一个填充的盒子 x 这表示一个标记为“保证为空”的框 _ 这表示一个未知/未标记的框。 目标 这个想法是: 验证第二行可能是符合第一行模式的有效行。 ERROR如果未知空格不能用#或x匹配第一个,则必须打印明确的错误消息(选择方式由您决定;下面的示例编写,但不必是这5个字符)线。 打印已完全放置在行中,以空格分隔的整数的零索引索引。如果有歧义,请勿打印索引。 例子: Input: | Output: | Reason: -------------------------------------------------------------------------- 3 6 1 4 6 | 0 1 2 3 4 | This is …

3
正则字形
给定顶点数量n ≥ 3和“步长” 1 ≤ m < n/2 (指示两个连接的顶点之间的距离),输出相应规则多边形的图形表示。如果该多边形包含多个闭合回路,则每个回路必须以不同的线条颜色呈现。(如果这听起来令人困惑,那么下面的示例将有望清除这些问题。) 规则 任何合理的问题解决方案都可能会自动满足这些规则-它们只是在此处对输出的参数施加一些约束,以防止出现诸如“此黑色块完全是一个多义字,但您看不到它的原因”之类的答案。我将线宽设置为9000以上。” 您可以将多边形图呈现到文件(可以将其写入光盘或标准输出流)中,也可以将其显示在屏幕上。 您可以使用矢量或栅格图形。如果对输出进行光栅化,则图像的尺寸必须为400x400像素或更大,并且多边形的半径(从中心到每个顶点的距离)必须在边长的35%和50%之间。 多边形的纵横比必须为1(以使其顶点位于适当的圆上)-图像的画布可能为矩形。 测线图的线的粗细不得超过半径的5%(当然,粗线的粗细必须为非零)。 除了多边形图,您还可以渲染轴或框架,但只能渲染其他东西。 您可以选择任何(纯色)背景色。 对于由多个闭环组成的组合词,您必须支持至少6种视觉上不同的颜色,所有这些颜色都必须与背景不同。(只要阴影在整个光谱中充分散布,灰度就可以了。)您的代码仍必须可以运行6个以上的循环,但是对于任何其他循环,颜色都不必是可区分的(即,您也可以重用)之前循环中的颜色)。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 例子 以下是所有输出n = 16(直到列对应,n行对应m): 点击查看大图。 作为更大的示例n,这里(n, m) = (29, 11)和(30, 12):

4
理想问题
是什么导致理想的问题?也许这仅仅是对深刻思想的抽象和对梦想,希望,思想的初始化(…… 省略了5,024.2个字符)。因此,我建议我们找到一个量化问题的因素。我还建议将该因子称为Q F或Q因子。我这样确定问题的Q因子: (回想一下。) 目的给定一个数字作为输入,在PPCG.SE上确定相应问题的Q因子。如果问题不存在,只需输出;-;(哭泣的表情)。 例如,。(此问题): 在这种情况下,净投票数为。 views = 23435 net votes = 33 edits = 6 answers = 30, answers^2 = 900 comments = 19 charsIOPN = "Joe Z.".length = 6 所以: r_F = 6 / 6 = 1 Q_F = r_F * (23435 * 33 + 6) / …
16 code-golf  math  number 

17
三角形面积
您面临的另一个简单挑战。 你的任务 编写一个包含输入的程序或函数,其中包含3对x坐标和y坐标,并计算在其中形成的三角形的面积。对于那些不记得如何计算的人,可以在这里找到它。 例: 1,2,4,2,3,7 # input as x1,y1,x2,y2,x3,y3 7.5 # output 在Wolfram Alpha上看到 一些注意事项: 输入将是六个以10为底的正整数。 您可以假定输入采用任何合理的格式。 这些点将始终形成有效的三角形。 您可以假定输入已经存储在诸如的变量中t。 以字节为单位的最短代码胜出! 编辑:为了避免造成任何混乱,我简化了如何处理输入而不损害任何当前代码。 请记住,您的程序/函数必须输出有效区域,因此它不能给出负数作为输出

11
Banach-Tarski悖论
Banach-Tarski悖论指出,给定3维空间中的球,您可以将球分解为有限数量的点子集。然后可以将这些不相交的点集重新组合以产生两个初始球副本。从理论上讲,您将拥有两个相同的球。 重新组装的过程仅包括移动上述点子集并旋转它们,而不改变其空间形状。只需五个不相交的子集即可完成此操作。 根据定义,不相交集没有公共元素。其中A和B是初始球的任意两个点子集,而A和之间的公共元素B是一个空集。在以下等式中显示。 对于下面的不交集,公共成员形成一个空集。 挑战 编写一个程序,该程序可以输入ASCII“ ball”,并输出重复的“ ball”。 输入值 这是输入球示例: ########## ###@%$*.&.%%!### ##!$,%&?,?*?.*@!## ##&**!,$%$@@?@*@&&## #@&$?@!%$*%,.?@?.@&@,# #,..,.$&*?!$$@%%,**&&# ##.!?@*.%?!*&$!%&?## ##!&?$?&.!,?!&!%## ###,@$*&@*,%*### ########## 每个球体均以井号(#)勾勒,并填充以下任意字符:.,?*&$@!%。每个输入将为22x10字符(宽度乘高度)。 创建重复项 首先,根据其在中的索引为球内的每个点赋予一个编号的点.,?*&$@!%。这是上面的示例,曾经编号: ########## ###7964151998### ##86295323431478## ##5448269677374755## #75637896492137317572# #21121654386679924455# ##1837419384568953## ##85363518238589## ###2764574294### ########## 然后,将每个点上移一个(九个变为一): ########## ###8175262119### ##97316434542589## ##6559371788485866## #86748917513248428683# #32232765497781135566# ##2948521495679164## ##96474629349691## ###3875685315### ########## 最后,每个新的点值都将转换回其相应的字符: ########## ###!.@&,$,..%### ##%@?.$*?*&*,&!%## ##$&&%?@.@!!*!&!$$## #!$@*!%.@&.?,*!*,!$!?# …

2
鸡是怎么过马路的?
咯咯咯咯咯咯。没有人知道为什么鸡肉过马路,也许另一边有一只漂亮的公鸡。但是我们可以弄清楚如何做。编写一个程序,从左到右,穿过这个(或任何)“道路”。 1356 | 1738 3822 | 1424 3527 3718 9809 | 5926 0261 | 1947 7188 4717 6624 | 9836 4055 | 9164 2636 4927 5926 | 1964 3144 | 8254 您的程序“越过”它,从左到右移动。您可以从最喜欢的列的任何数字开始。从那里,您可以移动到右侧的任何相邻字符。如果从左上角的1​​开始,则可以转到3或8。将转到的每个数字(包括起始数字)都添加到总和中。空格不会增加您的总和。“ |” 迫使您向上或向下移动,而不是向右移动。(您不能在这个角色上前进)您的目标是以最小的总和到达对方。您的程序必须在最后打印出总和,并且它必须能够解决任何问题。最好也可以有一条道路的输入,但这不是必需的。您的程序必须同时打印路径和总和。最少的代码字节获胜。 为了清楚起见,除非在垂直条上,否则可以沿对角线移动。当您在垂直栏上时,只能上下移动。 为了更清晰地说明道路,基本上是一串遵循字符规则的文本字符串(或者是列或行的数组,您应该更喜欢这样考虑),但是这些字符中没有任何内容马路。可以有任何数字,空格,竖线(“ |”)或换行符。如果像一条醉汉那样铺了一条路,就像ProgrammerDan的回答一样,那条路仍然是有效的,您的程序必须能够解决这条路。如果无法到达另一侧,则不认为这条路是可行的(例如,没有任何一条路可以走出一条直线)。 您的程序无需确定道路是否无效。 密钥: 任意数字-将数字加到您的总和中,继续前进。 空格-继续前进,您的总和不会增加任何东西。 “ |” -向上或向下移动,您的总和没有增加。 编辑:建议的示例解决方案。我不能做一个非常大的东西,我不能上IDE来为我的ATM解决它。 走这条小路: 9191 | 8282 1919 …

17
自残程序
简而言之,您的目标是创建一个完整的程序,该程序可以修改其自身的源代码,直到源代码的每个字符都与开始时的字符不同为止。 请在您的帖子中包括开始来源和结束来源,以及说明。例如,描述程序的功能(其他),使用的语言,策略等。 规则 修改完成后,您的程序必须暂停。 它实际上必须修改自己的,当前正在运行的源代码(不一定是传递给解释器的文件,而是修改其指令),而不是打印新程序或编写新文件。 不允许出现标准漏洞。 最短的程序获胜。 如果您的语言可以修改自己的文件并执行新的编译器过程,但不能修改自己的(当前正在运行的)源代码,则可以编写这样的程序,而不是将其舍去+ 20%字节。真正的自我修改语言应该具有优势。 编辑:如果您的程序因错误而暂停,请这样指定(并说出错误是什么。)

3
循环与循环与循环
挑战 创建一个函数,当给定ASCII艺术作品的输入(引导可能最终循环的路径)时,该函数将输出循环的长度(如果存在)和“尾部”的长度,而其中的“尾部”将通过以下方式之一进入循环表格如下。 输入值 您的输入必须传递给函数。下面是一个简单输入的示例。 # --> # --> # ^ | | | | v # <-- # 您可以像这样可视化上面的块 “尾巴”是一个项目,而循环是四个长。 一个更困难的: # --> # --> # ^ | | | | v # --> # <-- # # --> # ^ ^ | | | | | | v # …

1
将比萨切成相同的切片
在我完全阅读它之前,这就是我认为的问题。 一群有经验的高尔夫球手走进第十九叮咬比萨店,点了一个披萨。它呈不规则形状,由单位正方形组成。您的任务是帮助他们将其切成相同的切片。也就是说,切片必须具有完全相同的形状和大小。它们可以旋转,但不能翻转/镜像。例如,如果它们是俄罗斯方块,它们必须是同一种,则不能同时使用L片和J片。 输入值 在第一行中将为您提供组中的人数(总是2到10之间的整数,包括2和10),然后是矩形的矩阵,由''(空格)和'#'字符组成,代表披萨。所有“#”字符都通过其边缘连接。“#”字符的数量保证为人数的倍数。 输出量 您应该打印相同的矩阵,每个'#'字符替换为从0到n-1的数字(n是人数)。每个数字应标记一个切片。切片形状必须通过正方形边缘连接。切片编号不需要按任何特定顺序进行。如果有多种切比萨饼的方法,那么任何一种都是可以接受的。 如果无法按照要求切比萨饼,则应打印字符串“ No pizza for you!”。代替。 计分 这是代码高尔夫。您的分数将是程序中的字节数。字符将通过其UTF-8编码进行计数。最低分获胜。 例子 输入: 3 # ### #### # 输出: 0 100 1122 2 输入: 4 ### # # ### 输出: 001 2 1 233 输入: 2 # # ###### 输出: No pizza for you! 输入: 5 # #### …

3
动态ASCII编码器!
介绍 如今,某些ASCII字符是如此昂贵…… 为了省钱,您决定编写一个程序,使用便宜的字符对昂贵的字符进行编码。 但是,字符价格经常变化,您不想每次需要编码或解码不同字符时都修改程序!您将需要一个更加动态的解决方案。 挑战 您的任务是编写两个程序:编码器和解码器。 该编码器应该接受五个廉价字符的列表,以及一个昂贵的字符。 它应该输出由廉价字符组成的单个字符串,该字符串对昂贵的字符进行编码。 为了保持价格便宜,该字符串不得超过4个字符。但是,不必在编码中使用所有便宜的字符,并且编码的长度可以不同。 的解码器应该接受由编码器输出的字符串,并输出昂贵字符。 除编码字符串外,解码器不接受任何输入。对于任何(有效)输入组合,它都必须在编码器的输出上未经修改地工作。换句话说,您的解码器程序 不知道哪个字符昂贵或便宜。 计分 最短的组合代码胜出! 笔记 所有字符都可以是大写字母[A-Z],小写字母[a-z]或数字[0-9]。 廉价字符列表将不包含重复项。没有角色会既便宜又昂贵。 编码器和解码器不必使用相同的语言编写,但是可以相同。您可以编写程序或函数。 输入和输出可以采用适合您语言的任何合理格式。 这两个程序可能不会共享任何变量或数据。 摘要 一些便宜的字符和昂贵的字符的输入被提供给编码器。 编码器输出一串便宜的字符,对昂贵的字符进行编码。 给解码器编码器的输出,并输出昂贵的字符。 例子 输入: a, b, c, d, e f 编码器的可能性: a eeee caec 解码器: f 输入: a, b, c, d, e h 编码器的可能性: bc cea eeaa 解码器: …
16 code-golf 

2
修复逻辑系统
您将获得一组逻辑语句。您的挑战是,以最佳方式(即删除最少数量的语句)删除任何与其他矛盾的语句。 挑战 您将编写一个程序或函数,该程序或函数将语句列表作为输入,删除最少数量的语句,以便找到解决方案,然后输出其余的语句。 逻辑 语句由变量 A-Z和它们之间的运算符组成。 有5个运算符:-(not),v(or),^(and),->(if)和<->(iff)。 真相表: A | B | -A | AvB | A^B | A->B | A<->B 0 | 0 | 1 | 0 | 0 | 1 | 1 0 | 1 | 1 | 1 | 0 | 1 | 0 1 | 0 …
16 code-golf 

2
我的口袋里有什么?
简介:查找由括起来的字符MYPOCKET。 输入示例 MYPHEIF YFOCKVH MBNDEIF TEUFTMY ESNDUWP KBOVUVO CENWFKC OPYMTEB 示例输出 F BND EUF SNDUW BOVUV ENWF ??我们如何将其作为输出?有时很难看清“口袋”。这将使其更加清晰: MYP HEIF ÿ ˚F OCK VH 中号 BND Ë IF Ť EUF TMY Ë SNDUW P ķ BOVUV ö Ç ENWF KC OPYMTE乙 粗体字母表示一圈相互正交的字符环,由MYPOCKET一遍又一遍重复的字符串组成。您的程序应输出该圆环内的字符。 笔记: 只有一个“口袋”。 允许在行后尾随新行或空格。 网格的其余部分也可能包含来自的字符MYPOCKET,但不能使环的形状不明确。 将M在右上角是并非总是如此。 “口袋”可以沿顺时针方向或逆时针方向移动。 “口袋”不会沿对角线方向移动-也就是说,每个字母都左,右,上或下连接到下一个字母。 这是您可以用来测试程序的另一项输入。 …
16 code-golf 

3
给我建一个金字塔
您需要从多维数据集构建金字塔。多维数据集可以从2个角度查看: _____ _____ /\ \ / /\ / \____\ /____/ \ \ / / \ \ / \/____/ \____\/ 这是从2个可能角度的2尺寸立方体的示例。多维数据集的高度为$size斜杠(或反斜杠),而多维数据集的宽度为2 * $size下划线。顶层宽度应包含一个额外的下划线字符。 输入将以包含数字(立方体大小),斜杠或反斜杠(指示方向/角度)以及另一个数字(金字塔高度)的字符串形式提供。 例子: 输入: 1/1 输出: ___ /\__\ \/__/ 输入: 1\1 输出: ___ /__/\ \__\/ 输入: 2/1 输出: _____ /\ \ / \____\ \ / / \/____/ 输入: 1/2 …

1
我们喜欢我们奇怪的难题,我们英国人
在英国的几家报纸上有一种被称为Hidato的游戏。它与Sudoku有点类似,尽管不是在行和块中放置1-9,而是放置数字以使它们从头到尾依次连接,01直到它们都水平,对角线或垂直。 输入将包含由分隔的多行\n,其中包含以空格分隔的块,您可以假定它们是两个字符宽。每个块将是一个数字,一个要填充的空白(由表示--)或一面不能在(XX)中具有数字的墙。 您的输出应与提供的一个相匹配,尽管带有带有数字的空块。请注意,可能没有唯一的解决方案,甚至不存在解决方案 -有些解决方案可能由于其含糊不清而产生多个结果,就像Sudoku一样,而有些解决方案实际上是无法解决的,在这种情况下,您应该给出错误的输出,但是您可以假设输入的格式如下。 使用标准标题Language: XX bytes。打高尔夫球快乐! 例子 输入01 XX 03,01 -- 04,01 --,等应该都是一些回报falsey。 输入: 01 -- -- -- XX 05 输出: 01 03 04 02 XX 05 输入: -- 33 35 -- -- XX XX XX -- -- 24 22 -- XX XX XX -- -- -- 21 -- …

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.