Questions tagged «graphical-output»

这项挑战涉及在屏幕上绘制图片或生成图像文件。对于纯ASCII艺术比赛,请使用[ascii-art]。如果参与者可以在图形和ASCII艺术作品之间进行选择,请同时使用两个标签。对于图像输入,请使用[图像处理]。

13
对像素排序
您的任务是创建一个给定输入图像的程序,该程序将创建相同大小的输出图像,其中所有像素均按十六进制值排序。 您的程序可能: 按从左到右的顺序对像素进行排序,然后再进行降序排列,或者先按列进行排序,然后再按右顺序进行排序。无论如何,左上方的像素是最小的,而右下方的像素是最大的。 使用透明度,但这不是必需的。 按RGB排序,但是您可以使用CMY或任何其他具有至少3个值的格式。您可以选择要排序的值。(HSV可能会提供一些不错的图像) 使用大多数计算机可以打开的任何已知图像格式。 规则: 输出必须写入磁盘或可通过管道传输到文件。 输入是作为命令行参数提供的,形式是图像的相对路径,或者从命令行通过管道输入。 这是代码高尔夫,所以最短的代码以字节为单位!

6
产生一个Padovan螺旋
介绍 与斐波那契数列相似,Padovan 数列(OEIS A000931)是一个数字序列,是通过在序列中添加前项产生的。初始值定义为: P(0) = P(1) = P(2) = 1 第0,第1和第2项均为1。递归关系如下所示: P(n) = P(n - 2) + P(n - 3) 因此,它产生以下序列: 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, ... 将这些数字放在一起时,将它们用作等边三角形的边长会产生一个不错的螺旋,就像斐波那契螺旋: 图片由维基百科提供 任务 您的任务是编写一个程序,该程序通过图形化输出来重新创建此螺旋,其输入对应于哪个术语。 …

8
可以从素数生成方树年轮吗?
显然是的!三个简单的步骤。 步骤1 令f(n)表示素数计数函数(素数小于或等于n)。 如下定义整数序列 s(n)。对于每个正整数n, 将t初始化为n。 只要t既不是素数也不是1,则将t替换为f(t)并进行迭代。 迭代次数为s(n)。 该迭代过程是保证最终因为˚F(Ñ)< ñ所有Ñ。 考虑例如n= 25。我们初始化t =25。由于这不是素数也不是1,我们计算f(25)为9。这成为t的新值。这既不是素数也不是1,所以我们继续:f(9)是4。我们再次继续:f(4)是2。因为这是素数,所以我们在这里停止。我们完成了3次迭代(从25到9,然后到4,再到2)。因此s(25)为3。 序列的前40个词如下。该序列不在OEIS中。 0 0 0 1 0 1 0 2 2 2 0 1 0 2 2 2 0 1 0 3 3 3 0 3 3 3 3 3 0 3 0 1 1 1 1 1 …

7
画Reutersvärd的三角形
这个不可能的对象是Reutersvärd的三角形: 根据以下规则绘制自己的版本: 总共恰好9个立方体 每边正好由4个立方体组成 立方体似乎重叠,因此渲染的对象实际上是不可能的对象 使用4种不同的颜色-一种用于背景,另一种用于立方体的三个面 在位图输出中,整个三角形的高度至少应为100像素,宽度至少应为100像素 宽高比:整个三角形的宽度和高度相差不应超过2倍 三角形可以相对于上图旋转任何量 三角形可能会或可能不会相对于上图反映

6
绘制Cornu螺旋
可以使用Feynman方法计算光传播的路径积分的Cornu螺旋。我们将使用以下离散化近似该积分。 考虑这张图中的镜子,S光源P在哪里,我们在哪里收集光。我们假设光线以直线光线从S反射镜中的每个点反射然后指向P。我们将镜子分成若干N段,在本例中为13,标记A为M,以使光的路径长度为R=SN+NP,其中SN是S到镜段的距离N,与相似P。(请注意,在图像中的点的距离S和P到反射镜已缩短了很多,对于视觉的目的。该块Q是相当无关的,并且纯粹放置经由反射镜,以确保反射,并避免直接光照S到P。) 对于给定的波数k,可以将光线的相量计算为exp(i k R),其中i是虚数单位。将所有这些相量从左后视镜面到右图从头到尾绘制会导致Cornu螺旋。对于13个元素及其下面描述的值,得出: 对于较大N的镜面段(即很多镜面段),螺旋线接近“真正的” Cornu螺旋线。使用各种值查看此图像N: 挑战 对于给定的N设x(n)是X的的-协调中心Ñ个反射镜区段(n = 0,1,2,...,N): x(n) := n/N-0.5 让SN(n)是的距离S = (-1/2, 1000)到第n个反射镜部分: SN(n) := sqrt((x(n)-(-1/2))^2 + 1000^2) 同样 NP(n) := sqrt((x(n)-1/2)^2 + 1000^2) 因此,第n条光线传播的总距离为 R(n) := SN(n) + NP(n) 然后我们定义通过第n个镜面段的光线的相量(复数)为 P(n) = exp(i * 1e6 * R(n)) 现在,我们考虑累积总和(作为积分的近似值) C(n) = P(0)+P(1)+...+P(n) 现在的目标是通过各点绘制分段线性曲线(C(0), C(1), ..., …

9
我真的很想要菱形,但是我得到的只是这个愚蠢的矩形
仅给出一条直尺和一个罗盘,在给定的矩形内刻一个菱形,共享两个相对的点。 输入项 输入是矩形的尺寸。在所示的示例中,该值为125, 50。您可以采用最方便的方式进行输入(如两个整数,列表,字符串等)。 较大的尺寸最小为100,而较小的尺寸最小为25。两者的上限均为200。 输出量 输出将是图像(显示在屏幕上或保存为文件),显示 输入矩形 所有“工作”线/圆 铭刻的菱形 以不同的颜色。在上图中,矩形为黑色,工作线为蓝色,菱形为橙色。线条应按照列表中显示的顺序绘制(例如菱形覆盖工作线和矩形)。 输出图像必须足够大以包含所有内容。例如,显示的圆圈不能超出范围。 方法 上面的示例图像中使用的方法是: 以左下角为中心,右上角为周长上的点绘制一个圆,其半径等于矩形的对角线。 进行相同的操作,但交换中心点和外围点。 在两个圆的交点之间画一条线,为矩形的对角线提供一个垂直平分线。 使用新线和矩形的交点绘制菱形。 之所以起作用,是因为菱形的内部对角线始终彼此垂直平分。不过,我这里没有提供完整的证明。 这不是获得菱形的唯一方法,并且可以在解释您正在做的事情的同时使用另一种方法。我相信这可能是最简单的。 规则 您只能绘制圆和直线(或直线段)。用中心点和周边点定义一个圆。一条线由任意两点定义。线不必具有任何指定的长度,但是它们必须至少覆盖定义点(请注意示例图像:线稍微越过圆交点,但不越过边缘)。对于圆,从中心到所选周边点的半径被视为一条工作线,必须显示。 要对线条进行栅格化,可以使用任何公认的算法(例如Bresenham算法),也可以依赖于您的语言可能具有的任何内置函数。如果您的输出是基于矢量的,请确保以至少与输入矩形(以像素为单位)一样大的分辨率显示。另外,您将在普通画布上绘画,因此请禁止显示任何网格标记或无关的输出。 别作弊!您只能使用到目前为止建立的内容来确定点/线/圆的位置。如果您无法解释如何使用工作线/圆来显示它是菱形,那说明您做错了。 您可以使用任意一对相对的点,并且只要输出正确,就不需要将矩形绘制为与轴对齐。 输入将始终是非正方形的矩形,因此不必担心会出现特殊情况。 最后,这是标准代码高尔夫,因此以字节为单位的最小大小获胜。

1
垫片编织-画一个Sierpiński结
给定一个整数N> = 2,产生一个图像,该图像显示度数为N的Sierpiński结。 例如,以下是2、3、4和5级的结: 单击图像以查看完整尺寸(度数越高,图像越大)。 规格 使用N度的Sierpiński三角形的顶点作为引导点绘制N度的Sierpiński结。N度的Sierpiński三角形是排列成较大三角形的三个N-1度的Sierpiński三角形。0度的Sierpiński三角形是等边三角形。 最小的三角形组成部分的边长为64,这使Sierpiński三角形的结长以 外部三角形的中心位于图像的中心。这在顶部和底部没有相等的空格。 输出是边长为的正方形图像,其中是ceiling(x),大于或等于x的最小整数。当三角形的中心位于图像的中心时,此大小足够大,足以将基础Sierpiński三角形的顶部顶点包含在图像中。 单个曲线必须在其上方和下方通过,并严格交替。解决方案可以在上下限之间选择,也可以在上下限之间选择。 示例图像显示黑色前景和白色背景。您可以选择任何两种容易区分的颜色。允许抗锯齿,但不是必需的。 在两个圆弧相交处或曲线在其自身上方或下方通过的地方一定不能有间隙。 输出可以是任何光栅格式的图像文件,也可以是包含正确的默认显示尺寸的任何矢量格式的图像文件。如果直接在屏幕上显示,则必须采用一种允许滚动的形式,以便在大于屏幕时查看完整图像。 确定圆弧中心,半径和厚度 结由一系列圆弧构成,这些圆弧在切线平行的点相交,从而实现无缝连接。这些弧显示为环形扇形(具有厚度的弧)。 这些弧的中心是最小的倒置三角形的顶点。每个这样的顶点都是一个弧的中心。 每个弧的半径为 唯一的例外是,三个最外面的三角形(在大三角形的拐角处)的弧线的中心是两个相邻内部顶点的中点,因此半径为 每个圆弧的总厚度(内半径和外半径之差)为,并且其黑色边框的厚度均为。曲线必须具有这些边框,而不仅仅是实心条。 计量单位 所有距离均以像素为单位(1是2个相邻像素之间的水平或垂直距离)。 3的平方根必须精确到7个有效数字。也就是说,您的计算必须等同于使用ROOT3,这样1.7320505 <= ROOT3 < 1.7320515 计分 以字节为单位的最短代码获胜。 对于那些想知道的人,不包括N = 0和N = 1,因为它们对应于一个圆和一个三叶形,这与适用于N> = 2的模式不太匹配。我希望应对这种挑战的大多数方法都需要为0和1添加特殊情况代码,因此我决定省略它们。

6
Photomosaics或:更换灯泡需要几个程序员?
我从Stack Overflow顶级用户的头像中整理了2025张头像的拼接图。 (单击图像可查看完整尺寸。) 您的任务是编写一种算法,该算法将使用来自45×45像素网格中的48×48像素化身来创建另一幅图像的精确马赛克。 测试影像 这是测试图像。首先,当然是灯泡! (它们在这里不是完整尺寸。单击图像以完整尺寸查看。一半尺寸的版本可用于The Kiss,Sunday Afternoon ...,Steve Jobs和spheres。) 感谢Wikipedia除了光线追踪领域以外的所有领域。 在全尺寸下,所有这些图片的尺寸都可以被48整除。较大的图片必须是JPEG,以便可以对其进行足够的压缩以进行上传。 计分 这是一次人气竞赛。带有马赛克的提交可以最准确地描绘原始图像,应予以表决。我将在一两周内接受投票最高的答案。 规则 您的光马赛克必须完全由从上面的马赛克中选取并排列成网格的48×48像素不变的化身组成。 您可以在镶嵌图中重复使用头像。(实际上是您必须拥有的较大测试图像。) 显示输出,但请记住测试图像非常大,并且StackExchange仅允许发布最大2MB的图像。因此,压缩图像或将其托管在其他位置,然后在此处放置较小的版本。 要确认获奖者,您必须提供灯泡或球形马赛克的PNG版本。这样一来,我就可以验证它们(请参阅下文),以确保您不会在头像上添加额外的颜色以使马赛克看起来更好。 验证器 该Python脚本可用于检查完成的镶嵌图是否确实使用了未更改的化身。只需设置toValidate和allTiles。对于JPEG或其他有损格式,它不太可能工作,因为它可以逐像素精确地进行比较。 from PIL import Image, ImageChops toValidate = 'test.png' #test.png is the mosaic to validate allTiles = 'avatars.png' #avatars.png is the grid of 2025 48x48 avatars def equal(img1, img2): …

4
图像之战
恭喜@kuroineko获得最佳参赛资格,并从@TheBestOne获得200赏金(出色的体育精神!)。 在对立程序之前,编写一个程序以使图像尽可能多地着色。 简要规则 您的程序将得到一个图像,您的颜色和整数N。 每回合,其他程序都会向您发送像素更新,并要求您进行N次更新。 您可以更新颜色像素旁边的任何白色像素。 添加最多像素的程序将获胜。 详细规则 您的程序将获得一个PNG图像文件名,原色和数字N。数字N是您的程序每转可着色的最大像素数。 例: MyProg arena.png (255,0,0) 30 输入图像将是一个矩形,其边长在20到1000像素之间。它由黑色,白色和彩色像素组成。您的程序可以选择一系列白色像素作为自己的颜色,条件是每个新像素必须至少具有自己颜色的四个相邻像素之一。图像最初将至少具有您的颜色的一个像素。它还可能具有未分配任何程序的颜色像素。不使用Alpha通道。 您的目标是阻止对手并将您的颜色写入尽可能多的像素。 程序每转一圈,将在STDIN上接受1条或更多条消息行,并在STDOUT上写一条由像素坐标组成的行。请记住,将STDOUT分配为无缓冲,或者每转一次刷新STDOUT缓冲区。 每个回合中被叫的玩家顺序将被随机分配。这意味着对手(或您的程序)可能连续2回合。 将向您的程序发送colour (N,N,N) chose X,Y X,Y ... X,Y描述播放器程序所填充像素的信息消息。如果玩家不采取任何行动或没有采取有效行动,则不会向您发送有关该玩家采取行动的消息。您的程序还将收到一条有关您自己接受的动作的消息(如果您已指定至少一个有效的动作)。像素0,0位于图像的左上角。 收到时pick pixels,您的程序将X,Y X,Y ... X,Y最多输出N个像素(允许只包含'\ n'的空字符串)。像素必须按绘制顺序。如果一个像素无效,它将被忽略并且不会出现在玩家报告中。您的程序在启动后有2秒钟的初始化时间,但是每回合只有0.1秒的时间来回答并回答,否则它将错过该回合。0.1秒后发送的像素更新将记录故障。5次故障后,您的程序将被暂停,并且不会发送更新或pick pixels请求。 当评委程序从每个非暂停的播放器程序中收到一个空的或无效的像素选择时,图像将被视为完整图像,并且程序将收到“退出”消息。程序必须在收到“退出”之后终止。 计分 图像完成后,法官将给分数打分。您的得分将是您更新的像素数除以该回合的平均像素捕获数(以百分比表示)。 播放器添加到图像的像素数为A。所有 P播放器添加的像素总数为T。 avg = T/P score = 100*A/avg 发布分数 给出了一个参考对手“ The Blob”。对于每个答案,请为机器人标记名称,语言和相对于参考对手的得分(竞技场1至4的平均值)。您的其中一场战斗的图片或动画也会很好。获胜者是与参考机器人相比得分最高的程序。 如果Blob证明太容易被击败,我可以加一个更强的参考对手进行第二轮比赛。 您可能还想尝试4个或更多播放器程序。您还可以针对其他机器人作为答案发布的机器人进行测试。 法官 …

4
一条链上的狗
我从阁楼的窗户向外望去,到邻居家的院子里。他们的狗被拴在院子中央的一个柱子上。狗在院子里跑来跑去,但总是在链的尽头,所以它最终在泥土中留下了痕迹。通常,这条轨道是完美的圆形,但是我的邻居的院子里还有其他一些杆子,狗的链子就被抓住了。每次狗链碰到一根杆时,狗都会绕着新的杆旋转,而无论链的长度如何,半径都会保持不变。由于极,狗和链条的宽度均为零(我的邻居是数学家),因此链条可以无限地绕杆子缠绕,而圆半径不会缩短。如果链条在其路径中,则狗也可以通过链条(但不能穿过项圈)。观察了一段时间后,我决定编写一些代码来模拟邻居的狗。该代码将获取狗被拴在其上的中心杆的位置,邻居院子中其他杆的位置,链的长度以及狗的起始位置,并输出一个图,以指示狗已经把草磨破的小路。您可以假定以下各项的任何组合都是常数(因此不将其作为输入): 狗拴在一起的电线杆的位置 链长 狗的起始位置 太阳正在升起,所以被窗户照亮的阁楼地板上的空间正在缩小,给我的编写代码的空间越来越少。请尽量减少代码的字节数,以便我有足够的空间在阁楼上草拟该代码。 测试用例 在这里,我假设那只狗从链条所在的极点(红点)向南3个单位开始0,0。为了清楚起见,我已经在极点处指示了点,您无需在输出中包括它们。 Poles at 1,2 -1,2 Poles at 0,.5 Poles at 0,1 1,1 -2,1 -1,-.5 Poles at 0,1 1,1

19
画一个
挑战 给定整数的输入(其中),输出从到含)。nñn0&lt;n&lt;500&lt;ñ&lt;500<n<50y=Re((−n)x)ÿ=[RË((-ñ)X)y=\mathrm{Re}((-n)^x)x=−3X=-3x = -3x=3X=3x = 3 其中是复数的实部。Re(p)[RË(p)\mathrm{Re}(p)ppp 注意Re((−n)x)=nxcos(πx)[RË((-ñ)X)=ñXcos⁡(πX)\mathrm{Re}((-n)^x) = n^x \cos{(\pi x)} 输出量 输出可以是您希望的任何形式(例如图像或窗口等)。不允许使用ASCII艺术。 图形不需要轴(以允许没有内置图形功能的语言竞争)。 如果输出图像,则其每侧必须大于500像素。同样,绘图必须尽最大可能填充图像。 地块之间的最小间隔为0.05。 允许使用矢量图形。 例子 输入以下内容2: 输入以下内容1: 您必须将相应的输出放在答案中(n = 1和n = 2)。 获奖 以字节为单位的最短代码获胜。

11
生成一个“ GitHub”头像
背景/说明 注意:正如@HelkaHomba指出的那样,实际的GitHub identicons 实际上并不是随机的,而是基于用户名的哈希值 默认的GitHub头像是5x5像素的图像。随机选择一种颜色,然后使用该颜色在一侧(右侧或左侧,2x5大小)填充随机像素。然后,将这一侧复制并翻转到y轴的另一侧。剩余的未填充的像素为#F0F0F0或rgb(240,240,240)。 然后使用与以前相同的颜色随机填充中心列的像素(大小为1x5)。 输出量 注意:对于这个挑战,我们将忽略包围GitHub头像的空间 该程序应输出5x5像素的图像文件。见http://meta.codegolf.stackexchange.com/a/9095/42499的细节 例子 注意:这些显然是从5x5放大的,因此您可以看到它们 祝好运!

20
法鲁洗牌数组
阿法鲁洗牌是经常使用的魔术到“洗牌”甲板的技术。要执行Faro随机播放,您首先将卡座切成相等的两半,然后将这两个半插入。例如 [1 2 3 4 5 6 7 8] 法鲁洗牌是 [1 5 2 6 3 7 4 8] 可以重复多次。有趣的是,如果重复此次数足够多,您将总是回到原始数组。例如: [1 2 3 4 5 6 7 8] [1 5 2 6 3 7 4 8] [1 3 5 7 2 4 6 8] [1 2 3 4 5 6 7 …
31 code-golf  permutations  card-games  code-golf  graphical-output  random  code-golf  image-processing  color  code-golf  primes  code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

9
线之间
前几天在方形纸上乱涂乱画时,我想到了上面的负数数字字体。如果尚未发现,上述形状之间的间隔会产生黄金分割率1.618033988749。在此挑战中,您的任务是将数字作为输入并完全按照上面的示例所示呈现它。 这些是如何创建的。所有行将位于规则的网格上,因此各个数字由少量的网格单元组成。这是10位数字的形状(此挑战我们将忽略小数点): 是的,这7与顶部的黄金分割率示例不同。我有点搞砸了。我们将继续进行。 请注意每个数字是五个单元格高,三个单元格宽。要渲染数字,您可以想象将其所有数字彼此相邻放置,以使每对数字之间恰好有一个空列。例如,以319输入为例: 注意,我们添加了一个前导和尾随的空列。现在我们反转单元格: 然后,输出应为所得多边形的边界: 当然,您可以通过任何其他方式生成结果,只要呈现的输出看起来相同即可。 输入值 您可以编写程序或函数,将通过STDIN(或最接近的替代方案)的输入,命令行参数或函数参数作为字符串或数字列表。(您不能输入数字,因为那将不允许您支持前导零。) 您可以假设输入中将不再有16位数字。 输出量 输出可以显示在屏幕上或以通用图像格式写入文件。 您可以同时使用光栅图形和矢量图形。 在任何一种情况下,基础网格的单元的纵横比都必须为1(即,单元应为正方形)。 对于光栅图形,每个像元应至少覆盖20 x 20像素。 这些线的宽度不得超过像元大小的10%。由于这里的别名,我愿意留出一两个像素的余地。 线条和背景可以是任何两种可以明显区分的颜色,但是线条所形成的形状一定不能填充(也就是说,内部也应该是背景颜色)。 每个闭环内不得有间隙。 当然,整个结果必须可见。 测试用例 这是10个输入,它们一起涵盖所有可能的相邻数字对,以及每个可能的前导和尾随数字: 07299361548 19887620534 21456837709 39284106657 49085527316 59178604432 69471338025 79581224630 89674235011 97518264003 这是这些的预期结果: 确保您的代码在给出一个数字时也可以工作(我不想在这里包括预期的结果,因为它们应该很明显,并且测试用例部分已经足够膨胀了)。

13
一朵花的图小花
看看这朵洋甘菊花: 漂亮,不是吗?好吧,如果我告诉你这实际上不是一朵花怎么办? 实际上,许多花(包括向日葵,洋甘菊,雏菊和其他花朵)由许多很小的花(头上的黑点)组成。这些微型花称为小花,它们以非常特殊的方式排列。 基本上,第n个小花在头状花序上的位置是(在极坐标中): 其中c = 1(请注意137.508度=黄金角。您不必使用此精确度。) 这会使小花形成称为费马螺旋的螺旋状。小花的位置也与斐波那契数字有关,但这是另一个故事。 所以,这就是挑战。给定一个整数n作为输入,计算前n个小花的位置并绘制它们。这是图形输出,因此我实际上确实希望您在某种类型的窗口中显示这些点,或者将这些点以某种常见的图像格式作为数据输出到STDOUT或文件中。除此之外,这一挑战应该相当简单。这是代码高尔夫球,因此最短的代码获胜。GLHF! 这是输出的示例图片:

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.