编程拼图和代码高尔夫

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

30
垂直打印正弦波
打印在终端上垂直滚动的连续正弦波。该程序不应终止,而应连续向下滚动该波形(除非以某种方式被中断)。您可能会认为溢出不是问题(即,您可以使用带有递增计数器的无限循环或无限递归)。 该波应满足以下特性: 幅度= 20个字符(峰值幅度) 期间= 60至65行(含) 输出应仅包含空格,换行符和 | 每行输出后,暂停50ms 样本输出: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | …


30
如何编写加法函数?[关闭]
问题: 我是一家大公司的首席开发人员,我们正在制造天网。我已经分配给 编写一个输入并返回其总和的函数 规则: 没有类似的答案 function sum(a,b){ return "their sum"; } 编辑:接受的答案将是2014年1月1日投票最多的人 注意:这是一个代码询问问题。请不要认真对待问题和/或答案。更多信息在这里。

30
确定字符串是否为回文的最短代码
一个回文是一些字符串既前后拼写相同。例如,“伊娃,我可以在山洞里刺蝙蝠吗?” 是回文(EVACANISTAB | BATSINACAVE) 对于此代码高尔夫球,使用您选择的语言,确定给定的字符串是否是回文。 边缘案例: 标点不算为回文症。 控制字符不计入回文。 空格不计入回文错误。 数字计入回文错误。 此挑战中的案例不计入回文症。 除您选择的语言所施加的限制外,要评估的字符串的长度没有限制。 对于此挑战,请将自己限制为ASCII字符集。 技术要求: 仅需要方法主体;方法签名,数据结构声明等其他内容不计入胜诉要求。 代码必须在编译或解释时没有编译时错误或异常。 代码不得抛出任何未处理的异常或崩溃。(几乎不用说。几乎。) 代码必须返回一些指示回文的值。数据类型取决于您使用的语言(例如C#用户可能使用bool,而JavaScript用户可能使用var。) 您可能不会编写自己的解释程序来以“本机”功能执行此任务,因此您可以“推销”接近获胜的分数。(希望不用多说。) 胜利条件: 以字符中最短的代码为准。 现任领导人:tmartin(k,25个字符) ... 您的答案是否想要神奇的绿色复选标记?打败这个家伙的答案!

6
可视化眼睛
您可能记得也可能不会记得Xeyes,它是X窗口系统附带的演示程序(据我所知,仍然附带)。其目的是在鼠标光标后画一双眼睛: 您的挑战是用ASCII艺术重新创建Xeyes。编写一个程序或函数,无论用户单击什么,它都会画出两只ASCII艺术眼(在下面指定),然后移动他们的瞳孔以指向光标的方向。 上面的GIF记录了这种非Golf的Ruby实现,可以与任何最新版本的Ruby一起运行。您可能还会发现它对于Xterm控制序列很有用。 技术指标 这是代码高尔夫球,因此以字节数最少的解决方案为准。 这是一个ASCII艺术的挑战,让你的程序必须提醒使用ASCII字符特异性,人物-,.,|,',0,空间和换行符。1 2 这是一个交互式的挑战,因此您的程序必须接受输入并实时绘制其输出。3 在程序开始接受输入之前,它应初始化至少20行20列的空白画布。除非用户单击画布,否则它不应绘制任何内容。 每当用户在画布上单击4时,程序应清除任何先前的输出,然后在画布上以最靠近鼠标光标位置的字符为中心绘制这些ASCII眼睛。5 6(以下✧表示鼠标光标,不应绘制。) .---. .---. | | | | | 0|✧|0 | | | | | '---' '---' 注意瞳孔如何“指向”光标。 每当鼠标光标在画布上移动时,程序应重新绘制瞳孔,使它们继续指向光标,例如7: ✧ .---. .---. | 0| | 0| | | | | | | | | '---' '---' 学生指点 假设我们枚举每只眼睛的内部九个字符的位置,如下所示: .---. |678| |591| …

16
可以多小?
以正整数N开头,找到最小的整数N',可以通过将N除以其一位数字(以10为底)来计算得出。每个选定的数字必须是N的除数大于1。 例子1 预期的输出为N = 230是N” = 23: 范例#2 预期的输出为N = 129528是N” = 257: 提防非最佳路径! 我们可以从129528/9 = 14392开始,但这不会导致最小的结果。如果首先除以9,我们可以做的最好的事情是: 规则 输入可以采用任何合理的格式(整数,字符串,数字数组等)。 这是代码高尔夫球,因此最短答案以字节为单位! 测试用例 1 --> 1 7 --> 1 10 --> 10 24 --> 1 230 --> 23 234 --> 78 10800 --> 1 10801 --> 10801 50976 --> 118 129500 --> …

30
弄清楚这些字符串
受此评论链启发... 我想enklact摆脱挑战,但是我不能... @ETHproductions 进行编码(v):使用包含唯一元素的小节来实现查找表。 粘贴是压缩查找表的一种非常有用的方法。例如,假设您具有以下颜色列表: red green blue yellow purple orange 如果您希望能够将一种颜色用作输入并返回其在此列表中的索引,那么显然有一种简单的方法: ["red", "green", "blue", "yellow", "purple", "orange"].index(input()) 但是有一种方法可以减少字节数: "rgbypo".index(input()[0]) 之所以有效,是因为每个字符串的第一个(或第0个)索引都是唯一的。这个例子很明显,但有时会更难一些。如果我们想为此列表创建查找表怎么办? Sweet Onion Chicken Teriyaki Oven Roasted Chicken Turkey Breast Italian BMT Tuna Black Forest Ham Meatball Marinara 在这种情况下,我们不能这样做: "SOTITBM".index(input()[0]) 因为有两个不同的输入以a开头'T',即“ Tuna”和“ Turkey”。我们必须看一个不同的索引。如果查看每个字符串的第4个索引,您会注意到它们都是唯一的。所以我们可以做... "enklact".index(input()[3]) 在这种情况下,“字符串”是“字符串”。 这导致我们面对今天的挑战... 给定字符串列表,请返回任何有效的字符串。换句话说,给定一个字符串列表,返回任何新的字符串,其中每个字母都是唯一的,并且该字符串是通过连接每个字符串的第i个字母而形成的。 如果没有有效的字符串,则您的提交必须返回一个空字符串或一致的伪造值。与往常一样,允许使用功能或完整程序,并且输入/输出格式是允许的(在合理范围内)。 每个字符串将仅包含可打印的ASCII,并且此挑战区分大小写。 这是代码问题,因此请尝试使用您选择的语言编写最短的程序! …
42 code-golf  string 

21
Stack Exchange股票交易所-V3
注意:此挑战现已结束:我将不再更新排行榜,也不会更改已接受的答案。但是,您可以随意运行控制器并自行更新排行榜。 加入聊天! 介绍 晚上好,交易员!你们都是高尔夫公司PPCG的商人。您的任务是赚尽可能多的钱。 挑战 编写一个在Stack Exchange Stock Exchange上买卖股票的程序,目的是尽可能赚钱。 游戏玩法 所有玩家将以5股开始并在其银行中获得$ 100。游戏始终以10美元的股价开始。 每场比赛将进行1000轮,其中第一轮为1。在每个回合中,将为您的程序提供四个参数作为输入:当前股价,所持股份数量,所拥有的金额以及回合编号(1索引)。 例如,如果我的程序是test1.py,股票价格是100,我持有的股份数量是3,我拥有的资金数量是1200,而整数是576,则我的程序将按以下方式运行: python test1.py 100 3 1200 576 在一个回合中,分配给每个玩家的股价将相同。直到回合结束,这才改变。 作为响应,玩家必须打印其命令。有两种选择: 购买股份:给出此命令的bn位置n是您要购买的股份数量。例如,如果您想购买100股,则将输出: b100 购买股票时,您最多可以透支$ 1000。如果您尝试购买超过该透支额的股票(您的银行余额低于$ -1000),您将被宣布破产。这意味着您将损失所有股份,余额将设置为$ 50。 如果您破产,股价将不受您的命令的影响。 (如果您的余额为$ -1000,则表示您没有破产。但是,如果您的余额为$ -1001,则表示您已经破产) 卖出股票:此命令的给出sn位置n是您希望卖出的股票数量。例如,如果您想出售100股,则将输出: s100 您出售的股票数量可能不会超过您拥有的股票数量。如果您尝试这样做,则您的请求将被拒绝,并且您将跳过该回合。 如果您想跳过该回合而不执行任何操作,请输出b0或s0。 如果您尝试买卖负数股和/或非整数股,您的请求将被拒绝。 经过5轮之后,每轮结束时,所有玩家都将获得红利,其价值为最近5轮平均平均股价的5%。 它是如何工作的? 最初,股价为10美元。在每个回合结束时,将使用以下公式重新计算: 新股价= 旧股价+ (买入股份数− 卖出股份数)New Share Price=Old Share Price+(Number of shares …

30
拼字游戏得分手
挑战: 以一串大写或小写字母作为输入(可选),并计算该字符串在英语拼字游戏中的得分。 规则: 每个字母的得分如下(即使有其他版本的游戏,也要使用该得分): 1 point: E, A, I, O, N, R, T, L, S, U 2 points: D, G 3 points: B, C, M, P 4 points: F, H, V, W, Y 5 points: K 8 points: J, X 10 points: Q, Z 字符串的分数就是所使用的每个字母的分数之和。您可能会假设您有很多可用的图块,因此,长单词以及带有许多相同字母的单词都是有效的输入。 测试用例: ABC -> 7 PPCG …

20
如何退出Vim?
Vim是用于Unix系统的出色文本编辑器,但因退出困难而臭名昭著。 编写一个完整的程序,输出该程序:q以退出Vim。然后,它应该读取一行输入,因为将给它一个bash提示(在这种情况下是成功的退出),或者是一个错误(在这种情况下有未保存的更改)。 bash提示将是这样的: E37@vimmachine: /var/override) 虽然错误是这样的: E37: No write since last change (add ! to override) 收到bash提示后,程序的工作就完成了,并且不应再提供任何输出(空格除外)。 收到错误消息后,您的程序应随机输出(即,每种可能性均被选择为非零概率)输出:q!,不保存即退出,或:x,保存并退出。 这是代码高尔夫球,因此每种语言中最少的字节会获胜!
42 code-golf 

6
ASCII迷宫渲染3000
我不喜欢打字,所以我用一种非常简单的格式画迷宫: # ##### # # # ### # # # # # # # # ##### # 它不是迷宫吗?当然,我认为所有迷宫都应看起来像3d,与这个挑战相似但不相同,以最大程度地提高迷宫感,所以我(勉强地)手动更新了迷宫,使其看起来像这样: +-----+ +-----------------------------+ |\ \ |\ \ + \ \ + \ \ \ \ \ \ +-----------------------+ \ \ \ \ \| |\ \ \ \ \ +-----------------------+ \ \ \ \ …

5
砌块机器人群!
比赛结束了! 介绍 这是一个互动式的山丘之王竞赛,其中控制器完全包含在问题底部的堆栈片段中。控制器会自动读取答案并通过游戏进行游戏。任何人都可以随时在其浏览器中运行它。 比赛的机制与红色vs.蓝色像素战队的机器人非常相似。除了玩游戏(尽管仍然基于网格)之外,它是完全不同的。每场比赛是1比1,没有球队。每项参赛作品都是为自己而战,只有最后一名将成为冠军。 控制器使用JavaScript,并且由于JavaScript是大多数浏览器支持的唯一客户端脚本语言,因此所有答案也必须使用JavaScript编写。 在本规范中,斜体文本用于表示游戏机制或属性的正式术语。这些术语通篇使用以帮助保持一种内聚和清晰的方式引用游戏的不同部分。 游戏玩法 基本 这个问题的每个答案都代表一个参与者。一个游戏是两个玩家之间的竞争P1和P2。每个玩家控制着一群 8个机器人,编号从0到7。游戏在网格中进行,一个128×64 单元的竞技场,其底部的8行开始是墙壁(“块”),其他行开始是空中。网格边界之外的单元被视为空气。 网格的x坐标范围从左侧的0到右侧的127,而y的范围从顶部的0到底部的63。 样本起始网格: 僵尸程序始终与网格单元保持对齐,并且多个僵尸程序可能占据同一网格。机器人只能占据气囊。P1的漫游器始终在墙上方行的最左侧开始于0-7行,P2的漫游器始终在最右侧行7-0处开始。 机器人或单元的邻居是与之直接正交和对角的8个单元。 机器人的视场(FOV)是以机器人为中心的13×13单元正方形。如果某个单元格或敌方机器人位于至少一个玩家机器人的FOV中,则该机器人或敌人机器人就位于该玩家的FOV中。 动作与动作 在游戏中,每个玩家移动 1000次。P1首先移动,然后是P2,然后是P1,依此类推,直到总共进行了2000次移动为止,此时游戏结束。 在移动过程中,每个玩家都会收到有关游戏状态以及FOV中的网格单元和敌方机器人的信息,并使用该信息来决定每个机器人要采取的行动。 默认操作是不执行任何操作,机器人不会在其中移动或与网格互动。 其他动作是移动,抓取和放置: 在以下情况下,机器人可以移动到其相邻单元格C之一: C不是没有界限的 C是空气(即不是墙), C的至少一个邻居是一堵墙。 如果成功,该机器人将移至C。 机器人可以在以下情况下抢占其相邻单元格C之一: C不是没有界限的 C是墙 而且该漫游器尚未携带墙壁。 如果成功,C将会成为空中对象,并且该机器人现在将携带一堵墙。 在以下情况下,机器人可以放置到其相邻单元格C之一: C不是没有界限的 C是空气 任何一位玩家都没有机器人占据C, 机器人载着一堵墙。 如果成功,C将成为一堵墙,而僵尸程序将不再承载墙。 不成功的操作将导致无所作为。 至少由一个壁挂式机器人占据的牢房上方画有一个小墙彩色的正方形。机器人开始时没有围墙。 记忆 在移动过程中,玩家可以访问和更改其记忆,即最初为空的字符串,该字符串在整个游戏中一直存在,可以用来存储战略数据。 目标 黄色十字准线中的像元是目标,该目标始于随机位置。每个玩家的得分均从0开始。当玩家的机器人移至目标时,该玩家的得分将增加1,并且在下一回合之前将目标随机重新定位。比赛结束时得分最高的玩家获胜。如果分数相等,那是平局。 如果在移动过程中有多个机器人移向目标,则玩家仍然只能得到1分。 如果目标在同一位置进行了500次移动,则将再次将其随机重新定位。只要将目标随机放置,就可以确保不会将其放置在机器人所占据的单元中。 编程什么 为此功能编写一个正文: function myMove(p1, …

9
编写最短的程序,生成最多的编译器警告和错误
挑战: 编写一个非常简短的程序,该程序在编译时会创建最多数量的编译器警告和错误。可以用任何编程语言编写。 得分: 分数由以下公式确定:errors_and_warnings_length/code_length。最高分获胜。 例: C#程序的class长度为5个字符,并生成3个警告,得分为(1/5)* 3 = 0.6。 编辑: 由于某些混淆,程序必须至少为1个字符长。否则它将得到无穷大。

17
包含每个字母的第一个数字
给定一个从A到Z的单个字母(J和K除外),以书面形式输出包含该字母的最小非负整数。假设数字从不包含单词“和”,那么101“一百一”就不包含“一百一”。假设美国人(小规模)计数,那么一百万就是10^6十亿10^9。 a 1000 one thousand b 1000000000 one billion c 1000000000000000000000000000 one octillion d 100 one hundred e 0 zero f 4 four g 8 eight h 3 three i 5 five j k l 11 eleven m 1000000 one million n 1 one o 0 zero p 1000000000000000000000000 one …

29
Van Eck序列的N项
输出Van Eck序列的第N个项。 Van Eck序列定义为: 从0开始。 如果最后一项是该项的首次出现,则下一项为0。 如果上一个术语先前已发生,则下一个术语是最近一次发生的退后几步。 https://oeis.org/A181391 https://www.youtube.com/watch?v=etMJxB-igrc https://www.youtube.com/watch?v=8VrnqRU7BVU 顺序:0,0,1,0,2,0,2,2,1,6,0,5,0,2,... 测试: 输入| 输出量 1 | 0 8 | 2 19 | 5 27 | 9 52 | 42 64 | 0 编辑 首选1索引,可接受0索引;这可能会改变一些已经提交的解决方案。 请只是第N个学期。 相同(除了看到已经发布的部分),似乎代码高尔夫球手和亲密电视爱好者之间有相当大的重叠。

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.