Questions tagged «printable-ascii»

该解决方案只能包含95个可打印的ASCII字符(〜的空格)。根据挑战,也可以使用制表符和换行符。

11
取字符串的平方根
动机 在此挑战中,您的任务是将两个字符串相乘,这自然会引入一种取字符串平方根的方法。 它是如何工作的? 给定一个字符串(例如pub),您需要做的第一件事就是确定每个字符的ASCII代码: "pub" -> [112, 117, 98] 接下来,[0..94]通过减去32每个值将这些代码映射到范围: [112, 117, 98] -> [80, 85, 66] 现在,您需要为每个值找到其根模95(例如40*40 % 95 = 80,也可以选择55): [80, 85, 66] -> [40, 35, 16] 最后,您将其映射回范围[32..126]并将其转换回字符串: [40, 35, 16] -> [72, 67, 48] -> "HC0" 的确"HC0" ⊗ "HC0" = "pub",您可以从这里的其他挑战中找到解决方案,以此来验证。 那些熟悉模算术的人可能注意到平方根模数95并不总是存在,例如,没有根2。在这种情况下,未定义字符串的平方根,并且您的程序/函数可能会崩溃,不确定地循环等。 为了方便起见,以下是具有平方根的字符列表(第一个是空格): !$%&)+03489:>CDGLMQVW]`bjlpqu 规则 您将编写一个将字符串(或字符列表)作为参数并返回任何平方根(如果存在)的程序/函数 您可以假设输入始终具有平方根 …

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 …

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 ........... .>@.@...... .@......@.. ....@...... …


3
Brainfuck中的按位运算符
您的任务是为以下每个二进制运算符创建一个Brainfuck程序。每个程序应从输入中获取一个或两个8位数字(A和B)并计算指定的运算: A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A 您不必全部实施5。得分的计算方式为: #totalCharacters + {4000 * #problemsNotCompleted} 因此,有效分数是从零(最佳)到20,000(未完成)。 我不在乎您将结果存储在哪里,也不管您是否保留输入。假设8位单元以及仅在右侧需要的空单元数。 您可能会认为数字已经在最适合您的任何内存位置中,因此您无需担心IO操作。
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

1
编写代码滑动拼图!
最可识别的滑动拼图是十五个拼图。它具有4 x 4网格,15个图块和一个空白网格空间。磁贴只能移动到空白区域,并且必须始终与网格对齐。 让我们定义一个广义的滑动拼图,它是一个二维的W宽度,高为H个高网格(W,H均为正整数),其中包含一些相同的未标记图块(在0到W × H之间),对齐到网格,排列为任何方式(不重叠),用空的网格空间填充其余区域。 例如,如果W和H为3,并且图块为T,并且空白处E为许多可能的侧板拼图布置之一,则 TTT TET EET 对于这些难题,有4种可能的举动:将所有事物推高,将所有事物推低,将所有事物推向左侧或将所有事物推向正确。沿某个方向“平移”会使所有图块尽可能沿该方向移动,直到它们碰到另一个图块或网格边界为止。有时推不会改变网格的布局, 如果将示例网格向右推,则结果为 TTT ETT EET 向左推的结果是 TTT TTE TEE 推倒结果是 EET TET TTT (请注意,最左边T的都已移动) 在这种情况下,推挤不会改变网格布局。 请注意,由于图块是无法区分的,因此这些难题没有“已解决”状态。还要注意,难题可能始于一旦做出推就不可能回到的布局(例如,在3 x 3网格中间的一个图块)。 挑战 仅使用可打印的ASCII编写两个矩形代码块,宽度均为M个字符,高度为N个字符(对于任何正整数M,N)。一个代码块将代表一个滑动拼图块,另一个代码块将代表一个空的网格空间。 将这两个代码块排列成W by H网格将创建一个代码表示的滑动拼图,该拼图可以保存为文本文件并作为常规程序运行。在运行时,此类程序应通过stdin提示用户输入1到4之间的数字;1表示向上,2表示向下,3表示左侧,4表示右侧。当用户键入他们的编号并按回车键时,程序将计算如何向该方向推其源代码图块,并将新的拼图布局保存到文件(新文件或同一文件)中,然后终止。 每次推后生成的新的滑动拼图代码文件都可以无限期地重复此过程。 例 假设我的图块代码块看起来像这样 // my // tile 我的空网格空间代码块看起来像这样 //empty //space (M = 7,N = 2,这当然不是实际代码) 这两个模块的任何有效的滑动拼图布置都应该以我使用的语言创建一个程序,该程序可以运行以使用户朝某个方向推。 示例网格的代码表示为: …

30
打印带有垂直单词的字符串
您的任务是获取一个由ascii字符组成的输入字符串,并将该字符串输出为一系列由空格分隔的垂直单词。一个例子如下所示: 给定字符串: Hello, World! My name is Foo. 输出应为: H W M n i F e o y a s o l r m o l l e . o d , ! 如果您的程序正确处理了需要环绕终端的字符串,则将获得10分的奖励积分,我们将其设置为80个字符。 如果您的程序也可以反向执行50分!

2
Code Golf:宇宙飞船的命运是什么?[浮点版本]
这个问题比ASCII艺术版本要难一些。没有艺术,现在您可以进行浮点运算了! 挑战 当船上发生天文爆炸时,USS StackExchange正在穿越cg-00DLEF行星的重力场。作为该船的首席程序设计官,您的工作是模拟船的轨迹,以预测您是否会被迫撞倒cg-00DELF的太阳系中的土地。在爆炸期间,您的船严重受损。由于飞船的免费DEEEPRAROM *有限,因此您必须以尽可能少的字符编写程序。 *动态可执行电子擦除可编程随机存取只读存储器 模拟 有点像ASCII艺术版本,会有时间步伐的想法。在另一个版本中,时间步长是相对较长的时间:船舶可以在单个时间步长中超越行星的重力行进。在此,由于所涉及的距离较大,因此时间步长要小得多。然而,一个主要的区别是不存在细胞。飞船的当前位置和速度将是浮点数,以及所涉及的重力。另一个变化是,行星现在的尺寸更大。 模拟中最多有三个行星。这三个都将具有特定的位置,半径和重力。每个行星的重力是一个向量,直接向行星中心施加力。查找该矢量强度的公式为(Gravity)/(Distance**2),其中距离是从船到行星中心的精确距离。这意味着重力可以到达的地方没有限制。 在任何特定时间,飞船都有一个速度,即它从最后一个时间步到现在的距离和角度。该船也有动力。它在当前时间步与下一时间步之间行进的距离是其当前速度加到该位置所有重力矢量的总和。这成为飞船的新速度。 每个模拟的时间限制为10000个时间步。如果太空飞船在行星内部移动(比行星的半径更靠近行星的中心),则它会撞入该行星。如果到模拟结束时飞船没有坠入任何行星,则可以认为它已脱离重力。这艘船不可能如此完美地对准,以至于它能够在10000个时间步长上坠毁而设法在轨道上停留10000个时间步长。 输入值 输入到STDIN的四行。每行由四个逗号分隔的数字组成。这是数字的格式: ShipLocX,ShipLocY,ShipVelX,ShipVelY Planet1LocX,Planet1LocY,Planet1Gravity,Planet1Radius Planet2LocX,Planet2LocY,Planet2Gravity,Planet2Radius Planet3LocX,Planet3LocY,Planet3Gravity,Planet3Radius 如果少于三个行星,则剩余线将对所有值填充零。这是一个示例输入: 60,0,0,10 0,0,4000,50 100,100,4000,50 0,0,0,0 这意味着太空飞船位于(60,0),并且以“ 10个单位/时间步长”的速度直线“向上/向北”行驶。有两颗行星,一颗位于(0,0),另一颗位于(100,100)。两者的重力为4000,半径为50。即使所有这些都是整数,它们也不总是整数。 输出量 输出将是一个字到STDOUT,以告诉飞船是否坠毁。如果船舶坠毁,请打印crash。否则,请打印escape。这是上述输入的预期输出: crash 您可能想知道发生了什么。这是一个Pastebin帖子,其中包含该飞船的详细飞行日志。数字并不能很好地帮助人们可视化事件,所以这是发生了什么:飞船设法借助第二个行星(向东北)的引力逃脱了第一个行星(向西)的引力。它向北移动,然后略微经过第二个行星的西面,几乎没有丢失它。然后,它绕行星的北侧弯曲并撞向第二颗行星的东侧。 其他一些案件进行检查 60,0,10,-10 0,0,2000,50 100,100,1357.9,47.5 0,0,0,0 逃逸(由于平方反比定律,如果您离60个单位远,则2000重力不大) 0,0,0,0 100,100,20000,140 -50,-50,50,50 -100,-100,50,50 坠毁(第一颗行星非常巨大且非常接近) 0,0,0,0 0,0,0,0 0,0,0,0 0,0,0,0 逃脱(这是一个极端的情况:没有行星,直接的解释将表明飞船直接在行星的顶部) 规则,限制和注释 这是代码高尔夫。适用标准代码高尔夫规则。您的程序只能用可打印的ASCII字符编写。您无法访问任何类型的外部数据库。您可以用任何语言(除了专门用于解决此挑战的语言)编写条目。 结束传输

13
创建一个ascii进度条
好吧,这类似于这个问题,但有一点区别。您必须编写一个程序来询问进度条的宽度以及完成了多少工作。然后绘制具有以下功能的进度条: width表示绘制进度条必须使用多少个字符 进度是通过介于0.1.1之间的浮点值给出的 进度栏中的第一个和最后一个字符应与所有其他字符不同,例如“ [”和“]” 您的程序应使用两个不同的字符来表示自开始以来已完成的进度 您必须使用十进制数字+“%”符号在进度条的中间写出要完成的工作量。 处理极端输入(例如完成的150%或-5%)的奖励积分。 得分字符数*(1个不带奖金或0.75个宽度的奖金) 有效输出的一些示例 79 0.15 [|||||||||||| 15% ] 25 0.76 [##########76%#####.....] 39 -0.12 [ -12% ] 25 7.6 [##########760%#########]

7
用户评分的代码高尔夫-拉丝钻石[实验性]
这种挑战的表现或多或少类似于传统的代码高尔夫。唯一的区别在于,用户无需按字符或字节数对答案评分,而是将权重分配给 注释中的不同字符,并且累积权值最低的程序将获胜。 挑战 您的任务是编写一个程序,该程序采用字符串并打印菱形,其中第一个字符从中心开始,随后的字符占据与最后放置的字符集正交的空白空间。空格()将用于填充。 例如输入CAT将产生 T TAT TACAT TAT T 并()会产生 ) )() ) 并 desserts会产生 s sts strts strerts streserts stressserts stressesserts stressedesserts stressed desserts stressedesserts stressesserts stressserts streserts strerts strts sts s 并且9会产生9。 细节 该代码只能包含可打印的ASCII和换行符。(请参阅下面的原因。) 输入/输出应通过stdin / stdout进行,或者,如果不可能,则使用类似的替代方法。 您可以假设输入字符串仅包含可打印的ASCII(包括空格)。 不含有钻石图案的任何部分开头的空格的列不输出允许。允许使用任意数量和组合的尾随空格。 输出中可能会选择性地包含尾随换行符。 您可以根据需要编辑答案。 计分 所有代码必须仅使用换行符和95个可打印的ASCII字符编写: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (不允许使用令人讨厌的选项卡,因为Stack Exchange将它们显示为代码块中的空格。) 这96个字符中的每个字符都有一个与之关联的权重值。默认情况下,所有权重均为97。 …


6
打印音乐片段中的间隔大小
背景 在西方音乐中,每个音符都有一个分配的名称。在每个八度音程中,按以下顺序排列十二个唯一音符:“ CC#/ Db DD#/ Eb EFF#/ Gb GG#/ Ab AA#/ Bb B C”,其中最后一个C比第一个高八度。 为了区分不同八度音符之间的区别,在音符名称的末尾附加了一个数字(此挑战仅限于一个数字)。因此,C5是比C4高八度的音符。Bb6高于B5。 一个重要的事实是,B5和C6是彼此相邻的音符,而C0和B9是最低和最高音符。 在任何两个音符之间,存在一个距离,即它们之间的半音数量。Bb4是B4之下的一个半音,它本身是C5之下的一个半音。一个八度音阶中有十二个半音,因此Bb4与A#3的距离为12,因为它比A#3高八度音阶(请注意,单个音符最多可以具有两个名称)。 挑战 您面临的挑战是编写尽可能最短的程序,该程序可以从STDIN中获取音符列表,并将间隔更改列表打印到STDOUT。 输入内容将是音符的空格分隔列表。每个音符将由一个大写字母AG,一个可选的b或#符号以及一个数字组成。您将不必处理E#/ Fb或B#/ Cb。输入示例: C4 D4 E4 F4 G4 A4 B4 C5 C4 输出将是一个用空格分隔的整数列表,这些整数表示每个连续音符之间的距离,并始终以+或-作为前缀,以显示该音符相对于前一个音符是升还是降。输出的数字总是比输入的音符少一个。上述输入的示例输出: +2 +2 +1 +2 +2 +2 +1 -12 其他一些示例输入: E5 D#5 E5 B4 E5 F#5 E5 B4 C0 …

2
在Prime中查找程序
让我们将数字0到94分配给95个可打印的ASCII字符: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 空格为0,!为1,依此类推,直到~94。我们还将为Tab(\t)分配95,将newline(\n)分配给96 。 现在考虑无限字符串,其第N个字符是已分配给第N个质数模97 的字符。我们将其称为S。 例如,第一个素数是2,而2 mod 97是2,并且将2分配给",因此S的第一个字符是"。类似地,第30个素数是113,而113 mod 97是16,并且分配了16 0,所以S的第30个字符是0。 S的前1000个字符如下: "#%'+-137=?EIKOU[]cgiosy $&*,0>BHJTV\bflrt~ #%1=ACGMOY_ekmswy"046:HNXZ^dlrx|!)-5?AKMSW]eiko{"&.28DFX^hntv|%+139?CEQ[]agmo{ $,6>HPV\`hnrz~+5ACMOSU_mqsw$(*.BFNX`djp~!'-5;GKQS]_eoq{}"48:>DJRX^tv '17=EQU[aciu 026<>DHJNZ\b#)/7ISaegkqy} $0:<@BFLXdlx~!'/3;?MQWY]ceku(.24LPR\hjt|!'-?EIKWamu$28<>BDNZ`fxz)+AGOUY[_gmwy"0:@LNRT^jl|~#')3;Meiow&(,4DFJRX^bnp%+-37=KQUW]agsy ,06BJPTn )15;=CYegw ".<FHLTZ`dfjpx|~#-/9AES]ikquw&48>FLPbjtz '1=KOU[]y{$,0>BJV\hlr%/1A[_amsw"(04<RTXZf!#)/59?AMQ]_ik{},2FV^bdhj '39CEIOQWacoy{$28<BJPVfrtx%+/7AIOUkqs}*.4FHR`dfp~!);?EGKQS_cw,8:>DJLRhjp %139EUW[aosu&>HNPZ\fhrxz#%/5=[egqy (:@LXZlrv|!35?MSWY]uw"(8@FL^nptz|!'17COacim &>BDHNP\`n+5;GU[eqsw}$*46:HNTX^`jl|'/AEKWY_ek&,:>FPXdvz| 7CIK[agu ,0NTZ`hnrt %)+1GMOSegkwy "<BHLT^~-/59;?AKY_cku{.24:X\dntz!'37=?EIOQ[]ms&*6D`fz~/7=AGU[akmw"*46@HT^vx|#)-5GQW]_eo{}&,28@FPVX^djt|39OQcgoy6>PTV`fhnr#+7IY_ams} (*0:HLdfvx!#-AEGKScioq},48>\^hjptz '-1=CKW[iu 6<HNPfn )/=ACIS[aek(6@BNXZjl~5GM]ouw(,24>FPV\dhnpz|'+179EIWims&*28<DHV\`nz~ =AY_eq}*046:LR^ Stack Exchange会将标签页变成空格,因此这是一个粘贴完标签的PasteBin。 挑战 查找S 的子字符串,该子字符串是使用您选择的语言的有效程序,该字符串输出前M个质数,每行按顺序输出一些正整数M。 例如,2是S的子字符串(它出现在多个位置,但是任何地方都可以),并且2是有效的CJam程序,其输出是 2 这是第一个M = 1个质数,每行依次。 同样,该字符串2N3N5可能是某个地方S的子字符串,并且2N3N5是一个有效的CJam程序,可输出 2 3 …

8
Missy Elliot,XKCD和ASCII字节
受到以下XKCD漫画的启发: 在艾略特小姐的《 Work It》中,部分合唱内容如下: Is it worth it, let me work it I put my thing down, flip it and reverse it 考虑到这一点,我提出以下高尔夫挑战代码: 创建按以下顺序执行的代码: 从STDIN接受8位ASCII输入;例如n(十六进制6E或Bin 01101110) 将每个字节的8位向下移位1位(我相信这被称为逐位向下移位),例如01101110变为00110111(“放下我的东西”); 反转每个字节的位,例如00110111变为11001000(“翻转”); 反转每个字节的位,例如11001000变为00010011 (“ reverse it”); 如果字节的值小于32,则在转换回ASCII之前对该字节执行(95 + [byte value]),换句话说,(126-(31-[byte value]))对字节执行...如果字节的值仍小于32,则重复步骤5 如果字节的值大于126,则在转换回ASCII之前对该字节执行([byte value] - 95),换句话说,(32+([byte value]-127))对字节执行...如果该值仍大于126,则重复步骤6。 将新转换的字符串显示为ASCII。 此代码的一个实际示例: (输入,值得吗?) workit missy (“ missit”为输入,“ workit”为功能) …
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.