Questions tagged «ascii-art»

这项挑战涉及使用文本字符作为绘画来创建或解析图片。通常,它仅使用1963年ASCII标准定义的95个可打印字符(总共128个)。

1
计数坎宁安链
素数总是让人着迷。2300年前,欧几里得在他的《元素》中写道 质数是仅由一个单位测量的质数。 这意味着素只能被 1(或本身)。 人们一直在寻找素数之间的关系,并提出了一些非常奇怪的东西(如“有趣的”)。 例如,一个索菲·热尔曼质数是一个主要p针对2*p+1也是素数。 一个安全素是一种主要p用于哪些(p-1)/2也是黄金,而这正是一个索菲·热尔曼质数的倒退状态。 这些与我们在此挑战中寻找的东西有关。 一个坎宁安链型我是一系列素数,其中除了最后一个的每一个元素是的索菲·热尔曼质数,而除了第一个的每一个元素是一个安全的黄金。该链中元素的数量称为它的length。 这意味着我们从素数开始p计算q=2*p+1。如果也q为质数,则我们有长度为2的I型Cunnigham链。然后进行测试2*q+1,以此类推,直到下一个生成的数字为复合数为止。 II型坎宁安链是按照几乎相同的原理构造的,唯一的区别是我们检查了2*p-1在每个阶段。 坎宁安链的长度可以为1,这意味着2 * p + 1和2 * p-1都不是素数。我们对这些不感兴趣。 坎宁安链的一些例子 2启动长度为5的I型链。 2, 5, 11, 23, 47 下一个构造的数字95不是素数。 这也告诉我们,那5,11,23和47不启动类型的任何链我,因为这将有前述的元素。 2也开始长度为3的II型链。 2, 3, 5 接下来是9,这不是素数。 让我们尝试II11型(之前我们将其排除在I型之外)。 好吧,接下来是下一个,它不是素数,因此该“链”的长度为1,我们不将其计入此挑战。21 挑战 写一个程序或功能,给定一个号码n作为输入,写入/返回的起始数第n个的坎宁安链I或II型的至少长度为2,后跟一个空格,随后链的类型它开始(我或II),然后是冒号,然后是该类型链的长度。万一素数同时启动两种类型的链(类型I 和型 II型),则首先计算型链。 例: 2 I:5 请记住,这n可能是任何类型的先前启动链的一部分,在这种情况下,不应将其视为该类型链的起始编号。 让我们看看这是如何开始的 我们从开始2。由于它是第一个素数,因此我们可以确定没有链从包含的较低素数开始2。 类型I中的下一个数字将是2*2+1 == 5。5是素数,因此我们已经有了至少长度为2的链。 我们将其视为第一条链。那II型呢?下一个号码是2*2-1 == 3。3是素数,因此II型的链长也至少为2。 …

4
计算ASCII Art的端点
您应该编写一个程序或函数,该程序或函数接收表示ASCII艺术作品的字符串作为输入,然后输出或返回输入中端点的数量。 输入将包含字符space - | +(分别具有0、2、2和4个端点)和换行符。例如: -|++- + 在以下情况下,两个相邻的字符相连,因此每个端点丢失1个端点: -- -+ +- | | + + ++ | + | + 第一个例子有 2+2+2+2+1+ 3 = 12 端点。 输入值 输入将包括空格字符,串-,|,+和换行符。 输入长度可以为0长度,并且与上述描述匹配的任何输入均有效(在regex输入中为[ -+|\n]*)。 尾随换行符是可选的。 输出量 单个非负整数,端点数。 例子 输出在其输入的最后一行之后。 + 4 -|++- + 12 +--+ | | +--+ 8 | | +--+-- ||| 12 …

5
确定旋转矩形的尺寸
此堆栈代码段在黑色背景上绘制了一个别名白色矩形,并为其尺寸,位置,角度和网格尺寸提供了参数: <style>html *{font-family:Consolas,monospace}input{width:24pt;text-align:right;padding:1px}canvas{border:1px solid gray}</style><p>grid w:<input id='gw' type='text' value='60'> grid h:<input id='gh' type='text' value='34'> w:<input id='w' type='text' value='40'> h:<input id='h' type='text' value='24'> x:<input id='x' type='text' value='0'> y:<input id='y' type='text' value='0'> θ:<input id='t' type='text' value='12'>° <button type='button' onclick='go()'>Go</button></p>Image<br><canvas id='c'>Canvas not supported</canvas><br>Text<br><textarea id='o' rows='36' cols='128'></textarea><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>function toCart(t,a,n,r){return{x:t-n/2,y:r/2-a}}function vtx(t,a,n){return{x:n.x+t*Math.cos(a),y:n.y+t*Math.sin(a)}}function sub(t,a){return{x:t.x-a.x,y:t.y-a.y}}function dot(t,a){return t.x*a.x+t.y*a.y}function inRect(t,a,n,r){var …

4
用斜线绘制随机游走
编写一个程序或函数,该程序或函数采用正整数N(通过stdin /命令行/函数arg)并打印或返回由N个长步长(由斜杠引出)的二维随机游走的字符串表示形式:(/ \加上空格和换行符)。 2D随机游动从无限整数晶格的原点开始。然后,重复N次,随机地均匀选择基本方向(上,下,左,右),并且助行器在该方向上移动一个单位。采取的最终路径是随机游走。 这是N = 6时的随机游走。请注意,到达(-1,3)时,它会向后移动。 为了用斜线画出它,我们实际上需要将整个对象顺时针旋转45°。斜线版本中未绘制轴以及起点和终点。 / \ \ /\ 像这样的更复杂的步行(N = 20,尽管无法分辨): 会变成这样: / /\/ /\ \/\/ /\/ \/ 您的程序需要生成这些类型的斜杠版本的随机游走。您必须随机选择步行要走的每个新方向,因此程序每次运行一定的N几乎肯定会产生不同的步行。(伪随机性很好。) 最低和最高斜杠上方或下方不得有任何空行(除了一个可选的尾随换行符),并且最左边和最右边的斜杠之前或之后绝对不应有空格的空列。 因此,对于N = 1,输出始终为/或\,但永远不会像这样: / 只要不超过最右斜杠的列,就可以使用尾随空格。 字节最少的提交将获胜。这是一个方便的字节计数器。

1
在正方形中找到对称
编写一个包含正整数列表的程序或函数。这些整数均表示2D平面上正方形的边长。每个正方形都可以移动到平面中的任何整数坐标,但不能旋转,也不能与其他正方形重叠。 对于每个正方形(不包括用于空白的空格)使用不同的可打印ASCII字符,您的程序/函数需要打印具有水平或垂直反射对称线的正方形的任何单个排列。如果不存在这样的安排,则不应该打印任何内容。 正方形是不同的字符,因此可以区分它们。只有所有正方形的并集形成的形状才需要对称。您可以假定该列表将包含不超过94个元素(因为有94个字符)。 例如,如果输入为[2, 1, 2, 2, 2],则可能的输出为: DD-- DD-- Z FFPP FFPP 此形状具有一条反射对称的水平线;它的上半部分和下半部分是镜像。还有其他一些可能性:(请注意,不需要触摸正方形,并且只要没有两个正方形由同一字符组成,就可以使用任何字符。) 55 55 %% %% @ HH HH (( (( G 11 33 11 33 22 44 22 44 对称线也可以是字符之间的边界,例如[2, 4]: !!!! !!!! ++ !!!! ++ !!!! 某些正方形无法对称排列,例如[1, 2, 3]: AAA BB C AAA BB (these can't …

7
使用L形的Tromino将2 ^ N x 2 ^ N网格平铺
当初次向学生讲解数学归纳的证明技术时,一个常见的示例是将2个N ×2 N的网格与L形的Tromino砖砌在一起的问题,从而将一个预定的网格空间留空。(N是一些非负整数。) 如果您还不知道,我将交给您查看证明。有很多讨论它的资源。 您的任务是编写一个程序,该程序使用N的值以及要保留为空的网格空间的坐标,并输出所生成的Tromino平铺网格的ASCII表示形式。 角色O将填充空白区域,并且我们的Tromino旋转4次将如下所示: | +- | -+ -+ | +- | (是的,它可以是含糊其+与去-和|某些安排,但没关系。) 您的程序必须在N = 0(对于1×1网格)下工作,至少N = 8(对于256×256网格)。将给出x和y值,它们是的坐标O: x是水平轴。x = 1是左侧网格边缘,x = 2 N是右侧网格边缘。 y是垂直轴。y = 1是顶部网格边缘,y = 2 N是底部网格边缘。 x和y都始终在[1,2 N ] 范围内。 因此,对于给定的N,x和y,您的程序必须输出2 N ×2 N的网格,该网格完全用L形的三角骨平铺,但x,y网格坐标为O。 例子 如果N = 0,则x和y必须都为1。 O 如果N = 1,x = 1,y …

4
螺旋编程
编写一个命名函数或程序,该函数或程序接受单个整数N并打印(至STDOUT)或返回(作为字符串)下面螺旋的前N个条,从中心的竖线开始并顺时针向外螺旋。 _______________ / _____________ \ / / ___________ \ \ / / / _________ \ \ \ / / / / _______ \ \ \ \ / / / / / _____ \ \ \ \ \ / / / / / / ___ \ \ \ \ \ \ …

6
根据规范生成矩形
介绍 这项挑战的灵感来自我的2D模式匹配语言Grime。基本上,您将获得一个描述二维字符网格的“语法”,而您的工作是根据该语法生成​​一个网格。另外,从某种意义上说,网格应尽可能小。 输入值 您的输入是一个包含小写ASCII字符以及符号|和的字符串-。为简单起见,输入不包含重复的小写字符。字符串是一类矩形字符网格的规范,它使用堆栈从左到右进行解析,如下所示。 给定一个小写字符c,将任何一个m×n字符的网格压入堆栈。cm, n ≥ 1 给定一个管道|,弹出两个网格A并B从堆栈中弹出(B位于顶部),然后将AB通过串联B而获得的网格推到的右侧A。这要求A并B具有相等的高度。 给定一个连字符-,弹出两个网格A并B从堆栈中弹出(B位于顶部),然后将A/B通过串联B而获得的网格推到的底部A。这需要A并B具有相等的宽度。 确保在解析过程中对进行某些选择m和选择n(每个字母可能有所不同),输入规范正确地描述了一些矩形,该矩形最后留在堆栈上。 输出量 您的输出是由输入指定的字符的矩形网格。在删除任何行或列将使其无效的意义上,网格必须最小。您可以返回以换行符分隔的字符串(带或不带尾随换行符),2D字符数组或字符串数​​组,以最方便的格式为准。 请注意,您不需要完全如上所述地处理输入;唯一重要的是您的输出正确。 例 考虑规格 par-s||e- 首先,我们选择推1×2的矩形p,和1×1的矩形a和r(这样做的原因很清楚更高版本)。然后,我们弹出a和r矩形,并推动它们的垂直串联 a r 接下来,我们推1×2的矩形s,弹出它和上面的矩形,并推动其横向拼接 as rs 然后,我们弹出该矩形和该p矩形,并推动它们的串联 pas prs 最后,我们推入的3×1矩形e,将其弹出并上方的矩形,然后推入垂直串联 pas prs eee 这是程序的输出,或者是至少一种可能性。请注意,即使 ppas ppas pprs eeee 也是由规范生成的,它不是有效的输出,因为可以删除许多行和列。 作为一个更微妙的例子,考虑 co|m|p|il|e|r|- 此规范生成矩形 comp iler 这是有效的输出。但是,它也会产生 commp iiler 这也是有效的,因为没有使无效的行和列都无法删除。 规则 您可以提供完整的程序或功能。最低字节数获胜,并且不允许出现标准漏洞。 额外的测试案例 您可以使用它们来测试您的程序。 Input: …

11
让我成为字母树
介绍 在大多数字体中,除大写字母之外,所有大写字母字符BDO都有单行,大约接触到字符边界矩形的四个角中的一些:ACEFGHIJKLMNPQRSTUVWXYZ。 例如,两条腿A“触摸”角色的左下角和右下角。同样,C触摸其右上角和右下角(虽然有点弯曲但足够靠近)。L仅用单行触摸它的左上角和右下角。的左下角L是一个顶点,而不是单条线的末端。 这是一张表格,根据我(希望您)看到的Stack Exchange字体,字符触摸了哪些角落。1用于左上,2用于右上,3左下,4右下。 A: 3 4 C: 2 4 E: 2 4 F: 2 3 G: 2 H: 1 2 3 4 I: 1 2 3 4 J: 1 3 K: 1 2 3 4 L: 1 4 M: 3 4 N: 2 3 P: 3 Q: 4 …

3
让我成为窗口管理员!
我讨厌代码膨胀! 因此,我决定用高尔夫球版替换Windows 7系统。但是,我知道这并不容易,所以让我们首先构建一个原型。它将获取用户的窗口列表,并在标准输出上使用伪图形显示来显示它们。 例如:用户输入: 0,0,15,10 15,10,20,15 10,13,15,15 9,1,16,3 17,5,20,7 11,2,17,4 15,4,19,6 13,3,18,5 CodeGolf®Window Manager™输出: ────────────┐ │::::::::┌─────┴┐ │:::::::::││┌────┴┐ │::::::::└─┤:┌───┴┐ │:::::::::::└─┤::::├┐ │:::::::::::::└─┬──┘├┐ │:::::::::::::::├─┬─┘│ │:::::::::::::::│└──┘ │:::::::::::::::│ │:::::::::::::::│ └────────────┼ │::::│ │::::│ ┌────┤::::│ │::::││:::│ └────┴────┘ 输入: 来自标准输入(或者,如果您的系统没有stdin,那么任何可以提供多行输入的方法) 每行包含4个数字,以逗号分隔-窗口的坐标 前两个数字:左上角;最后两个数字:右下角 使用x,y符号 输出: 将其写入标准输出(或者,如果您的系统没有stdout,则显示等宽文本的任何内容) 使用代码页437中的单个框图绘制字符绘制窗口边界 稍后在输入中指定的Windows使先前指定的窗口模糊 用冒号填充窗口: : 开头和结尾的空格都可以,只要它们不中断窗口的对齐 笔记: 我要支持的最大分辨率:76(水平)乘57(垂直) 无需支持错误的输入 最大窗口数:255(如果需要限制) 我的Windows 7 cmdShell默认情况下显示代码页437个字符;如果有人可以在linux上(使用xterm或其他方式)执行此操作,请在此处进行描述 作为参考,字符代码为: …

1
Code Golf:宇宙飞船的命运是什么?[ASCII艺术版本]
背景 在一个遥远的星系(可能还有一个宇宙)中……有一艘太空船和一堆行星。船上的故障导致飞船的燃料用完了。它现在正以危险的缓慢速度在附近的行星簇附近移动,必须从中逃脱!机组人员的命运是什么? 挑战 您是USS StackExchange的首席程序员。因此,您希望编写一个模拟器来揭示您是否注定要坠落到行星上,逃离行星系统或永远停留在轨道上。 但是,您的飞船爆炸了,这意味着计算资源非常有限。您的程序必须尽可能小。同样,这意味着输入要运行的仿真的唯一可能方法是通过ASCII艺术。 模拟 在多元宇宙的这一象限中,为了适应ASCII艺术,对物理定律做了些微改动。这意味着宇宙被分为细胞。运动将以单元为单位进行描述,时间将以时间步长为单位。 船本身有动力。如果船在上一个时间步中在x轴上移动了+2个像元,在y轴上移动了-1个像元(简称为(2,-1)),并且没有重力场,则该船将按照在下一个时间步中保持相同的速度。 将有几颗行星,所有这些行星都在紧邻其的八个单元上施加引力场,这将影响船的速度并将船拉近行星。正好位于行星的“北”,会导致以(-1,0)的力将飞船的一个单元向“南”拉。只是行星的“东北”,将导致以(-1,-1)的力将飞船一个单元拉向“南”,将一个单元拉向“西”。 重力场为船舶离开重力时的动量增加了一个矢量。如果一艘船以前移动了(2,-1)个像元,而现在处于(-1,1)的重力场中,那么在下一个步骤中,它将移动(1,0)个像元。如果船靠近多个行星,则将添加多个矢量。 输入值 在STDIN上,您将收到行星系统的ASCII艺术作品表示,它将显示行星的坐标和船的当前速度。将有多个@符号形式的行星,而将有一个以av ^ <>符号形式的宇宙飞船。选择船的符号表示船的当前速度(在添加重力之前)。例如,<表示一个单元向西的速度,而^表示一个单元向北的速度。所有空白区域都由句点组成,这些句点将每行填充为相同的宽度。空行代表输入的结尾。这是输入的示例: ................. ...@.@........v.. ......@..@..@@... ..@.............. .......@..@...... ................. 输出量 输出将是STDOUT上的一个字,它将告诉船是逃避重力,坠落到行星上还是永远绕轨道运行。 逃避重力的定义是船舶从地图上移开。如果船逃脱,那么您的程序必须打印单词“ escape”。 崩溃着陆是指船舶在某个时间步中直接越过行星或在同一单元中结束时。请注意,仅计算船舶每个时间段的位置是不够的。速度为(5,5)的船舶将撞向位于(1,1)的行星,即使直接计算将意味着它永远也不会访问该单元。但是,速度为(5,6)的飞船不会撞到地球上。如果您的飞船坠毁着陆,那么您的程序必须打印“ crash”一词。 轨道运动可能是最难检测到的。每当飞船以相同的速度两次访问相同的单元时,就会发生轨道运动。如果飞船绕行,则应打印单词“ orbit”。 这是以上示例的输出: escape 说明 这是一张地图,显示上例中太空船在每个时间步中的移动位置: ^ ................. ...@.@........v.. ....^.@..@..@@... ..@..<.<<<.<.v... .......@..@...... ................. 它向南走,向西走,沿着走廊走,向北走,然后由于重力而狭窄地逃到了高速行星之间。 更多案件要检查 ... ^@. ... orbit ........... .>@.@...... .@......@.. ....@...... …


6
打印数字三角波
给定波形的幅度和周期,打印波形。有关更多详细信息,请参见示例输出。波形总数等于周期,每个波形的高度等于振幅。幅度和周期小于10。您可以忽略尾随空格,但不能忽略前导空格。 Sample Input 3 2 Sample Output 3 3 232 232 12321 12321 12321 12321 232 232 3 3

18
步行者加入!-艾伦·沃克(Alan Walker)的徽标
您可能会从艾伦·沃克(Alan Walker)曾经流行的歌曲《衰落》(Faded)中了解到。现在,他的“追随者”被称为沃克,并且有一个徽标,这是简化版本: \\ \\ //\\ \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // //\\ \\ // \\// // \\ \\// // // \\ \\ //\\ // \\ //\\ \\// \\// \\ \\ 这项挑战的目标是印刷该徽标。 规则: 如果您按照元标准从函数返回字符串列表,请提供一个页脚,将其打印到屏幕上。 以上徽标的所有字符都必须存在。没有捷径! …

30
ASCII Meme箭头生成器
技术指标 给定一个数字n,输出大小为的ASCII“模因箭头”(大于符号,>)n。 n 始终是一个大于0的正整数。 例子 n = 2 \ \ / / n = 5 \ \ \ \ \ / / / / / 样例代码 这是一个用Crystal编写的示例程序,可以返回正确的结果。以方式运行./arrow 10。 arrow.cr: def f(i) i.times { |j| j.times { print ' ' } puts "\\" } i.times { |j| (i-j-1).times { print ' …

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.