Questions tagged «code-golf»

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

8
读取ASCII文字
受Golf启发,我使用了ASCII字母,对此挑战(几乎)是直接逆运算。 任务: 取一串ASCII文字文本,然后将文本内容输出为常规ASCII文本。 输入: ASCII艺术字的字符串。 输入将仅包含ASCII字符#,空格和4或5个换行符的实例(结尾的换行符是可选的)。所有行的长度相同。(也就是说,最后一个ASCII字母后缀空格。)如果需要,可以使用其他一些可打印的ASCII字符代替#输入。 输入将包含ASCII字母A-Z和ASCII空格(5x5的空白块)。没有标点符号。只有一行ASCII美术文字(实际5行)。将没有尾随或前导的ASCII艺术空间,也没有相邻的ASCII艺术空间。 字母大小为5x5个字符。每个字母之间有1x5的间隔。单词之间的间隔是5x5的空白块(每边+ 1x5的间隔,因为它只是另一个字母)。在结尾或开头将没有1x5空格,只有在ASCII字母之间。 输出: 包含文本的字符串,为ASCII字符A-Z+空格。如果您的解决方案更容易些,则输出也可以小写。混合大小写也是允许的。 ASCII字母: ### #### ### #### ##### ##### ### # # ##### ##### # # # # # # # # # # # # # # # # # # # # # # # ## ## ##### #### …

6
在Lambda中分配的Python解决方法
这是使用Python打高尔夫球的提示问题。 在Python打高尔夫球中,提交通常是定义为lambda的函数。例如, f=lambda x:0**x or x*f(x-1) 计算 x 的阶乘。 lambda格式有两个主要优点: f=lambda x:...或的样板lambda x:...比def f(x):...return...或短x=input()...print... 可以使用递归调用以很少的字节开销进行循环。 但是,lambda具有一个很大的缺点,即只允许一个表达式,没有语句。特别是,这意味着没有类似的分配c=chr(x+65)。当一个人有一个长表达式需要将其值引用两次(或更多)时,这是有问题的。 类似E=enumerate的赋值可以在函数外部或作为可选参数,但前提是它们不依赖于函数输入。可选参数f=lambda n,k=min(n,0):...失败,因为n在定义时k评估输入时尚未定义输入。 结果是有时您会因为在lambda中重复一个长表达式而感到厌烦,因为替代方案是一个较长的非lambda。 lambda s:s.strip()+s.strip()[::-1] def f(s):t=s.strip();print t+t[::-1] 收支平衡点约为11个字符(详细信息),超过此字符您将切换到a def或program。将此与通常的长度为5的收支平衡点进行比较以得到重复的表达式: range(a)+range(b) r=range;r(a)+r(b) print s[1:],s[1:]*2 r=s[1:];print r,r*2 其他语言也有解决方法,例如Octave。有一些已知的Python技巧,但它们使用时间长,笨拙和/或用途有限。一种用于在lambda中模拟分配的简短通用方法将彻底改变Python高尔夫。 Python高尔夫球手有哪些方法可以克服或解决此限制?当他们看到一个长表达式在lambda中重复两次时,他们应该想到什么潜在的想法? 我的这个提示问题的目标是深入研究此问题,并: 编目并分析高尔夫变通方法以在lambda中进行假分配 探索新的线索以寻求更好的方法 每个答案都应说明解决方法或潜在的领先优势。
34 code-golf  tips  python 

30
从1到n的数字交织,相同的数字反转
一个简单的: 取小于1000 的正整数n,并输出从1到n的整数与从n到1的整数交织在一起。您必须连接数字,以便它们之间没有任何定界符出现。 测试用例: n = 1 11 n = 4 14233241 n = 26 12622532442352262172081991810171116121513141413151216111710189198207216225234243252261 n = 100 110029939849759669579489399210911190128913881487158616851784188319822081218022792378247725762675277428732972307131703269336834673566366537643863396240614160425943584457455646554754485349525051515052495348544755465645574458435942604161406239633864376536663567346833693270317130722973287427752676257724782379228021812082198318841785168615871488138912901191109299389479569659749839921001 这是代码高尔夫球,因此每种语言中以字节为单位的最短提交胜出。鼓励解释。

16
XKCD密码生成器
介绍 显然,此问题已在此处提出,但很遗憾已关闭。我认为再试一次是个好主意,但操作正确。 XKCD认为我们是如何使用“难以记住的密码”的培训的,认为它是安全的,但是要花3天的时间才能破解计算机。另一方面,记住4到5个单词会使Kuan的Password Intropy变得更容易记住。疯狂如何运作,是吧? 挑战 今天的工作是使用单词创建5个密码。每个密码4个单词,每个单词至少4个字母,但没有最大限制。需要为每个密码计算Kuan的密码熵,但不会设置强制最小值。 什么是关的密码熵? Kuan说,Kuan的密码熵是对密码不可预测性的一种度量。有一个简单的计算:E =日志2(R)* L。E是关的密码熵,R是可用字符的范围,L是密码长度。 可用字符的范围不言自明。密码可以包含的字符范围,在这种情况下为大写和小写。由于字母中有26个字符,因此在整个密码范围内26 x 2 = 52个字符。 密码长度也是不言自明的。它是创建后密码的总长度。 约束条件 没有输入。 单词不能再次出现在相同的密码中。 密码中不允许使用符号或数字。 每个密码4个字,但每个字至少4个字母。 单词之间没有空格。 您不能一遍又一遍地生成相同的密码。 每个单词都必须用密码大写。 输出必须是人类可读的,必须隔开。还必须使用上面的Kuan's Password Intropy等式将密码的Kuan's Password Intropy包括在内。 字典。您必须使用它,将其下载为文本文件并进行相应集成。这将是您从中获取单词的列表。您的代码应假定其可用。 这是代码高尔夫球,最短字节获胜。 输出量 TriedScarProgressPopulation 153.9 TryingPastOnesPutting 119.7 YearnGasesDeerGiven 108.3 DoubtFeetSomebodyCreature 142.5 LiquidSureDreamCatch 114.0
34 code-golf  math 

10
前完成的Ascii多维数据集
第一个完成于前辈的Ascii多维数据集(PAC 1)是边长为1的简单多维数据集,看起来像这样: /////\ ///// \ \\\\\ / \\\\\/ 的PAC 2是几何形状,使得它与它的前辈(组合 PAC 1)完成了一个边长2立方体: front back /////////\ /////////\ ///////// \ ///////// \ /////\\\\\ \ ///////// \ ///// \\\\\ \ ///////// \ \\\\\ ///// / \\\\\\\\\ / \\\\\///// / \\\\\\\\\ / \\\\\\\\\ / \\\\\\\\\ / \\\\\\\\\/ \\\\\\\\\/ 因为后视图有点无聊,所以我们只对前视图感兴趣。 这同样适用于所述PAC 3:对于某些视觉思维的PAC 2可以转头插入PAC 3以形成固体边长3立方体: /////////////\ …

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, ... 将这些数字放在一起时,将它们用作等边三角形的边长会产生一个不错的螺旋,就像斐波那契螺旋: 图片由维基百科提供 任务 您的任务是编写一个程序,该程序通过图形化输出来重新创建此螺旋,其输入对应于哪个术语。 …

30
逐个颠倒字符串
您的任务是编写一个程序,给定一个数字和一个字符串,该程序将字符串拆分为该大小的块并将其反转。 规则 您的程序将收到一个正整数n,以及一个s长度至少为一个仅由可打印ASCII组成的字符串(不包括空格)。然后n,如果该字符串的长度不能被n末尾的剩余部分整除,则应将其拆分为一定长度的块,应将其视为自己的块。然后,颠倒这些块的顺序,然后再次将它们放在一起。 测试用例 n s Output 2 abcdefgh ghefcdab 3 foobarbaz bazbarfoo 3 abcdefgh ghdefabc 2 a a 1 abcdefgh hgfedcba 2 aaaaaa aaaaaa 2 baaaab abaaba 50 abcdefgh abcdefgh 6 abcdefghi ghiabcdef 这是code-golf,因此您应该针对尽可能少的字节。
34 code-golf  string 

14
生成n进制数
次要数字是一个正整数,其主要因子(无多重性)均小于或等于其平方根。4是次级数,因为它的唯一质数是2,它等于其平方根。但是,15它不是次要数字,因为它有5一个素数,它大于平方根(~ 3.9)。因为所有素数都以素数为素,所以素数都不是次要数。前几个辅助数字如下: 1, 4, 8, 9, 12, 16, 18, 24, 25, 27, 30, 32, 36, 40, 45, 48, 49, 50, 54, 56 除所有素数必须小于或等于其立方根之外,三次数的定义与此类似。前几个三级数如下: 1, 8, 16, 27, 32, 36, 48, 54, 64, 72, 81, 96, 108, 125, 128, 135, 144, 150, 160, 162 通常,一个n元数是一个其素因子都小于或等于其n次方的数。因此,一个正整数XXx是n进制数当且仅当它的每一个素数因子的ppp满足pñ≤ Xpñ≤Xp^n ≤ x。因此,初等数均为正整数(所有素数均小于或等于其自身),四进制数的所有素数均小于或等于其第四根,依此类推。 挑战 给定整数k和n作为输入,输出k第n进制数。k可以是零索引或一索引(您的选择),并且n始终为正。 例子 …


12
柠檬串
编写一个包含非空单行字符串的程序或函数。您可能会认为它仅包含可打印的ASCII(不包括空格)。 打印或返回类似于由字符串前缀制成的柠檬或酸橙的ASCII艺术菱形形状。 假设输入字符串的长度为n个字母。然后,这样的形状由2n-1列的ASCII艺术拼凑而成,每列由2n-1行组成。从1开始,第k列的宽度为f(k)= min(k,2n-k)个字符,并包含输入的前f(k)个字符的f(k)个副本,垂直居中,单个空格分隔副本的行。 例如,如果输入为Lemon,则输出应为: Lemon Lemo Lemo Lem Lemon Lem Le Lemo Lemo Le L Lem Lemon Lem L Le Lemo Lemo Le Lem Lemon Lem Lemo Lemo Lemon 如果输入是lime输出,则应为: lime lim lim li lime li l lim lim l li lime li lim lim lime 对于其他输入,遵循相同的模式: a a …

14
使ASCII蝙蝠绕ASCII月亮飞
背景 这是万圣节相关的挑战。 正如您从上一个挑战中看到的那样,我非常喜欢我所说的ascii艺术动画,它不仅画出一个图案,而且画出一个不断发展的图案。几年前,我被要求在万圣节那天让随机的ascii蝙蝠在屏幕上飞起来,使我的想法变得生动(有点呆板)后,我想到了这个主意。毋庸置疑,我有义务履行义务(为此而得到报酬),但这使我认为生活比随机蝙蝠还重要。受此启发,我想提出这一挑战。 挑战 蝙蝠绕月飞行。 这是一只蝙蝠: ^o^ 这是月亮: mmm mmmmmmm mmmmmmmmm mmmmmmm mmm 您必须显示蝙蝠飞行的每个阶段(请参见输出)。 输入项 没有 输出量 ^o^ mmm mmmmmmm mmmmmmmmm mmmmmmm mmm mmm^o^ mmmmmmm mmmmmmmmm mmmmmmm mmm mmm mmmmmmm^o^ mmmmmmmmm mmmmmmm mmm mmm mmmmmmm mmmmmmmmm^o^ mmmmmmm mmm mmm mmmmmmm mmmmmmmmm mmmmmmm^o^ mmm mmm mmmmmmm mmmmmmmmm mmmmmmm mmm^o^ mmm mmmmmmm …

29
疯狂的8s码高尔夫
创建一个程序,该程序打印一个间隔内的所有整数(包括两端)(a, b),并用随机(均匀分布,独立于其他字符),非数字,非空格,可打印的ASCII字符替换序列中8的倍数。 假设在所有情况下0 <a <b。 如果数字超过1位,请确保替换字符数匹配! 例子: (1, 16) -> 1 2 3 4 5 6 7 $ 9 10 11 12 13 14 15 n@ (115, 123) -> 115, 116, 117, 118, 119, :F<, 121, 122, 123 (1, 3) -> 1 2 3 非示例: (1, 16) -> 1 2 …

30
模和的总和
给定一个整数n > 9,对于该整数中数字之间的每个可能插入,插入一个加法+并求值。然后,取那些结果取模的原始数。输出这些操作的总和。 的示例n = 47852: 47852 % (4785+2) = 4769 47852 % (478+52) = 152 47852 % (47+852) = 205 47852 % (4+7852) = 716 ----- 5842 输入项 任何方便格式的一个正整数,n > 9。 输出量 遵循上述构造技术的单个整数输出。 规则 您不必担心输入的内容会超出语言的默认类型。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 例子 47852 -> 5842 13 -> 1 111 -> 6 12345 …

28
请放开我!
作为代码高尔夫球手,我们不习惯发布(当然是)。我们将需要一些工具来帮助我们做到这一点。 当然,为了帮助营销一个新版本,我们需要一个漂亮而闪亮的发行版本。谁对3.0.0版感到兴奋? 任务 您的任务是编写一个程序/例程/ ...以增加版本号。 您需要增加版本号并重置“不太重要”的版本(即补丁程序版本)。 您将获得两个参数:当前版本(例如“ 1.0.3”)作为字符串,以及一个索引以了解要更新的版本(0或1索引)。 例如,0索引: next-version("1.0.3", 0) # 2.0.0 next-version("1.2.3.4.5", 2) # 1.2.4.0.0 next-version("10.0", 0) # 11.0 next-version("3", 0) # 4 next-version("1", 7) # ERROR next-version("01", 0) # ERROR 版本是一个字符串,每个部分是一个数字,用点分隔。不能有前导,尾随或连续的点(数字/点之外的任何东西)。版本字符串的大小没有限制。 ^[1-9]\d*(\.[1-9]\d*)*$ 错误情况(最后两个示例)是未定义的行为。在输入错误的情况下发生的情况与此挑战无关。 像往常一样,禁止出现标准漏洞。您可以打印或返回字符串。

7
微小的探索者
您是一位探险家,正在绘制一个未知的世界。你的船在风中航行。哪里知道,谁知道? 每天,在望远镜中,您都会看到北,南,东和西的特征。您始终会看到四个与基本方向相对应的功能。您的望远镜会报告如下ASCII符号: ~~.*,~~~~,~.^^,~#~# 这些符号按顺序排列(北,南,东,西)。 这些符号是:~=海洋,.=海岸,^=山脉,*=树木,#=无效(无观测,只要您看到世界的边缘或地貌被雾遮盖,就会发生这种情况)。您的望远镜在各个方向上只能看到一个单位。 每天晚上,您抬头仰望星星,以了解您旅行了多远。看着星星会报告这样的ascii符号: n,s,e,w 分别对应于北部,南部,东部和西部。每天晚上,您总是只向北,南,东或西移动一个单位。因此,作为浏览器的您将收到无穷无尽的符号流: ~~.*n~~~~s~~.*s~.** 您的任务是输出世界的2D地图(地图的?未知部分在哪里,北朝上,东朝右): ?~~~?????? ?~~~?????? ?~~~.^^.?? ?~~.***.~~ ~~.*^^*.~~ ~~~..~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ 为了简单起见,我们假设您从地图的左下角开始。假设所有地图均为8x8。 这是一个简单的3x3示例。假设地图看起来像这样: ~.~ ~^~ ~.~ 输入以下内容: ~#.#n~~^#s 您将获得以下输出: ~?? ~^? ~.? 更多示例输入和输出: 输入 ~#~#n~~~#n~~~#n~~~#n~~~#n~~.#n~~.#n#~~#e#.~~e#.~~e#.~~e#.~~e#~~~e#~~~e#~#~s~~#~s~~#~s~~#~s~~#.s~~#~s~~#~s~##~w~#~~w.#~~w^#~~w.#~~ 输出 ~~~~~~~~ ~....~~~ ~.????~~ ~~????~~ ~~????.~ ~~????~~ ~~?.^.~~ ~~~~~~~~ 输入: ~#~#e~#~~e~#~~e.#~~e^#~~n.~..n~^~.n~.~~n.~~.n.~~*n~.~.n#.~~w#.~~w#.~~s~*..s..*.s*~.~s.~~~s 输出: ?~~~~~?? ?....~?? ?.**.~?? ?~..~~?? ?~~~~~?? ?~~..~?? …

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.