编程拼图和代码高尔夫

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

8
离散贝克地图
介绍 在贝克的地图是一个重要的动力系统表现出混沌行为。它是从单位平方到其直观定义的函数,如下所示。 将正方形垂直切成两半,形成两个大小为的矩形0.5×1。 将右半部分堆叠在左上方,形成一个矩形大小 0.5×2 将矩形压缩回1×1正方形。 在此挑战中,您将实现此转换的离散版本。 输入输出 您的输入是2D数组,可打印的ASCII字符和2m×2n某些字符的空白空间m, n > 0。您的输出是使用数组按以下方式获得的类似6×4数组 ABCDEF GHIJKL MNOPQR STUVWX 举个例子。首先,将数组的右半部分堆叠在左半部分的顶部: DEF JKL PQR VWX ABC GHI MNO STU 然后,将这些列拆分为成对的字符,并分别将每对字符顺时针旋转90度,将高矩形“压缩”回原始形状: JDKELF VPWQXR GAHBIC SMTNUO 这是上述阵列的正确输出。 规则 输入和输出格式灵活。您可以使用换行符分隔的字符串,字符串列表或2D字符数组。但是,输入和输出必须具有完全相同的格式:您必须能够对任何有效输入进行任意次数的提交迭代。 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 Input: 12 34 Output: 42 31 Input: Hell ! o d - lroW Output: lol …
15 code-golf  string  grid 

25
将字符串转换为其等效的Rövarspråket
Rövarspråket Rövarspråket是瑞典儿童玩的文字游戏,来自Astrid Lindgren撰写的有关Kalle Blomkvist的书籍。 基本规则如下(来自Wikipedia): 每个辅音(拼写很重要,不是发音)都会加倍,并且在中间插入一个o。 元音保持不变。 一些例子: “你好”->“ hohelollolo” “ Minsvävareärfull medål”->“ MoMinonsosvovävovaroreärorfofulollol momedodålol” 瑞典辅音与英文辅音相同,因此该程序应适用于瑞典语和英文条目。 在大多数情况下,字母“ y”在这种情况下被视为辅音。 你的任务: 编写一个程序,以将通过函数或通过stdin输入的一串瑞典字母转换为等效的Rövarspråket。以字节为单位的最短答案胜出!
15 code-golf  string 

21
性鲍勃炸弹的簿记(检查运行总和是否过低)
信不信由你,塞伯鲍勃炸弹已成为一支世界闻名的乐队,目前正在世界巡演中!作为他们的簿记员,您必须监督他们的日常财务状况并提供定期报告。 您每隔几周会按照产生的顺序编制一份支出清单(以美元为单位)。 例如清单 378 -95 2234 表示将$ 378存入他们的帐户,并在提取$ 95和存入$ 2234之后。 你要确保这些值的运行总和从未低于某一阈值牛逼。您决定编写一个程序来为您执行此操作。 挑战 编写一个包含单个整数T和一个整数列表的程序或函数。如果整数列表的运行总和小于T,则打印或返回假值,否则打印或返回真值。 您可以使用任何常用的输入法(stdin,从文件,命令行,函数的参数)。 在列表的开头,运行总和为0。因此,正T表示结果始终是虚假的。 + 永远不会在正整数前面。 该列表可能包含0。 该列表可能为空。 测试用例 牛逼是-5在所有这些。 虚假: -6 1 2 3 -20 200 -300 1000 真相: [empty list] -5 4 -3 -6 计分 字节最少的提交将获胜。Tiebreaker最早发布。 令人遗憾的评论迫使我不得不这样做。

4
分解它!…非常
好奇的孩子使用的程序可以将数字或表达式分解为以下形式:p1^e1 * p2^e2 * ... * pn^en。等于的指数1被省略,例如360 = 2^3 * 3^2 * 5 孩子将该输出作为新输入输入程序中,但是她不理解该^符号,因此有时她会跳过连接相应素数和指数的一个或多个符号。例如(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280) 由于这些错误,她可能会得到不同的因式分解,可以再次输入(跳过0或多个^)。她重复此过程,直到因式分解不再更改为止(也许不再存在^或正确复制了输出)。 您应该编写一个程序或函数,给定一个整数n(n>1),以递增顺序输出所有可能的数字,其分解可能是孩子最终得到的分解(包括n)。例如,输入16可能的最终分解为(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23 输入详细信息: 输入是一个大于的整数 1 没有输入将产生大于 2^31-1 没有输入将产生比1000输出数更多的输入 输出详细信息: 以您的语言方便的形式显示的整数列表 …

9
KOTH:怪物猎人
更新结果 介绍 为庆祝怪物猎人4终极版在新3DS上的发布(2月13日),以下是本游戏中的山丘之王。 您是新手猎人,将参加由5次连续狩猎组成的锦标赛。在这些狩猎结束时,将根据对怪物造成的伤害对猎人进行排名,当然,他们会杀死怪物还是将其杀死。此外,作为新手,您必须坚持选择的武器,直到您经验丰富为止。 词典 ATK:攻击 DEF:防御 HP :健康点 NRG:能量 GRD:后卫 SPD:速度 SHP:锐度 AGR:攻击性 POT:药水 RAT:定量 WHE:磨刀石 原理 猎人可以选择以下四种武器: | Id | ATK | GRD | SPD | ------------------------------------------------ Great Sword | GS | 7 | 2 | 2 | Dual Blade | DB | 3 | 0 | 7 …

3
建立一个程序来分析硬币翻转顺序选择
在我的一本老书中的一个谜题中,定义了一个游戏,其中两个玩家选择掷硬币的顺序,他们认为当硬币被反复掷硬币时,硬币掷序列会首先出现。(实际上掷骰子是奇数,甚至是掷骰子,但是就问题对等而言,这个小细节并不重要。) 注意,如果玩家1选择,TTT而玩家2选择HTT,则该玩家2赢得游戏的机会为7/8,因为唯一的方法TTT可能HTT是前三局都是尾巴。 您的工作是创建一个程序或函数,以推断出两个选定序列之一首先出现的可能性。您的程序将接受两行输入(或两个字符串作为参数),每行代表长度为10或更短的序列: HTT TTT 并以小数或小数形式输出第一个玩家获胜的概率: 7/8 0.875 以任何语言执行此操作的最短代码都会胜出。

17
保持距离!
每个玩家都有一个号码。您能离他们最远吗? 要求 编写一个名为Java,Python 2或Ruby的函数choose(),该函数接受三个参数: 整数-已完成的回合数 整数-玩家人数 字符串数组-前一轮的结果 每个字符串都是用空格分隔的整数列表,从最低到最高排序 例如,choose(2, 4, ["4 93 93 174", "1 84 234 555"])表示: 已经有两轮了(这是第三轮) 一共有四个玩家 在第一轮中,选择的数字是4,93,93,174 在第二轮中,选择的数字是1,84,234,555 您必须返回1到999(含)之间的整数。 对于每个其他玩家,您的得分是您的数字与其数字之间的距离的平方根。您在该回合中的分数是所有这些分数的总和。 将进行100轮比赛。最高总分获胜! 规则 您的代码可能不使用任何I / O,包括控制台,文件,网络等。 您不得干扰控制程序或任何其他播放器。 看起来违反上述规则的程序将被排除。 在我的计算机(带8GB RAM的Intel Core i5 2450M)上,每次调用函数应花费不到5秒的时间。 如果程序引发异常或返回无效值,则将其视为返回1。 每个用户最多可以提交一个程序。 杂 控制程序在GitHub上。 有三个内置播放器。在此答案中可以找到它们。 获奖者将于1月28日入选。 排行榜 获胜者是保管人。 值得一提的是古斯塔夫(Gustav),他是采用非固定策略的得分最高的球员。 柜子-36226 高-36115 地板抱抱-35880 一号-35791 高估-35791 …

6
以QR码输出2015
任务很简单。只需将数字2015输出为QR码并将其写入以newyear.pngPNG格式命名的文件即可。代码必须在任何一天都有效,因此也许您不应该使用当年。 文字的QR码如下所示: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # …

7
魔术盒问题
您有一个大小为m * n的输入数组。数组中的每个单元格都用P或T填充。对数组唯一可以执行的操作是翻转列。翻转列时,该列的所有单元格中的字母都会切换(P变为T,反之亦然)。如果具有相同字母(例如PPPP)的行数为“ x”,那么您将得到一个分数。设计一种算法,该算法接受数组并返回解决方案(要翻转的列),以使生成的数组具有最大数量的点。 注意:如果有多个解决方案的得分最高,请选择翻转次数最少的解决方案。例: 输入数组: PPTPP PPTPP PPTTP PPPTT PPPTT 输出: 3 说明: 一种产生最高点的解决方案:翻转列号。3 则原始数组为: PPPPP // 1 point PPPPP // 1 point PPPTP PPTTT PPTTT //Total: 2 points 请注意,也可以翻转第4列和第5列以获得2分,但这需要额外的翻转。 您可以使用任何方便的输入格式来表示二维数组,也可以使用任何两个不同但固定的值来表示P和T。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。
15 code-golf 

1
拼写单词的最佳字母卡
假设您有一个单词列表,并且希望能够使用字母卡拼写每个单词。例如,拼写 cat,您将使用三张标记为C,A,T的卡片。 假设每张卡是 双面的,请提交程序以定义可用于拼写整个单词列表的最小卡数。 输入是单词列表,可以是基于文件的,硬编码的,命令行的。输出是卡片列表,您可以按照自己的意愿格式化和排序卡片,前提是可以清楚地标记卡片的方式。 情况并不重要:高尔夫,高尔夫和高尔夫是等效的。 一些提示: 卡数不能少于最长单词的长度 一张卡的两边都有相同的字母是没有意义的 当大小写不重要时,建议使用小写以利用某些对称性 例如,这些利用了某些对称性: 输入: ben,bog,bug,den,do,doe,dog,due,dug,Ed,end,gob,上帝,Ned,ode,笔,Poe,pug 输出: b / d,e / g,o / n 输入: 一个和一个,猿,是,床,芽,bur,bur,Dan,Deb,dub,耳朵,Ed,时代,午睡,泛,豌豆,酒吧,Rae,跑,擦 输出: a / b,d / r,e / n 使其成为一场流行竞赛,因此代码的优美性,运行时性能和机敏性(包括规则弯曲和漏洞)非常重要! 加成:一些人询问“允许的”对称性,是否可以使用特殊字体以及是否可以折叠卡。 允许的对称性是在0、90、180或270度旋转后看起来彼此相似的任何字母。这包括b / q,d / p和n / u。我还会说M / W,Z / N,当然还有I / l(大写i,小写L)。我可能正在抓挠表面,因此如果您不确定其他任何问题,请询问。 为了简单起见,请限制为标准的sans-serif字体,例如SE中使用的字体。 就折叠而言,虽然您可以做一些令人惊奇的替换,例如B可以是D,E,F,I,P或R,如果真的进行创造性的折叠,则可以是C或L,但我认为这实际上是弯曲的! 当我和孩子们玩一些类似的纸牌时,我想到了这个问题。我注意到单面卡的制作非常容易,而双面卡的制作则非常困难。 另外:提供了赏金,以奖励最受欢迎的答案。如果有平局,将奖励给第一个提交的人。 …

4
10、10、10 ...我希望吗?
前言 当我今天早些时候在射箭900圈时(10头结束时每箭6箭,10头结束时每箭3箭,总共90箭,最高得分900),我想到了这一挑战。 在射箭比赛中(假设您使用FITA提供的目标面孔 [射击的纸张]射击),对于每个箭头,您的最高得分为10。目标面孔包含10或11个直径逐渐减小的环,彼此嵌套。从内圈向外,从10点算到一个点(在11个圈的情况下,存在第二个最里面的圈,记为“ X”,得分为10,但在打破平局的情况下使用:较高的值)。观察: 当然,我指的是FITA度量标准评分,如上图所示。如果仔细观察,您可能会看到最里面的环,它是一条淡淡的虚线,其分数未标记。那就是我所指的“ X”,但是除非您争夺奖金,否则您不必理会。 挑战 创建一个函数(或完整程序,如果该语言不支持该函数),则接收一个完美的正方形图像作为输入(或图像文件名,如果需要的话),其中包含一定数量的绿色(十六进制#00FF00,RGB(0, 255,0))点的大小,并返回分数。图像中可能包含绿点以外的数据,但绿色始终是完全相同的阴影。 您可能会想像正方形图像代表目标脸,最外面的环在4个点(顶部中心,底部中心,右中心,左中心)接触。所表示的目标面部将始终具有相同的比例,所有环的宽度都恰好是输入目标图像宽度的1/20。例如,给定输入尺寸为400px x 400px的输入图像,您可以假定每个环的内部宽度均为20px,如下所示: 澄清说明 如果触摸两个单独的环,则计算两个环中的较高者 您无需自动解决未命中或“ x”的情况,除非尝试获得奖金 您可以假设没有绿色圆圈重叠 您还可以假设图像中没有其他那种绿色阴影的像素 图片将采用PNG,JPEG或PPM格式(您可以选择) 如果在发布此问题之前进行创作,则允许使用外部图像处理库 您可以假设一个目标上的所有绿色圆圈的直径相同 如果拍摄(哈哈)重叠的圆圈奖励,则可以假设图像中至少一个圆圈没有另一个重叠的圆圈 不允许出现标准漏洞 测试用例 以下两种情况应分别获得52分(或在奖金为52分时有1个“ x”和1个未中): 最后一个测试用例应得分25: 奖金 如果还返回未命中数(在任何环之外),则为-25个字节 如果您还返回Xs的量,则为-30个字节(假设最里面的x是图像宽度的3/100,然后10是图像宽度的2/100。1-9的比例保持不变) 如果您考虑重叠的圆圈,则字节计数为-35% 这是代码高尔夫球,因此最少的字节获胜。玩得开心!

11
构造图
在此挑战中,您的任务是根据一系列指令构造一个无向图。每个非负整数都有一个指令,并且每个指令都会将给定的图转换为新的图。 指令0:添加一个新的断开连接的节点。 指令1:添加一个新节点,并将其连接到每个现有节点。 伪指令m > 1:删除度(邻居数)可被整除的所有节点m。请注意,0所有m节点都可以将其整除,因此始终会删除断开连接的节点。 从空图开始,指令从左到右一一应用。例如,[0,1,0,1,0,1,3]使用令人敬畏的ASCII技术对序列进行如下处理。我们从空图开始,并按照的指示添加一个顶点0: a 然后,按照的指示添加另一个顶点并将其连接到第一个顶点1: a--b 我们按照0和的指示添加另一个断开连接的顶点,然后添加一个连接的顶点1: a--b c \ \ / `--d 我们重复这一次,作为导演0和1: ,--f--e / /|\ a--b | c \ \|/ `--d 最后,按照以下指示删除3级顶点a和:b3 f--e |\ | c |/ d 这是由序列定义的图[0,1,0,1,0,1,3]。 输入值 非负整数列表,代表指令序列。 输出量 序列定义的图中的节点数。 测试用例 [] -> 0 [5] -> 0 [0,0,0,11] -> 0 [0,1,0,1,0,1,3] …

1
破坏火车使其迟到[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 “我想去阿拉伯市场去买一份我爱上的礼物。但是,如果我来得太晚,所有的商店都会关门,我将无法买到任何东西。你能帮忙吗?我吗? “ 目标:在所有商店关门之前从北里士满街(North Richmond Street)带男孩去阿拉比(Araby)。 实际目标:确保男孩在商店关门之前没有到达阿拉比。 您的程序将采用以下格式输入: <time> <map> 哪里 <time>是男孩可以旅行的最长时间,以分钟为单位。它是一个正整数。 <map> 是火车可以走的路线图。 这是图形格式的工作方式: 每个语句以分号结尾。 映射中的节点(代表开关)使用单个小写字母表示。 节点之间的路径用语法表示a,X,b,其中X是表示路径权重的整数。路径的权重是火车经过这两个节点所花费的时间(以分钟为单位)。 阿拉伯文(Araby)代表a,北里士满街(North Richmond Street)代表n。 所有路径都是双向的。 例如,此图(假设路径是双向的): 图片来自Artyom Kalinin,来自Wikimedia Commons。根据CC BY-SA 3.0许可使用。 将在图形符号中记录为: a,4,b;a,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,f; 请注意,此输入没有n,因此是无效的输入。如果输入无效,您的程序可能会执行任何操作。 这是一个示例输入: 21 n,4,b;n,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,a; (这是与上面的图片相同的图形,a用n和f代替了a)。 男孩必须从取得n到a21分钟内。如果他走这条路线n-> c-> e-> d-> a,他会在20分钟内到达那里,这是及时的。我们可以将该路由表示为以逗号分隔的节点列表: n,c,e,d,a 另一方面,路线n-> b-> …

1
射线追踪闪亮的球体
我下载了POV-ray,并渲染了这种有光泽的90年代金属球体样式: 您的任务是做同样的事情,但要通过自己以尽可能少的字节实现渲染引擎来实现。您不必复制此精确图像-只要符合以下条件,无穷棋盘上方反射球的任何图像都可以。 规则: 该图像必须描绘出一个悬在无限棋盘上方的反射球体。图像本身必须同时显示棋盘本身及其在球体中的反射。必须在视觉上清楚地知道这就是我们所看到的。除此之外,几何形状,颜色,材料属性等的详细信息取决于您。 场景中必须有一些照明:球体的某些部分应该比其他部分更暗,并且在视觉上应该可以大致分辨出光线的来源。除此之外,照明模型的细节由您决定。(如果愿意,可以发明自己的简化照明模型。)球体不必投射阴影。 以上两个标准-是否真的看起来像是被光源照亮的棋盘上方的发光球-将由社区使用投票进行判断。因此,答案必须有一个积极的分数,才有资格获胜。 输出必须至少为300x300像素。可以将其显示在屏幕上或写入文件,也可以。 您的代码应该在一台合理的现代计算机上运行不到一个小时。(这很慷慨-POV射线实际上是在瞬间渲染上述场景。) 不能使用内置的光线跟踪功能-您必须自己实现渲染器。 这是code-golf,因此具有最短代码(以字节为单位)的正得分条目将获胜。但是,也欢迎您玩一幅通过画一幅漂亮的图画来获得最多选票的元游戏(同时当然要使代码尽量简短)。 这个挑战看似很难,但由于几何形状是固定的,因此通过光线跟踪渲染这种场景的算法非常简单。这实际上只是在输出图像中的每个像素上进行迭代并评估数学表达式以查看其应为哪种颜色的情况,因此,我很乐意看到一些好的答案。

3
你是那个吗?(策划导数)
我有一个艰难的人给你! 我的女友最近在美国MTV上观看了一场新节目。这是一场可怕的演出,每个人都很垃圾,但是“游戏”非常有趣。从维基百科: 你是那个吗?跟随20位在夏威夷生活在一起的人,寻找他们的完美搭档。如果这10位男性和10位女性能够在10周内正确选择全部十场完美比赛,他们将获得100万美元的奖金。 现在是游戏部分(也来自维基百科): 演员们将在每集节目中与他们认为自己的绝配将在挑战中配对。挑战赛的获胜者将约会,并有机会在真相摊位中测试他们的比赛。主持人将选择其中一名获奖夫妇前往真相摊位,以确定他们是否完美匹配。 这是确认匹配的唯一方法。每个插曲都以配对仪式结束,在配对仪式上,夫妻会被告知他们有多少场完美的比赛,但不是正确的比赛。 TL; DR: 这是Mastermind的衍生物(具体来说,是M(10,10))。游戏规则如下: 您从2组10组开始,我们称它们为A组:{A,B,C,D,E,F,G,H,I,J}和Set 2:{1,2,3,4,5, 6,7,8,9,10} 计算机以{A1,B2,C3,D4,E5,F6,G7,H8,I9,J10}的形式创建一个对您不可见的解决方案,其中A组中的成员一对一映射设置2。解决方案的另一个示例可以是{A2,B5,C10,D8,E1,F7,G6,H4,I9,J3}。 在您的第一回合之前,您需要询问您选择的一对特定配对是否正确。您的问题将采用{A1}的形式(例如{C8}),并且您会收到1(表示正确)或0(表示您的猜测不正确)。 您的第一个实际回合。您首先以{A1,B2,C3,D4,E5,F6,G7,H8,I9,J10}的形式或您选择的任何排列进行猜测。 您的猜测不能包含任何项目的倍数,即{A1,A2,A3,A4,A5,B6,B7,B8,B9,B10}的猜测不是有效的猜测。每次转动之后,计算机都会告诉您正确的匹配次数,但不会告诉您哪些匹配正确。 重复第3步和第4步,直到您正确地确定每个比赛(即响应为10),或者直到您的10步上升(以较早者为准)。如果您在第10回合之前或第10回合中解决此问题,您将赢得100万美元。否则,你输了,有些人(或字母和数字)独自一人回家与他们的10只猫度过永恒。 这不是最短的代码竞赛。能够以最少的平均猜测数量解决随机匹配问题的人将是获胜者。聪明的游戏玩法和计算速度也可能是因素。我假设平均转数几乎肯定会大于10,因此您赢得100万美元奖金(大概是由MTV而非我支付)的几率很小。只是怎么不可能是它的演员赢得大奖? 注意:不一定需要将其放入{A1,B2,...}格式。我只是在问题中使用了该表格,以使其完全清楚其谜题是什么。如果您不采用这种形式,请说明如何调用。 祝好运!

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.