编程拼图和代码高尔夫

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

18
字符串的十进制乘法
给定2个输入(一个字符串和一个十进制数字),输出字符串乘以该数字。 问题是数字可以是浮点数或整数。 您应该先输出字符串floor(n)时间,然后再输出前floor((n-floor(n))*len(string))几个字母。 其他说明: 输入并不总是浮点数,可能是整数。因此1.5、1和1.0都是可能的。不过,它将始终以10为底,如果您希望例外,请发表评论。 输入的字符串可能包含空格,引号和其他字符。没有换行符或控制字符。 没有内置的直接字符串重复功能,甚至'a'*5不允许像python这样的字符串乘法。但是,允许添加字符串。 测试用例: 逗号和空格分隔输入。 test case, 1 -> test case case, 2.5 -> casecaseca (will add more later), 0.3333 -> (will(space) cats >= dogs, 0.5 -> cats > 最后说明: 我看到许多使用内置字符串乘法或重复功能的答案。这不是允许的。@VTC的答案是有效的,因为它不会乘以字符串,而只是乘以浮点输入。因此,最终的规则是:如果直接将字符串相乘,则无法执行。
14 code-golf  string 

9
可索引的奎因
这项挑战的目标是制作一个程序,输出其源代码的第n个字母,其中n作为程序的输入。像大多数quine挑战一样,不允许您将源代码读取为文件或使用任何内置的quine函数。 输入值 整数0 <= n <len(程序)。 输出量 程序的第n个字符(不是字节)。 获奖 像大多数代码高尔夫问题一样,您可以使用最少的字节数来解决挑战,从而赢得挑战。 奖金 -5%如果您的程序支持负索引python样式(例如-1将是程序的最后一个字符)。如果与以下奖金一起使用,您的范围必须支持负指数。 -20%如果您的程序除了上述要求之外,还支持范围作为输入(任何格式)。 -25%如果您的程序同时完成了两个奖励。 排行榜 这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。 为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: # Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在页首横幅代码段中: # [><>](http://esolangs.org/wiki/Fish), 121 bytes 显示代码段 var QUESTION_ID=70727,OVERRIDE_USER=32700;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function …
14 code-golf  quine 

6
时钟(纸牌游戏)
时钟是一种有趣的纸牌游戏,因为它不需要任何技巧。它是单人游戏,并且相同的纸牌配置总是会导致获胜或失败。在这一挑战中,您需要确定给定的卡配置是赢还是输。您可以在这里玩游戏。 游戏的玩法如下: 十三张纸牌面朝下发出。每堆从0到12编号。 我们将第0个桩设为当前桩 我们将当前牌堆的最高牌面朝上。 我们将面朝上卡移动到其各自堆叠的底部(4张卡片位于第4列下方)。该卡仍面朝上。该桩成为当前桩。 如果当前筹码完全朝上,则游戏结束。否则,请返回步骤3。 提示:游戏将永远在第0堆结束 如果所有牌面朝上都将赢得比赛,如果剩下的牌面朝下则将输掉比赛。 输入输出 包含每个桩的2D阵列。卡用0到12的数字表示(西装无关紧要,没有给出)。每堆的顶牌是每个阵列的第一个元素。 您可以假设输入格式正确:它将包含52张0到12(含)之间的卡,并且每个数字恰好包含4次。 如果游戏可以获胜,则必须返回真实值;如果不能获胜,则必须返回虚假值。 测试用例 真相: [[11, 11, 7, 7], [8, 6, 5, 0], [2, 10, 9, 1], [12, 3, 0, 6], [8, 7, 4, 8], [3, 10, 5, 12], [11, 7, 1, 10], [3, 1, 6, 0], [2, 3, 0, …

4
制作一个简单的漂亮评论工具
挑战: 某些ascii技术很难制造,但使代码注释更易于阅读,尤其是在代码密集时。面临的挑战是制作一个简单的工具,以将带有箭头的注释转换为简单的ascii-art。要修改的注释由空注释分隔。 例如,假设Haskell注释语法,请转换为: -- -- Here's a thing -- Here's another thing -- The most important thing -- * * * -- f x=x+1*x*1*1*0 对此: -- /------------< Here's a thing -- | /-------< Here's another thing -- | | /-< The most important thing -- | | | -- v …

4
童话棋“游刃有余”的运动模式
甲弹跳是仙女棋子,其通过移动的类别“跳跃”。普通骑士是(1,2)剑,这意味着每次移动都涉及在正交方向上移动1平方和在垂直方向上移动2平方的距离。 .o.o. o...o ..N.. o...o .o.o. 有许多不同的跨越。(1,3)叶片称为长骑士或骆驼。其移动模式如下所示: ..o.o.. ....... o.....o ...L... o.....o ....... ..o.o.. 还有(2,2)Alfil ... o...o ..... ..A.. ..... o...o ...甚至(0,1)Wazir。 .o. oWo .o. 挑战 给定一对数字作为输入,输出相应的运动图。您可以编写程序或函数,其输入通过STDIN /命令行提供或作为参数,而输出通过STDOUT或返回值提供。这是代码高尔夫球。 输入值 输入将是两个整数和一个大写字母的逗号分隔列表。这两个整数将在范围内0-7(包括端值)并且以非降序排列。输入和输出的尾随换行符是可选的。 以下是上述四个示例的输入: 1,2,N 1,3,L 2,2,A 0,1,W 输出量 输出将是一个方形的多行字符串。大写字母将放置在中间,以表示作品的当前位置。移动位置将以4或8个小写字母表示o s表示。广场上的所有其他空间都将填充句点。 如果移动方式为0,0,则仅输出大写字母。 提示一下,如果第二个整数(较大的整数)的值为N,则该正方形将始终具有边长2N + 1。该o旨意永远是正方形的周长。 其他测试用例 1,1,F o.o .F. o.o 5,7,Q ..o.........o.. ............... …

13
海盗世界的发行规则
现有的“游戏”中,海盗会根据某些规则合理地分割金币。引用维基百科: 有5个有理性的海盗,A,B,C,D和E。他们找到100个金币。他们必须决定如何分发它们。 海盗有严格的资历等级:A胜过B,B胜过C,C胜过D,E胜过E。 因此,海盗世界的分配规则是:最高级的海盗应建议分配硬币。然后,包括提议者在内的海盗就是否接受这种分配进行投票。在平局的情况下,提议者将投决定票。如果接受分配,则分配硬币并结束游戏。如果不是,则将提议者从海盗船上扔下并死亡,然后下一个最高级的海盗提出新提议,以重新启动系统。 海盗的决定基于三个因素。首先,每个海盗都想生存。其次,给定生存能力,每个海盗都希望最大限度地增加各自获得的金币数量。第三,如果其他所有结果均相同,则每个海盗都倾向于投掷另一艘船。海盗彼此不信任,并且除了提议的分配计划之外,海盗之间不会做出任何承诺,也不会兑现任何承诺,海盗计划将给每个海盗大量的金币。 挑战 输入一个整数n1 <= n <= 99,其中n是海盗数-并从第一个海盗开始输出硬币的分布。 测试用例(第一行是输入;第二行是输出): 1 100 2 100 0 3 99 0 1 5 98 0 1 0 1 这是代码高尔夫球,因此以字节为单位的最短解决方案为准。
14 code-golf 

30
去生成一些Java
您的老板希望您编写如下代码: public static boolean isPowerOfTen(long input) { return input == 1L || input == 10L || input == 100L || input == 1000L || input == 10000L || input == 100000L || input == 1000000L || input == 10000000L || input == 100000000L || input == 1000000000L || input == …

6
来信,动起来!铂 2
首字母,动起来!非常受欢迎,但参与度有限。这个问题将更容易解决,但希望在打高尔夫球时能有一些技巧。 只给您提供一串小写字母。对于每个字母,在字母表中的位置m,将其移动,使其从末尾成为第m个字母。如果m的值比字符串的长度长,请将其移到最前面。仅输出完全转换的字符串。 例子: “长颈鹿” 'g'是字母表中的第7个字母,它已经是背面的第7个字母,因此请保留。 “ i”是第9个字母,由于9大于单词的长度,因此它位于最前面,因此字符串变为 igraffe “ r”是第18个字母,就像“ i”一样,它位于前面: rigaffe “ a”是第一个字母,它一直到最后: rigffea “ f”是第6个字母,从背面变成第6个字母: rfigfea 下一个'f'也是第6个字母,因此它也从后面移到第6个字母: rffigea “ e”是第5个字母,从背面到第5个字母: rfefiga “花” 'f'(6)=> flower 'l'(12)=> lfower 'o'(15)=> olfwer 'w'(23)=> wolfer 'e'(5)=> weolfr 'r'(18)=> rweolf “菠萝” 'p'(16)=> pineapple 'i'(9)=> ipneapple 'n'(14)=> nipeapple 'e'(5)=> nipaepple 'a'(1)=> nipepplea 'p'(16)=> pnipeplea 'p'(16)=> …

29
间隔为零
您的任务是编写一个包含两个非负整数i和k(i≤ k)的函数或程序,并弄清楚如果您在选择的基础上将所有整数从i写入k(包括在内),您将写入多少个零。纸 将这个整数(零的个数)输出到stdout或类似值。 -30%如果您还接受第三个参数b,则为整数基数以记下数字。必须处理至少两个基数才能获得此加成。 您可以接受任何喜欢的基础输入,也可以在测试用例之间更改基础。 您可以接受参数i,k并且可以选择b按任意顺序接受。 答案必须处理至少一个不是一元的基数。 测试案例(以10为基础): i k -> output 10 10 -> 1 0 27 -> 3 100 200 -> 22 0 500 -> 92 这是代码高尔夫球;最少的字节数获胜。

2
欧几里得向量
给定两个向量的ASCII艺术,找到结果向量的大小和程度。 输入值 这可以通过STDIN接收,从本地文件读取或通过函数调用提供。这是两个向量输入的示例: ^------> | | | x 这表示北移4个单位,东移7个单位。每个输入的起点将由x(小数120)表示。 所有向量都是水平或垂直线。 每个向量都有以下四个端点之一:^v<>,由短划线(-,十进制45)或竖线(|,十进制124)组成。 平面上的空白点由空格(,十进制32)填充。 输入可以是单个x。 相邻向量始终彼此垂直。 所有向量都是从头到尾的。 输出量 这将是结果点的位移(距起点的距离)及其相对于起点的移动程度。 对于上述输入,输出应为8.06单位和60.3度。每个人都应有3个有效数字。以下是带有3个有效数字的数字的一些示例: 1.00 60.1 453 7.08 4.50 349 所有单位的度量将为<= 999。 这些编号应以以下格式输出。这是使用上面的数字。 8.06 units @ 60.3 degrees 后面可以跟一个空格或换行符。 如果输入是single x,没有位移,因此也没有位移角度,则输出应为空行(单个换行符)或以下格式: 0 units @ - degrees 如果您想获得奖金,指示方向也应该正确-。 如果奖金2、3或两者都完成,则输出应遵循以下模型并遵守与上述相同的限制。 8.06 units @ 60.3 degrees NE 度数应根据标准平面进行测量。 90 …

1
找到以下几组
以下挑战要求您熟悉正式的解析器理论。如果您不知道问题的含义是因为您不知道该问题的含义,那么很多大学课程都涵盖了上下文无关的语法和第一套/跟随套。 我可以推荐此斯坦福课程,特别是讲义08和09(第7页)。我还从这些讲义中提取了备忘单 - 我建议尝试此挑战的任何人都阅读它。 编写一个程序或函数,该程序或函数在无上下文语法的情况下可以找到每个非终结符的后续集合。非正式地,非终结符的跟随集是一组终结符和$(表示输入结束),您可以在该终结符之后的有效句子中找到它们。 输入以单个可打印ASCII字符串或可打印ASCII行的数组形式给出。您可以以任何合理的格式输出集合,使用$(作为文字输出或集合中的字符串等)指示输入的结束。您可以根据以下格式假定输入始终有效。 上下文无关的语法以非常简化的方式给出。每条生产线包含一个生产。每个产品都是用空格分隔的符号列表。终端是一串用撇号(例如'**')括起来的字符。为了简单起见,您可以假定终端不包含空格,但是如果您的程序允许的话,那会很好。非终结符可以是任何不包含空格或的字符串$。空生成(通常用ε表示)只是一条仅包含左侧非终结符的行。第一行是定义开始符号的生产。 例如,以下语法: S→aSa | bSb | ε 将给出为: S 'a' S 'a' S 'b' S 'b' S 输入/输出示例: In: S 'a' S 'a' S 'b' S 'b' S Out: S {'a', 'b', $} In: S A B C A 'a' A C 'b' A …

3
培根密码:隐写术简介
这只小猪推向市场,这只小猪写了一些代码... 啊,等等,我们不是在谈论那培根,而是在谈论弗朗西斯·培根爵士!具体地,密码培根在1500年代末期设计,作为一种将消息隐藏在另一条消息中的方法,即隐写术。 密码通过隐藏文本表示中的消息而不是其内容来起作用。首先,您的邮件字母被编码为二进制(从0到25),如下所示: 注意:请在代码中使用以下编码,不要担心输入中的数字,空格或其他符号,尽管我可能会为那些在编码中包含这些字符的人带来一些好处。如果确实包含其他符号,则字母在编码中仍必须占据0-25的空格。 Letter Encoding A AAAAA B AAAAB C AAABA D AAABB E AABAA F AABAB G AABBA H AABBB I ABAAA J ABAAB K ABABA L ABABB M ABBAA N ABBAB O ABBBA P ABBBB Q BAAAA R BAAAB S BAABA T BAABB U BABAA V BABAB …

8
研发技能挑战
在《龙与地下城》中,几乎所有事情都是由掷骰子决定的。通常,如果滚动大于或等于指定值,则您尝试做任何您想做的事情都会成功,否则会失败。最常见的是,使用20面模具(又名d20)进行滚动。 其他时候,使用技能挑战系统。它与上述简单系统相似,但是成功是由一个或多个玩家成功个人在失败一定次数之前进行一定次数的掷骰来决定的。例如,玩家可能试图用有限数量的锁扣来挑门上的多个锁。单独的成功掷骰表示成功摘取了其中一个锁,单独的失败掷骰表示破解了一个撬锁。总体而言,成功将意味着在打破所有锁扣之前成功摘取所有锁。 此外,某些卷可以是关键卷。在d20上,掷出1是严重失败,导致整个挑战立即失败(在上面的示例中,玩家可能会意外警告警卫)。掷出20是至关重要的成功,导致立即完成整个挑战(在上面的示例中,玩家可能会找到一组锁的钥匙,从而无需挑选它们)。在关键投掷的情况下,无论先前的成功与失败次数如何,挑战都将立即结束并确定结果。 在此挑战中,将给您带来难度,所需的成功次数以及挑战失败的失败次数。您必须模拟一个尝试挑战的玩家,然后输出结果。 输入值 3个整数,代表在单个掷骰中成功必须达到或超过的值,在挑战中成功所需的成功次数以及挑战失败的失败次数。输入的顺序和格式无关紧要,只要您指定要使用的顺序即可。难度将在1到20之间(包括1和20),成功和失败的次数将在1到100之间(包括1和100)。 输出量 d20掷骰的每个结果(按顺序排列的整数)和挑战的总体结果(真/假值)。格式无关紧要,只要单个结果是按顺序排列的,那么总体结果就可以在所有单个卷之前或之后出现(例如,您不能在卷中间输出整个结果),并且您可以指定要使用的输出格式并始终使用。 示例(括号中的值仅作说明,不包括在内): 输入: 12 5 3 (difficulty successes failures) 输出: 15 (success, 1-0) 10 (failure, 1-1) 5 (failure, 1-2) 16 (success, 2-2) 12 (success, 3-2) 15 (success, 4-2) 19 (success, 5-2) True (overall success) 输入: 15 2 3 (difficulty failures successes) 输出: 0 …
14 code-golf  game  random 

5
二元函数的性质
抽象代数中的许多重要主题都涉及对集合起作用的二进制函数。在研究此类主题时,已定义了此类功能的许多属性。 您的挑战将是确定给定域上的给定二进制函数是否拥有这些属性中的五个。 物产 关闭 如果每个可能的输出都在域中,则关闭二进制函数。 关联性 如果将二进制函数应用于一系列输入的顺序不影响结果,则该二进制函数为关联函数。也就是说,$如果(a $ b) $ c始终等于,则是关联的a $ (b $ c)。请注意,由于该值(a $ b)用作输入,因此必须关闭关联功能。 可交换性 如果交换输入的顺序不会更改结果,则二进制函数是可交换的。换句话说,如果a $ b始终等于b $ a。 身分识别 如果e域中存在某个元素,则二元函数将具有一个identity元素,a $ e = a = e $ a以便a该域中的所有元素都具有。 幂等 如果将二进制函数应用于两个相同的输入给出该数字作为输出,则该函数是幂等的。换句话说,如果是域中的a $ a = a所有人a。 输入值 您将获得矩阵形式的函数,该函数的域为数字0 ... n-1,其中n为矩阵的边长。 该值(a $ b)在矩阵中被编码为第at行的bth元素。如果输入矩阵为Q,则a $ b=Q[a][b] 例如,**域上的幂函数(在Python中)[0, 1, …

5
我需要将多少个平方,立方,四次幂等求和为n?
您会得到一个非负整数n和一个integer p >= 2。您需要将一些次p幂(p=2即正方形,p=3表示立方体)加在一起才能得到n。这始终适用于任何非负数n,但您不知道需要多少次p幂(任何正整数)。 这是您的任务:找到p可以求和的最小n 次方n。 例子 >>> min_powers(7, 2) 4 # you need at least four squares to add to 7 # Example: (2)^2 + (1)^2 + (1)^2 + (1)^2 = 4 + 1 + 1 + 1 = 7 >>> min_powers(4, 2) 1 # you need at least …

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.