编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

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 …

30
两种力量的演变
这是最初由用户Helka Homba撰写的《 Hello World!》演变的转贴。 由于此处存在元共识,因此不应将其作为重复项关闭。 最初是在两年前被问到的,最后一次活跃在六个月前。我有权从赫尔卡Homba张贴此位置 自原始版本以来,已经发明了许多语言,并且许多人加入了该站点,却再也没有机会回答原始版本,因此我认为这种重新发布是可以接受的。 面临的挑战是制作一个可以输出2^n到stdout 的程序,程序n的编号在哪里。值得注意的是,在您提交的答案中,您的程序与程序之间的Levenshtein距离必须为10或更小。 这将如何工作 下面,我将使用C#提交第一个答案,该答案将显示2 ^(n = 1)= 2。 下一位要回答的人必须使用最多10个单字符插入,删除或替换来修改代码,以便当以新答案的语言运行该代码时,它会打印2^n(带有n答案编号)。例如,第25个答案(假设它在Pyth中)将显示2 ^ 25或33554432。 这将一直持续到所有人陷入困境,因为没有新语言时,只需更改10个字符就可以运行最后一个答案的程序。共同的目标是看我们能保持多长时间,所以请不要进行任何晦涩或不必要的字符编辑(但这不是必需的)。 格式化 请按以下格式设置您的信息: #Answer N - [language] [code] [notes, explanation, observations, whatever] 其中N是答案编号(递增,N = 1、2、3,...)。 您不必知道更改了哪些确切字符。只要确保Levenshtein距离是0到10。 如果您使用某种语言回答,或者得到的代码只是一团糟,请说明您做了什么以及为什么起作用,尽管这不是必需的。 规则 了解这一挑战的关键在于,一次只能一个人回答,每个答案取决于之前的回答。 永远不会有两个答案使用相同的N。如果两个人碰巧同时回答某个N,则稍后回答的那个人(即使相差几秒钟)也应该大方删除他们的答案。 此外... 用户不能连续提交两个答案。(例如,由于我提交了答案1,所以我不能回答2,但是我可以回答3。) 尽量避免在短时间内发布过多答案。 每个答案必须使用不同的编程语言。 您可以使用语言的不同主要版本,例如Python 2/3 如果传统上使用两种不同的名称来称呼语言,则它们被视为不同的语言。(此处可能会有一些歧义,但不要让那毁了比赛。) 您不必坚持使用ASCII,可以使用所需的任何字符。Levenshtein距离将以unicode 字符进行度量。 输出应为2^n,不得为其他字符。(引导/尾随空格很好,如>>>或不可抑制的输出也可以ans=) 如果您的语言没有标准输出,请使用通常用于快速输出文本的任何内容(例如,console.log或alert在JavaScript中)。 当必须输出的2的幂变大时,您可能会假定内存无限,但不是整数大小。请注意整数溢出。 …

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 …

26
你知道那种语言吗?
任务: 您面临的挑战是,鉴于先前提交的内容及其本身作为输入,以以下格式输出使用其编写的语言: 假设第一个程序在Ruby中。它必须输出1,因为Ruby是1此挑战中使用的主要语言。一个示例程序是: a=gets puts 1 当自身作为输入时,它返回1。 下一个程序可能在Python中。它必须输出2,因为Python是2挑战中使用的第二种语言。一个示例程序是: print(1 if input()[0]=="a"else 2) 给定第一个提交,它输出1,给定它自己,它输出2。 您可以重复语言,但不能以上一个答案的语言提交答案。 例如,如果第三个程序是Ruby,则必须在1给定第一个程序及其本身的情况下输出(因为Ruby是所1使用的st语言),而在给定第二个程序时必须输出2。 规则: 如果n挑战中当前有答案,那么至少必须使用floor(n / 3)不同的语言。任何违反此规则的提交都将被取消参赛资格。 没有两个“相邻答案”(例如answer n和answer n+1)不能使用相同的语言。 语言的不同版本不算作其他语言(so Python 2 == Python 3)。 答案必须以先前提交的全部内容作为输入。 第一个提交必须接受输入。 您不允许连续提交多个答案。 不允许使用“重复答案”(答案与以前提交的代码完全相同)。 答案不允许超过该答案的已分配字节数-有关更多详细信息,请参见“已分配字节数”。 分配的字节数: 对于每个答案号n,为该答案分配的字节数为45 + 5n。 答案格式: 格式化您的答案,如下所示: # {answer no.}, {language} {program} This prints: - `1` in answer(s) …

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 输出: ?~~~~~?? ?....~?? ?.**.~?? ?~..~~?? ?~~~~~?? ?~~..~?? …

24
IHIH金字塔
我发现字母“ H”和“ I”非常相似很着迷。“ H”是由两个垂直笔划包围的水平笔划;“ I”是一个垂直笔画,周围有两个水平笔画(取决于您的字体)。我敢打赌,这可能是嵌套的...你知道让我想起什么吗?分形!!! 让我们定义“ IHIH”金字塔如下:第一个迭代是字母“ I”的ASCII表示形式: --- | --- 下一次迭代的任一侧都有一个垂直笔触。 | | |---| | | | |---| | | 如果将中间的“ I”视为单个水平笔划,则第二个迭代基本上就是“ H”。第三次迭代在顶部和底部添加了水平笔划 ------- | | |---| | | | |---| | | ------- 同样,如果将中间的“ H”视为单个垂直笔划,则此迭代基本上就是“ I”。这种模式继续,在每次迭代中在“ H”和“ I”之间交替。供参考,这里是前6个迭代: 1: --- | --- 2: | | |---| | | …

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.