Questions tagged «code-golf»

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

17
互素数和pi
介绍 数论以意想不到的联系的形式充满了奇迹。这是其中之一。 如果两个整数除1以外没有其他共同因数,则它们是互质的。给定数N,请考虑从1到N的所有整数。随机抽取两个这样的整数(所有整数在每次抽取时被选择的可能性相同;抽取是独立的且具有替换值)。令p表示两个选定整数互质的概率。然后p趋于6 / π 2 ≈0.6079 ...作为Ñ趋于无穷大。 挑战 这一挑战的目的是将p作为N的函数进行计算。 例如,考虑N =4。从整数1,2,3,4获得16对可能。这些对中的11个是互质的,即(1,1),(1,2),(1,3),(1,4),(2,1),(3,1),(4,1 ),(2,3),(3,2),(3,4),(4,3)。因此,对于N = 4,p为11/16 = 0.6875 。 p的确切值至少需要用四个小数点来计算。这意味着计算必须是确定性的(与蒙特卡洛相对)。但这不必是上面所有对的直接枚举;可以使用任何方法。 可以使用函数参数或stdin / stdout。如果显示输出,则可以省略尾随零。因此例如0.6300可以显示为0.63。它应显示为十进制数字,而不是分数(63/100不允许显示字符串)。 获胜标准是最少的字节。内置函数的使用没有限制。 测试用例 输入/输出(如上所述,只有四个小数是必需的): 1 / 1.000000000000000 2 / 0.750000000000000 4 / 0.687500000000000 10 / 0.630000000000000 100 / 0.608700000000000 1000 / 0.608383000000000

15
几何挑战
每个人都喜欢几何。那么,为什么我们不尝试编写高尔夫球代码呢?这项挑战涉及输入字母和数字并根据其形状。 输入 输入将采用的形式(shapeIdentifier)(size)(inverter)。 但是shapeIdentifier,大小和逆变器是什么? 形状标识符是您将使用*s 制作的形状类型的标识符。以下是形状标识符: s -正方形 t - 三角形 大小将介于之间1-20,它是图形的大小。 逆变器确定形状是否上下颠倒,用a +或a 表示-。请注意: s3-==(等于),s3+因为正方形是对称的。但是,t5-!=(不相等)t5+。 在输出中可以使用尾随空白,但不能使用前置空白。 输出实例 Input: s3+ Output: *** *** *** Input: t5+ Output: * *** ***** Input: t3- Output: *** * 特别说明 三角形输入将始终为奇数,因此三角形*的顶部始终以1结尾。 三角形的大小(如果是)是底部的大小,如果是 +,则是顶部的大小-。
23 code-golf  string  ascii-art  geometry  code-golf  ascii-art  subsequence  fewest-operations  test-battery  code-golf  array-manipulation  bitwise  code-golf  interactive  code-golf  music  code-golf  string  kolmogorov-complexity  code-golf  string  decision-problem  simulation  code-golf  string  classification  code-golf  sequence  base-conversion  palindrome  code-golf  kolmogorov-complexity  code-golf  date  astronomy  code-golf  sequence  base-conversion  code-golf  geometry  combinatorics  code-golf  string  code-golf  math  array-manipulation  code-challenge  math  code-golf  card-games  code-challenge  array-manipulation  sorting  code-golf  code-golf  math  abstract-algebra  polynomials  code-golf  palindrome  factoring 

9
基本拉丁字符名称到字符
让我们回到基础! 您的代码(一个完整的程序或函数)必须将可打印的基本拉丁字符的正式Unicode名称转换为相应的字符。例如,对于输入,LOW LINE您的代码必须输出_。 您只需要输入一个字符名称即可。 您不能使用任何内置或以其他方式存在的预先存在的函数或库,这些函数或库提供与Unicode字符名称(例如Python unicodedata,Java Character.getName等等)特别相关的任何逻辑。 对于这些名称之一以外的输入,任何行为都是可以接受的。 这就是代码高尔夫:以字节为单位的最短代码获胜。 为避免歧义,这是我们将使用的全套正式角色名称(从这个问题中借来的): SPACE ! EXCLAMATION MARK " QUOTATION MARK # NUMBER SIGN $ DOLLAR SIGN % PERCENT SIGN & AMPERSAND ' APOSTROPHE ( LEFT PARENTHESIS ) RIGHT PARENTHESIS * ASTERISK + PLUS SIGN , COMMA - HYPHEN-MINUS . FULL STOP / SOLIDUS …

1
三个相互的奎因
任务 在这个挑战中,您的任务是编写三个程序,这些程序形成一种相互类似quine的系统。让我们把这些程序A,B和C。如果其中一个程序被提供了另一个程序的源作为输入,则它应输出第三个程序的源。例如,如果A给出B作为输入,则输出C。如果给程序提供了它们自己的源作为输入,则它们应输出三个字符串"three","mutual"和"quines"(不带引号)。在所有情况下,它们都可能输出一个附加的尾随换行符。对于任何其他输入,程序可能会执行任何操作,包括崩溃。 例 例如,假设的源代码A,B和C是aSdf,ghJk和zxcV。然后,程序应表现如下。 Source Input Output -------------------- aSdf aSdf three aSdf ghJk zxcV aSdf zxcV ghJk ghJk aSdf zxcV ghJk ghJk mutual ghJk zxcV aSdf zxcV aSdf ghJk zxcV ghJk aSdf zxcV zxcV quines 规则和计分 该解决方案A,B并且C可以是功能或完整的程序,但他们必须是完全独立的:没有共享的代码是允许的。 由于存在标准漏洞和quine规则,因此程序无法以任何方式访问其自身的源代码。 你的分数是结合字节数A,B以及C较低的分数更好。
23 code-golf  quine 

2
水暖随机路径
编写一个包含三个整数,宽度w,高度h和步数的程序或函数s。您将在一个按像素图像上绘制很长的非自相交随机 s步长,其中每5 x 5像素单元为空(纯米色)或以下十二个简单“管道”之一:5*w5*h 上面的图像被放大以显示细节。这是实际尺寸的管道: (灰色线仅用于分隔管道类型。) 随机游走将是一条连续的管道路径,该路径从一个管道端点(底部四种管道类型之一)开始,到另一个管道端点结束。 从一个空w的h网格开始,并随机选择一个单元格作为起点。然后随机选择四个方向之一以开始并绘制相应的管道端点。这个开始的单元格标志着您步行的第一步,每当您绘制一个新的单元格或覆盖一个现有的单元格时,它便被视为采取的另一步骤。 现在,如果选择的方向有效,则反复地随机选择向右,向左或向右走,绘制适当的管单元。回溯并重新选择方向,直到s形成完整的步阶路径才有效。该路径应以管道端点结尾,该端点可以在网格上的任何位置,具体取决于路径所采用的路线。 重要的是要注意,只有两个直管单元可以被覆盖,并且只能被方向相反的直管单元覆盖,结果是相交单元。否则,必须将所有管道放置在空的单元格中。 绘制相交时,应将路径中距起始像元更远的部分绘制在顶部。 由您决定网格是否具有周期性边界条件(PBC),即,从网格一侧退出的管道是否会从另一侧伸出。如果没有PBC,则网格边界会像其他管道一样成为障碍。 特别案例 当s为0时,不应绘制任何管道,并且输出5*w的5*h图像应为空白(即所有米色)。 当s为1时,单个管道存根 (实际尺寸:) 应该在随机选择的起始单元格上绘制。 其他详情 您可能会认为这s是最多的,w*h因此一条路径永远是可能的。(尽管由于相交,可能会有更长的路径。) w并且h将始终是积极的。 所有随机选择都必须一致地随机。例如,即使这样会使问题变得更容易,您也不应避免在可能的情况下进行交叉。允许使用伪随机数生成器。 可以使用任何三种视觉上不同的颜色来代替黑色,蓝色和米色。 您的输出图像可能会被放大,以使它们实际上是5*w*k按5*h*k像素(其中k为正整数)表示的。(即使您k是1,也建议您放大发布的所有示例。) 可以使用任何常见的无损图像文件格式,并且可以将图像保存到文件,显示或原始输出到stdout。 以字节为单位的最短代码获胜。 例子 (全部放大了500%。) 如果输入为,w=2, h=1, s=0则输出将始终为: 如果输入是,w=2, h=1, s=1则输出将是这些图像之一,机会均等: 如果输入为,w=2, h=1, s=2则输出为 或可能 如果假定网格具有PBC。 (请注意,像这样开始路径将使第二步变得不可能。) 以下是w=3, h=2, s=6假设PBC的一些可能的输出: w=3, h=3, s=9假设PBC,这是的可能输出: 请注意,由于相交计算为两个步骤,因此路径不需要覆盖所有像元。同样,我们可以推断出拐角端点是起始像元,因为必须在之后绘制交叉点立交桥。因此,我们可以推断出做出的随机选择的顺序: start at top left, …

20
N平板斜切蛋糕
编写一个接受正整数N的程序或函数。 当N为1时,输出 /\ \/ 当N为2时,输出 /\/\ \/ / / / \/ 当N为3时,输出 /\/\/\ \/ / / / / / \/ / / / \/ 当N为4时,输出 /\/\/\/\ \/ / / / / / / / \/ / / / / / \/ / / / \/ 对于较大的N,图案会继续,每增加N就会添加一个新层。 “输出”表示打印斜线图案或将其作为字符串返回。 输出中允许使用单行尾换行符。 输出中允许尾随空格,但不允许前导空格。 以字节为单位的最短代码获胜。

10
*覆盖*标签
如果您曾经尝试过将标签添加到一个非常密集的图中,那么您将意识到有时标签会相互重叠,从而难以阅读。我们将执行类似的操作,但只是在一维中。 输入将是(label, x-coordinate)成对的序列,输出将是按给定顺序绘制每个点和标签的结果。*代表该点的星号应放在给定的x坐标处,并且标签应紧随其后。任何现有字符都将被覆盖。 例如,如果输入是 Hello 0 World 8 Fizz 3 Buzz 5 PPCG 16 X 9 然后将发生以下情况: *Hello *Hello *World *He*Fizz*World *He*F*Buzzorld *He*F*Buzzorld *PPCG *He*F*Buz*Xrld *PPCG 然后应输出最后一行。 I / O规则 输入可以包含任意数量的对。每个标签仅包含大写和小写字母,并且标签长度最多为127个字符。每个x坐标在0到127之间(含0和127)。 输入可以采用任何方便的列表或字符串格式,以使输入对明确无误,并且标签/ x坐标在输入中交替出现。例如,类似[("Hello", 0), ("World", 8) ...]或[0 "Hello" 8 "World" ...]很好的格式。但是,您可能不会假设标签和x坐标是两个单独的列表。 功能和完整程序都可以。 标签未覆盖的任何斑点均应以空格表示。但是,除单个可选的尾随换行符外,可能没有任何多余的前导或尾随空格。 例子 输入: OneLabel 10 输出: *OneLabel 输入: …
23 code-golf  string 

5
从正方形到六角形的无缝转换
对于在网格上进行的许多游戏来说,六边形是“明显优越的选择”。不幸的是,许多免费游戏美术网站仅具有用于正方形地图的无缝磁贴集。在过去的项目中,我使用了其中一些,并将其手动转换为六边形。 但是,我在晚年变得懒惰。用一个小的脚本来自动化该过程应该很容易。 但是,我在晚年变得懒惰。因此,我将其外包给您,并将其伪装成高尔夫挑战赛1。 输入项 输入是具有24位RGB颜色的任何常见图像格式的正方形图像。您也可以将文件名而不是图像数据本身作为输入。 您可以假设图像是正方形的,并且边长是四的倍数。 输出量 输出是输入图块,但转换为六边形(图像本身将是正方形,带有透明区域)。您可以将其保存到文件或显示在屏幕上。 同样,任何常见的图像格式都可以。如果您使用的格式支持透明,则背景区域必须是透明的。如果不是,您可以使用#FF00FF颜色(可怕的紫红色)作为替代。 方法 那么我们该怎么做呢?我使用2的方法在垂直方向上稍微挤压图像,但总体而言,对于大多数情况而言,它看起来都不错。我们将使用此输入图像做一个示例: 缩放:将图像缩放到3:2的比例。由于我们的图像将是正方形,这意味着您只需将它们缩放到75%的宽度和50%的高度即可。我们的示例输入为200x200,因此最终得到以下150x100的图片: 平铺:将缩放后的图像的副本放到2x2的网格中: 裁剪:从2x2网格中的任意位置抓取大小适当的六边形。现在,为了便于平铺,此六角形并非完全规则。在裁剪了原始大小的正方形(此处为200x200)后,您便裁剪了角落。裁剪线应从(大约)每个左侧/右侧的中心延伸到顶部/底部边缘的四分之一: 这就是您的输出! 这是平铺时的外观示例(此处放大): 这是代码高尔夫,因此以字节为单位的最短代码获胜。适用标准漏洞,依此类推。 1信不信由你。 2 此帮助站点中的方法一。

25
伯努利数字
所述伯努利数(具体地,第二伯努利数)由以下递归定义来定义: 其中表示组合。 给定一个非负整数m作为输入,请输出小数表示形式或m第二伯努利数的缩减分数。如果输出小数表示形式,则必须至少具有6个小数位(小数点后的数字),并且四舍五入到6个小数位时必须是准确的。例如,对于m = 2,0.166666523是可以接受的,因为它四舍五入到0.166667。0.166666389是不可接受的,因为它四舍五入为0.166666。尾随零可以省略。科学计数法可用于十进制表示。 以下是m多达60个(含)的输入和预期输出,以科学计数形式四舍五入到小数点后6位,并减少了分数: 0 -> 1.000000e+00 (1/1) 1 -> 5.000000e-01 (1/2) 2 -> 1.666667e-01 (1/6) 3 -> 0.000000e+00 (0/1) 4 -> -3.333333e-02 (-1/30) 5 -> 0.000000e+00 (0/1) 6 -> 2.380952e-02 (1/42) 7 -> 0.000000e+00 (0/1) 8 -> -3.333333e-02 (-1/30) 9 -> 0.000000e+00 (0/1) 10 -> 7.575758e-02 (5/66) …

30
制作棋盘
在PHP挑战中看到了这一点。目的是用最少的代码制作具有64个方格(8 * 8)的棋盘。很简单,我用356字节的PHP代码制作了我的代码(我知道这并不令人印象深刻),我希望看到其他一些方法。只要保持原样,就可以用您选择的语言来完成,因此不会导入。最小字节数获胜。 输出应如下所示: 而我的代码: <table><?php $c='black';function p($c,$n){echo'<td style="width:50px;height:50px;background:'.$c.'"></td>';if($n==1){echo"<tr>";}}for($i=1;$i<=64;$i++){if($i%8==0&&$c=="black"){$c="white";$n=1;}elseif($i%8==0&&$c=="white"){$c="black";$n=1;}elseif(isset($n)&&$n==1){$n=0;}elseif($c=="black"){$n=0;$c="white";}elseif($c=="white"){$n=0;$c="black";}p($c,$n);} 还是可读的: <table><tr> <?php $color = 'black'; function printcolor($color, $nl) { echo '<td style="width:50px; height:50px; background:' . $color . '"></td>'; if ($nl == true) { echo "</tr><tr>"; } } for ($i=1; $i<=64;$i++) { if ($i % 8 == 0 && $color == …

18
简单的打印箭头
为了打高尔夫球,我一直在女友的Python入门课程中做作业。我发现,对于这项任务,有多种策略在字符数方面非常接近,我敢肯定,这里的人们可以找到更好的方法。尽管我对使用Python进行此操作的方式最感兴趣,但是我想知道该程序可以得到的最多帮助,因此这是代码保护和最短答案的获胜。 规则: 任务概述如下。尽管提示不必说什么,并且可以以不同的顺序进行,但应要求用户输入两次。 有标准漏洞。 作业3:箭 编写一个程序,提示用户输入许多列,然后它们打印出如下所示的图案。您可以假设用户将提供正数。您的程序应同时处理左右箭头。以下是一些示例运行: How many columns? 3 Direction? (l)eft or (r)ight: r * * * * * How many columns? 5 Direction? (l)eft or (r)ight: l * * * * * * * * *

5
将人字形转换为固线
编写一个仅包含空格,换行符和尖括号的字符串的程序:<,>(chevrons)。输出一串空格,换行符和斜杠:/,\((soliduses),其形状与输入相对应,但顺时针旋转四分之一圈,并在原始输入的每一行之间插入一列空格(出于美观目的)。 例如,如果输入为: <> 输出将是这样的: /\ \/ 如果输入是这样的: ><<<> <>< 输出将是这样的: \/ /\ /\ \/ /\ /\ /\ \/ 如果输入是这样的: >> << <> <> < >< 输出将是这样的: /\ \/ \/ \/ \/ /\ /\ /\ /\ \/ /\ 请注意,在最后两个示例中,原始输入行之间如何有一列空格。 您可以编写一个完整的程序,该程序以任何常用方式(命令行,stdin)获取输入并打印输出,或者您可以编写一个带有字符串参数的函数来打印或返回输出。 输入中不需要空格的前导行和尾随行或列在输出中出现。另外,只要结果形状正确,输出中的任何位置都可以有任意数量的前导和/或尾随空格和/或换行符。换一种说法, ascii艺术的翻译并不重要,只有形状及其相互之间的关系才重要。 您可以选择假设输入的末尾有换行符。 以字节为单位的最短代码获胜。

23
州和首都
给定一个字符串作为输入,如果它是州资本,则输出其资本为美国的州,如果它为州,则输出其国家的资本,或者Arstotzka都不是。 例子: Austin -> Texas Alaska -> Juneau The Nineteenth Byte -> Arstotzka 所有首都及其各自的州: Baton Rouge, Louisiana Indianapolis, Indiana Columbus, Ohio Montgomery, Alabama Helena, Montana Denver, Colorado Boise, Idaho Austin, Texas Boston, Massachusetts Albany, New York Tallahassee, Florida Santa Fe, New Mexico Nashville, Tennessee Trenton, New Jersey Jefferson, Missouri Richmond, …

2
连接字母
您应该编写一个程序或函数,该程序或函数接收一个以字符串表示的字符块,并输出或返回一个类似的字符串,在该字符串中,字母的相邻字母相互连接。 视觉示例(以的形式input => output): b d b d |\ /| | \ / | => | X | | / \ | e |/ \e c a c a 细节 输入将是一个包含空格,换行符以及每个第一N个小写字母正好一个的字符串。1 <= N <= 26 输入的行将用空格填充,以创建一个完整的矩形块。 字母表中相邻的每对字母将在同一行,列或对角线上,并应使用来连接直线\ / | or -。(该行的长度可能为0。) 应处理以下两行重叠类型: / and \ become X | and - …

28
迭代部分和
整数列表[a 1,a 2,a 3,...,a n ]的部分和为 s 1 = a 1 s 2 = a 1 + a 2 s 3 = a 1 + a 2 + a 3 ... s n = a 1 + a 2 + ... + a n 然后,我们可以获取部分和[s 1,s 2,s 3,...,s n ]的列表,然后再次计算其部分和以生成新列表,依此类推。 …

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.