Questions tagged «ascii-art»

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

5
使方括号
每个程序员都知道方括号[]{}()<>真的很有趣。为了加剧这种乐趣,可以将一组交织在一起的括号转换成可爱而模糊的图表。 假设您有一个包含方括号的字符串,例如[{][<(]})>(())。第一步是将琴弦顺时针旋转45度。(在Mathematica中,几乎可以使用来完成Rotate[ur_string,-pi/4])。这是第一步的结果: [ { ] [ < ( ] } ) > ( ( ) ) 接下来,在每个字符之间添加一个对角线空间。 [ { ] [ < ( ] } ) > ( ( ) ) 接下来,从最左边的括号开始,并在其与犯罪伙伴之间画一个正方形。 +---+ | | | { | | | +---+ [ < ( ] } ) > ( ( …

29
它是前缀代码吗?
在信息论中,“前缀代码”是一个字典,其中所有键都不是另一个的前缀。换句话说,这意味着没有一个字符串以其他任何字符串开头。 例如,{"9", "55"}是前缀代码,但{"5", "9", "55"}不是。 这样做的最大优点是,可以将编码的文本记下来,并且它们之间没有分隔符,并且仍然可以唯一地解密。这在诸如Huffman编码之类的压缩算法中得到了体现,该算法始终会生成最佳的前缀代码。 您的任务很简单:给定一个字符串列表,确定它是否是有效的前缀代码。 您的输入: 将是任何合理格式的字符串列表。 仅包含可打印的ASCII字符串。 将不包含任何空字符串。 您的输出将是一个true / falsey值:如果是有效的前缀代码,则为True,否则为falsey。 这是一些真实的测试用例: ["Hello", "World"] ["Code", "Golf", "Is", "Cool"] ["1", "2", "3", "4", "5"] ["This", "test", "case", "is", "true"] ["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011", "0110", "11001", "00110", "10011", "11000", "00111", "10010"] 以下是一些错误的测试案例: ["4", "42"] …

5
重力模拟器
声明 您会得到一系列落入2D网格的球的静止图像。这个网格被不可变和坚不可摧的墙壁包围着,因此所有动作都包含在其中。您的任务是确定重力完成所有工作后场景的状态是什么。 网格内的元素 - 落地,不会改变落球的方向。 \ 向右滑动,可将球向右(一)的位置更改。 / 左滑动,改变球向左一(1)位置的路径。 o 一个球。 规则 球掉了。 地板和滑梯都不会掉落。 如果球撞击滑梯,使其滑过墙壁(\#或#/),或穿过地板,则滑梯将充当地板。 当一个球击中另一个球时,它将变成一个球,但将其力量增加到两个球的总和。 新球(已加入)将继续照常运行。 当球不再移动时,将其替换为力量。 球的力量永远不会超过9。 输入项 网格将以字符串变量的形式给出,其名称以您选择的语言中最短的名称为准。默认情况下,我们将使用它a作为输入。输入样本,与收到的完全一样: ##########\n# \ #\n#o #\n# - -\o #\n#/- \ #\n# \oo-/\#\n#-/ \ /#\n# \ \ #\n# /#\n########## 对于生成的随机网格,请使用https://repl.it/B1j3/2。请改用我生成的页面(没有广告,没有废话,只有输入和输出) 注意换行符为\n。将输入打印到屏幕上(挑战不是必需的)将显示如下内容。尽管我在安全空间旁边放置了四个难题。 ########## ########## ########## ########## # \ # # o -/# # …

30
帮我打开盒子
我有一个ASCII艺术框,需要一个程序来打开它。 例子 输入: ------- | | |_____| 输出: / / / / / / / | | |_____| 规格 第一行仅包含-,其中至少3个 中间的行将以|空格开头,以| 所有中间行将相同 最后一行将以|have 开头,_以a结束| 所有行的长度将相同 打开盒子: 每一个-都应由/升序和位置替换。

11
这个问题有起有落
输入将包含以下字符: ^:上一个 v:下去一个 ▲或k:上两个 ▼或j:下两个 例如,以下输入: ^^▲^v▼▲^^v 将产生以下输出: ^ ^ ^ v ▲ v ▲ ^ ▼ ^ \e[B不允许使用诸如游标之类的转义序列。您必须使用空格和换行符生成输出。 这里还有一些测试用例。 ▲v^v^v^v^v^v^v^v▲ ▲ ▲ ^ ^ ^ ^ ^ ^ ^ v v v v v v v v ^^^^^^^▲▲▲▼▼▼vvvvvv ▲ ▲ ▼ ▲ ▼ ^ ▼ ^ v ^ v …

7
抗锯齿ASCII艺术
背景 ASCII艺术是通过使用ASCII文本形成形状来创建图像的实践。 混叠是由ASCII艺术的大“像素”(即字符大小)产生的效果。图像变得块状且难以看清。抗锯齿功能通过创建渐变并软化ASCII艺术作品的硬边来消除这种影响。 挑战 您面临的挑战是编写尽可能最短的程序,该程序将花费一部分ASCII文字并输出经过抗锯齿的版本。 什么样的抗锯齿? 所有ASCII文字都将由两种类型的符号组成:空格和非空白。对于每个非空白字符,您的程序必须确定它是否处于需要消除锯齿的位置。如果是这样,则需要用正确的字符替换它。如果不是,则字符保持不变。 您如何知道角色是否需要消除锯齿?答案取决于字符上方,下方,左侧和右侧的字符(而不是对角线)。下面是当需要抗混叠的一个图表,其中?和x可以代表任何非空白字符。 x? -> d? ? ? ?x -> ?b ? ? ? ? ?x -> ?F ? ? x? -> Y? x -> ; Note: This character has been changed from _ to ; ? ? ? ? x -> V ?x -> …

23
蛮力配电盘
前几天,我们的团队去了一个逃生室。难题之一是由六个机械开关组成的板,您必须找到打开和关闭的正确组合才能解锁盒子,如下所示: -v-v-v- -v-v-v- 作为开发人员,我们认为尝试2 ^ 6 = 64个组合中的每个组合要比实际解决难题更有效。因此,我们分配了一个可怜的家伙进行一些二进制计数: -v-v-v- -v-v-v- -v-v-v- -v-v-^- -v-v-v- -v-^-v- -v-v-v- -v-^-^- 等等。 挑战 编写一个程序,给定所有开关都按上述格式设置为关闭的字符串,从而以任意顺序生成打开和关闭的所有组合。 您可以编写完整的程序或函数。因此,您的程序可以通过stdin,文件或单个字符串参数接收输入,然后返回或打印输出。如果返回,则输出可能在列表/数组/等中。而不是单个字符串。如果输出为单个字符串,则板子之间应使用换行符分隔(允许使用尾随换行符)。 输入字符串将与正则表达式匹配,r'((-v)+-)(\n(-v)+-)*'并代表一块板,所有开关均关闭。这意味着无零情况,并且开关左对齐。每行可能没有相同数量的开关。 每个输出板应具有与输入完全相同的格式,除了v可以根据需要用^代替。输出板可以用任意数量的换行符分隔。 由于运行时间自然是开关数量的O(2 ^ n),因此您的代码将不会在任何排列的10个以上的开关上进行测试。 这是代码高尔夫球,因此以字节数为单位的最短代码获胜。 样本输入和输出 输入: -v- 可能的输出: -v- -^- 输入: -v- -v- 可能的输出: -^- -^- -^- -v- -v- -^- -v- -v- 由于要为更大数量的开关检查答案非常繁琐,因此这里有一个Python脚本作为健全性检查工具。(不幸的是,我提供了一个当前注释掉的代码段,以在给定的输入文件中生成预期的输出,以备您需要更多的测试用例。)将输入字符串放在名为“ input”的文件中,并将换行符分隔的输出(对不起,没有列表格式)放在同一目录中的名为“ output”的文件中,然后运行python3 sanitycheck.py。

30
车道上的数字
输入: 整数列表 输出: 将每个数字(和减号)按顺序放在自己的通道中-0123456789,忽略任何重复的数字。 例: 输入: [1,729,4728510,-3832,748129321,89842,-938744,0,11111] 输出: -0123456789 <- Added as clarification only, it's not part of the output 1 2 7 9 012 45 78 - 23 8 1234 789 2 4 89 - 34 789 0 1 挑战规则: 数字中的任何重复数字都将被忽略。 I / O可以采用任何合理的格式。输入可以是字符串或字符数组的列表/数组。输出可以是字符串,字符,字符矩阵等的列表。 尾随空格是可选的。 任意数量的前导或尾随新行都是可选的(但在行之间不可以)。 输入将始终包含至少一个整数 你必须至少支持一个整数的范围-2,147,483,648,虽然2,147,483,647(32位)。 输入列表将永远不会包含-0,00(或两个以上的零)或带有前导零的整数(即012)。 …

17
映射输入的ASCII字符
确保看到另一个挑战,反向ASCII字符映射! ASCII字符集(美国信息交换标准代码)是使用最广泛的字符编码标准。ASCII码表示计算机,电信设备和其他设备中的文本。 挑战 您面临的挑战是在用户输入ASCII字符集时打印它们的映射。GIF: 用户输入每个ASCII字符后,输出应如下所示: 映射 每个字符在16x6逻辑网格上都有一个分配的位置,从左上角的空格字符开始,然后换行以使数字0出现在其下方。 收到可打印的ASCII输入时,请在其分配的屏幕位置打印该ASCII字符,而不删除当前在屏幕上的任何字符。 规则 您的程序仅需要将可打印的ASCII字符映射0x20到0x7E。 在输入所有可打印的ASCII字符之前,您的程序不得终止并继续将字符映射到屏幕。从这里,您的程序可以终止,也可以运行到Neverland中。 您的程序可以按照您喜欢的任何方式将字符映射到电子表格,表格,控制台窗口或图形窗口。 无论您如何显示映射,都必须实时更新(一旦收到用户输入)。 如果您的程序没有以静默方式读取输入,则必须将光标移开,这样文本就不会成为地图的障碍。 救命 这是我用来生成GIF的伪代码算法: loop forever c = input y_coord = c / 16 x_coord = c - y * 16 if c is printable print c at (x_coord * 2 + 1, y_coord + 1) end if …

1
生成金字塔方案代码
金字塔计划是@ ConorO'Brien开发的一种语言。在金字塔计划中,您编写的代码如下所示: ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ /123\ --- ----- 现在,该代码具有两个明显的特性:很难解析,也很难编写。Conor解决了第一个问题,但是解决第二个问题将是您的工作。 上面的代码由PyramidScheme解释器处理为嵌套的字符串数组,如下所示: [["+", ["9123", "3"]], "3"] 您的任务是编写一个给定嵌套字符串数组的程序或函数,输出或返回重新创建的PyramidScheme代码。您可以假设输入数组将始终有效。 金字塔是等腰三角形。顶部是^,侧面与/和对角倾斜\,底部是-。两个底角为空或包含其他金字塔的起点,它们是自变量。中间充满了金字塔的名称,忽略了换行符。 解析器将代码转换为可用格式的方式如下。首先,它会扫描顶级金字塔。如果不带参数,则用单个字符串表示它并继续前进。否则,它表示为数组["name",[arg1,arg2]]或["name",[arg1]]。参数是金字塔左下角和右下角的金字塔,它们可以是字符串,也可以是如上所述的更多数组。您可能会注意到它有点像Lisp,在这种情况下,您可能还注意到了语言名称的双关语。金字塔被完全表示后,解析器将移动到下一个金字塔。 这是代码高尔夫,最短的代码获胜! 测试用例:这些不是唯一有效的输出,它们是有效输出的示例。 [["+", ["9123", "3"]], "3"] ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ /123\ --- …

6
评分Tarzan的奥林匹克葡萄摇摆常规
奥运会的葡萄树摆动者在标准的树上执行常规活动。特别是,“标准树” n具有0向上穿过的顶点n-1以及将每个非零顶点连接a到其n % a下面的顶点的边。因此,例如,标准树5如下所示: 3 | 2 4 \ / 1 | 0 因为5除以3时的余数为2,所以5除以2或4时的余数为1,而5除以1时的余数为0。 今年,泰山将捍卫他的金新套路,每个始于顶点n - 1,秋千到顶点n - 2,继续顶点n - 3,等等,直到最后他卸除到顶点0。 例行程序的分数是每个挥杆(包括拆卸)的分数之和,挥杆的分数是树内起点和终点之间的距离。因此,Tarzan在标准树5上的例程得分为6: 从摇摆4到3得分3分(向下,向上,向上), 从摇摆3到2得分(下降)一分, 从摆动2到1得分1分(向下),并且 从下来1,0得分为1分(下降)。 编写一个程序或函数,给定一个正整数n,该程序或函数将计算Tarzan例程在Standard Tree上的得分n。样本输入和输出: 1 -> 0 2 -> 1 3 -> 2 4 -> 6 5 -> 6 6 -> 12 7 -> 12 8 …
32 code-golf  math  number  number-theory  code-golf  code-golf  restricted-source  programming-puzzle  css  code-golf  parsing  code-golf  random  encryption  code-golf  ascii-art  fractal  code-golf  math  code-golf  sorting  graph-theory  path-finding  permutations  code-golf  tetris  code-golf  card-games  code-golf  math  sequence  rational-numbers  code-golf  chess  code-golf  string  geometry  grid  code-golf  ascii-art  grid  code-golf  sequence  integer  code-golf  math  number-theory  packing  polyomino  code-golf  math  code-golf  string  quine  permutations  code-golf  math  code-golf  image-processing  optical-char-recognition  code-golf  string  kolmogorov-complexity  sequence  integer  code-golf  number  permutations  palindrome  code-golf  kolmogorov-complexity  code-golf  number  sequence  string  fewest-operations  code-golf  string  kolmogorov-complexity  sequence  primes  code-golf  string  ascii-art  code-golf  string  number  alphabet  code-golf  counting  code-golf  number  sequence  number-theory  primes  code-golf  subsequence  word-search 

5
斜体化ASCII艺术
给定ASCII艺术图片的输入,输出斜体的ASCII艺术。 斜体化ASCII文字: 在最后一行之前插入零空格,在倒数第二行之前插入一个空格,在倒数第三行之前插入两个空格,依此类推。 删除可能已创建的所有多余的前导空格。也就是说,如果每行n前面至少有空格,请n从每行的开头删除空格。 更换所有\以s |,所有|以s /,和所有/以s _。保持现有_相同。 确保输入内容仅包含字符\|/_和空格。 例如,输入 /\/\/\ /\/\/\ /\/\/\ /\/\/\ /\ /\ /\ /\ /\ /\ /\/\/\ /\/\/\ /\ /\ /\/\ /\ /\ /\ /\ /\ /\ /\ /\/\/\ /\/\/\ 必须输出 _|_|_| _|_|_| _|_|_| _|_|_| _| _| _| _| _| _| _|_|_| _|_|_| _| _| _|_| …

13
可视化位编织
神秘的编程语言Evil对字节值进行了有趣的操作,称之为“编织”。本质上是字节的八位的排列(因为模式是对称的,所以我们从哪一端开始计数并不重要): 位0移至位2 位1移至位0 位2移到位4 位3移至位1 位4移至位6 位5移至位3 位6移至位7 位7移至位5 为方便起见,这是置换的其他两种表示形式。作为一个周期: (02467531) 并作为映射对的列表: [[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]] 你的任务是可视化这个排列,使用盒绘图字符─,│,┌,┐,└,┘,┼(Unicode代码点:U + 2500,U + 2502,U + 250C,U + 2510,U + 2514,U + 2518,U + 253C)。该可视化应满足以下约束: 第一行和最后一行完全是: 0 1 2 3 4 5 6 7 在这两者之间,您可以根据需要使用任意多行,每个行最多可以包含15个字符以适合您的方框图字符(您至少需要4行)。这些行应在第一行中的一个数字下方垂直开始,并在最后一行中的相应数字的垂直上方结束。八线必须连接,并且只能交叉通过┼(始终是交叉,绝不能有两条接触的转向线)。线条的确切路径取决于您(而寻找特别适合高尔夫球运动的布局是此挑战的核心)。一个有效的输出将是: 0 1 2 3 4 …

12
产生帕斯卡的辫子
这是帕斯卡的辫子: 1 4 15 56 209 780 2911 10864 40545 151316 564719 1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841 1 4 15 56 209 780 2911 10864 40545 151316 564719 我完全弥补了。据我所知,布莱斯·帕斯卡(Blaise Pascal)没有辫子,如果他这样做,那可能是由头发而不是数字制成的。 它的定义如下: 第一列1中间有一个。 第二列1的顶部和底部都有一个。 现在,我们在将数字放在中间或将数字的两个副本放在顶部和底部之间进行交替。 如果数字位于顶部或底部,则为两个相邻数字的总和(例如56 = 15 + 41)。如果您稍微倾斜头部,这就像是Pascal三角形中的一个台阶。 如果数字在中间,则它将是所有三个相邻数字的总和(例如41 = 15 + …

30
画一个沙漏
再次受到编程101任务的启发,这是另一个挑战。 输入: 一个正整数n >= 3。(必须是奇怪的) 输出: n星号行,其中第一行有n星号,每条新行都比前一行少两个星号。直到打1星号。从那里开始,每个新行都比之前的行多两个星号,直到回到n星号为止。空格或类似空格之类的东西必须用于对齐星号,以使其看起来真的像沙漏。 一般规则: 尾随换行符是允许的,但不必使用。 缩进是必须的。 这是代码高尔夫球,因此最短答案以字节为单位。 由于该课程是用C ++讲授的,所以我很想看到C ++的解决方案。 测试案例(n = 5): ***** *** * *** *****

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.