编程拼图和代码高尔夫

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

20
生成乌兰数
给定一个整数n(where n < 10001)作为输入,编写一个程序,该程序将输出第一个n Ulam数字。Ulam编号定义如下: U 1 = 1,U 2 = 2。 对于n > 2,U n是大于U n-1的最小整数,U n-1以正好一种方式是两个不同的较早项的总和。 例如,U 3是3(2 + 1),U 4是4(3 + 1)(请注意,(2 + 2)不计入条件,因为术语没有区别),而U 5是6,(U 5不是5因为5可以表示为2 + 3或4 + 1)。以下是前几个Ulam数字: 1, 2, 3, 4, 6, 8, 11, 13, 16, 18, 26, 28, 36, 38, 47, 48, 53, …

2
优化纸张折叠以减轻墨迹
深黑色墨水溅在您的白色打印机纸上!显而易见的解决方案是折叠纸张,使黑白部分相遇,并且随着墨水的扩散而都变成灰色。然后展开并重新折叠,直到您的纸张全部变灰为止。 寻找最佳折叠方式是您在编码挑战中的任务。此Pastebin包含四个不同大小的1和0网格。每个网格代表一张墨水飞溅的纸,您必须将其变成灰色。零是纸,一个是墨水。 在这些网格中,仅沿线和列之间的空间的水平和垂直折叠有效。进行折叠时,对重叠值进行平均。一次折叠一次,并且始终展开。折叠仅改变墨水分布,而不改变纸张尺寸。 Rn表示从第n列开始向右折叠网格的左边缘。Dn表示从第n行开始向下折叠网格的顶部边缘。(n为1索引) 例 给定这个网格 0 1 1 1 0 0 0 0 0 0 0 0 D1折叠意味着“向下折叠整个第一行然后展开”。 0 0.5 0.5 0.5 0 0.5 0.5 0.5 0 0 0 0 然后一个R2会产生 0.25 0.5 0.5 0.25 0.25 0.5 0.5 0.25 0 0 0 0 而另一个R2不会更改任何内容。 目标 您的目标是编写一种算法,该算法每次使用正好8折来找到四个网格中每个网格的最佳油墨铺展折叠顺序。折叠可以是R或D的任何组合。 计分 您提交的分数是每个网格的分数总和。网格的分数是其每个值与其平均值之间的绝对差之和(其总和除以其面积)。分数越低越好。0分是完美的,但可能只有8倍是不可能的。 您必须在答案中报告四个带有代码的8步折叠序列。这样我们就可以验证您的算法确实有效。 …

3
ASCII水厂
介绍 考虑一个字符网格,f A\/例如 f f f A A / \ \ / A A \/ / \/ 哪里: f 代表向下方倒水的水龙头 A 将上面的水分叉,所以正好有一半左,右又有一半 \ 将水流向右上方移动一个单位 / 将上方的水流向左移动一个单位 组合\/产生了一个容量无限的槽,可以收集上方的水流 [space] 是空荡荡的空间,水无法通过 从中我们可以想象水(*)从水龙头流出并落入水槽或网格区域时所走的路径: f f f <-- first second and third faucets * * *A* * *A*/ \* \*/ * *A <-- a …

2
恭喜获得10,000个声誉!
在@MartinBüttner赢得10,000个声誉之后,我们现在在用户页面上有3个完整的10k用户行!现在,由于我们都是程序员,因此我们希望使事情自动化,而不是手动完成。您面临的挑战是编写一个程序来自动祝贺新的1万用户。 规格 输入项 输入将是n用空格分隔的数字行。(如果您愿意,还可以使用一个逗号分隔的空格分隔数字列表,如果这样会使您的代码更短。)例如: 10 20 30 40 50 15 25 35 45 55 20 30 40 50 60 要么: 10 20 30 40 50,15 25 35 45 55,20 30 40 50 60 每个数字列表代表一天中用户的声誉值列表。 输出量 输出将是相同数量的n行(或相同长度的逗号分隔列表)。每行/列表项将是: :D 如果有一个用户的信誉刚刚变得大于等于10,000。 :D如果有多个用户达到或超过10,000个代表计数,则用多个空格分隔。例如,:D :D :D对于3个新的10k用户。 :( 然后,如果输入模棱两可或不可能(请在下一节中对此进行更多说明),则停止进一步输出。 如果以上两个条件都不成立,则为空。 歧义性 输入可能是不明确的。出于此挑战的目的,我们假设: 信誉上限是每天200,为了挑战而忽略了接受和赏金等。 用户可能不会失去声誉(再次出于简单性和挑战性考虑)。 当无法确定哪个信誉值对应于哪个用户时,输入被认为是不明确的。例如,在输入中10 20,30 …
19 code-golf 

2
策划策略
我只能找到Mastermind的代码挑战,所以这是我想承担的代码挑战版本。 普通的Mastermind游戏的最佳策略MM(4,6)由Koyama和Lai于1993年发现,平均猜测数= 5625/1296〜4.34。MM(5,8)仍未解决,但估计平均猜测数约为5.5。 您的任务是创建一个MM(5,8)策略,该策略适用于5个孔和8种颜色,涵盖所有pow(8,5) = 32768可能的不同解决方案。显然,它不一定是最佳选择。您有两种选择: 发布确定性程序以生成策略。该程序必须在Windows 7,Mac OS X或Linux上可编译/运行,且没有任何其他非自由软件。 在Internet上的某个位置发布您的策略(以及您的StackExchange名称)并在此处发布URL。 在这两种情况下,请在答案的标题中注明分数(见下文)。 必须根据以下语法对策略进行编码: strategy : guessing-strategy | known-solution-strategy guessing-strategy : '{' guess ':' branches '}' known-solution-strategy : guess guess : color color color color color color : 'A'..'H' branches : '{' branch (',' branch)* '}' branch : reply ':' strategy …

8
绘制火柴人大战
我的照片以我的高级绘图技能来起草这项挑战。 背景 火柴人战争发生在很久以前,当时地球上的优势物种仅由木棍组成。历史学家对当时没有画家或照相机的事实感到遗憾,我们可以在今天的历史书中使用那场战争的照片。这就是您的编码能力变得有用的地方。火柴人很容易画出来,历史学家设法找到了多少人参加了战争¹的数据。现在由您来重新创建战争开始前那刻的图像! 以下是参与战争的英勇火柴人: O / | / | \ / | | / \剑客 OA / | \ | | | / \ | 长矛兵 。 。” *。 'O * '\ | /。 。| * './ \ *。法师 Ø / | \ | / \村民 Ø / | \ …

8
死亡商人
您是外国商人,希望能获利。人们希望交易的商品有5种:A杏,B桨,C肛门,D水仙花和E树枝。从冬季开始,您需要决定要生产什么。然后,在秋天,您旅行并花费大量时间进行交易以获取利润。 游戏玩法 您以10种每种产品的存储空间开始游戏。每年,您将消费每种产品中的2种。 在游戏开始时,您会收到5种产品的清单,以及每年可以生产的数量(例如:)5-A,6-B,3-C,12-D,4-E。然后,您将返回字母A到E,以决定要生产什么。 然后,在秋天的时候,您将把您的产品(包括存储中的产品)推向市场。您有50个转弯进行交易。 您必须决定是否要购买,P出售S或逃避L市场。然后,买方将与卖方随机配对。如果一个小组有额外的,随机的额外将错过这个回合。如果跳过交易者,他们将收到S,否则,T。卖方必须决定他想卖什么,以及金额(例如:3-A),然后他会接受什么样的(例如:5-B,2-D,1-E)(该值是任何没有全部)。然后,将告诉买方卖方正在销售什么产品,然后卖方将购买该产品,然后他可以选择一种产品进行交易(例如:D或X一无所有)。 在所有交易结束后或离开市场后,您将消费每种产品中的2种,并且年份开始。如果您在1种产品中的少于2种,您将死亡(并通过Q)。 您的分数将是您持续的年数,经过50场比赛后,您的分数将取总分数的平均值。 可选动作 您可以随时返回G查询商品 您随时可以返回N查询库存中新产品的数量(过去一年中任何玩家生产的产品,新产品将在旧产品之前进行交易) 您随时可以返回T当前的转折短语:Produce,Market或Trading 在交易期间,您可以查询 I与您交易的玩家唯一的标识符。 在交易期间,您可以返回M查询交易人数 如何编码: 您可以使用任何标准语言,并且必须包含command.txt运行程序的命令。 程序的一般流程应为: Get productivity While alive: Output product you want to produce While in trading: Output whether you want to purchase or sell Get whether or not you were skipped. If not skipped: If …

29
将所有数字相乘成字符串
获胜者:Chilemagic,巨大的21个字节! 您可以继续提交答案,但是您将无法再获胜。原帖保留: 您的目标是查找字符串中的所有数字,并将每个数字分别乘以用户输入的值 您无需担心小数 用户将输入数字和字符串 用户必须在某个时候键入数字和字符串,但是程序读取它的方法并不重要。它可以与stdin一起使用,读取文本文件等,但是用户必须在某个时候按键盘上的9按钮(例如) 任何可以编译和运行的东西都是可以接受的 例: 句子输入:这是22a 3352句子50 数字输入:3 输出:这3是66a 10056句子150 该竞赛将于2014年9月6日(发布后7天)结束。 这是一个代码高尔夫球,因此最短的代码获胜
19 code-golf 

6
当try块中的所有内容都已被捕获时达到catch
我猜这仅限于Java和C#。 在此编程难题中,您将产生Exception可被捕获但又在catch块末尾再次抛出的。 try { while(true) try { // you are only allowed to modify code between this try { } brackets } catch(Exception ex2) { } } catch(Exception ex1) { // your goal is to reach this catch block by modifying the code ... // in the inner try block …

11
将ASCII文本转换为盲文
编写将ASCII文本转换为盲文输出的程序。要求: 输入可能来自stdin,命令行或其他外部输入源。 输出应可识别为盲文,输出形式由您决定。一个例子是o凸起的点和.非凸起的点。诸如此类的文本模式表示形式1-3-4是不可接受的。不需要长行换行。 最少需要26个字母字符和空格。解决方案不支持的所有输入字符都应忽略。 评分是根据源代码中的字符数进行的。罚款和奖金为: 使用Unicode盲文字符作为输出时,+ 50罚款。 支持大写字母,数字和标点符号的奖励为-50。 -200英镑奖金,用于支持英语(第2级)盲文的连字和单字母收缩。(这将是一个单独的挑战,因为这是一个完全不同的问题。) 样本调用和输出(最小解决方案): $ braille Hello world o . o . o . o . o . . . . o o . o . o . o o o o . o o . o . . o . . o o …
19 code-golf 

4
森林-一个模拟的生态系统
注意 这个问题来自这个reddit线程(剧透警报!),我已经对其进行了调整以使其适合本网站的格式。所有功劳归给reddit用户“ Coder_d00d”。 在这个问题中,我们将模拟一个森林。 对于这个模拟森林,我们将处理3个方面。 树木可以是幼树,树木或老树。 伐木工人(他砍倒树木,吃午饭,去熔岩尝试) 熊(他虐待闻起来像薄煎饼的伐木工人) 警告:这些规则很可能并不完美。请将其作为准则,如果您需要进行一些细微调整(已指出产卵率是一个问题,请参见kuroi neko的答案作为示例)。 时间周期: 模拟将按月进行模拟。您将通过“打勾”及时前进。每个“刻度”代表一个月。每12个“滴答声”代表一年。我们的森林将不断变化,并且将不断变化。我们将记录森林的进度并分析其发生的情况。 森林: 森林将是一个二维森林。我们将需要输入N来表示N×N大小的网格中森林的大小。在每个位置都可以容纳树木,熊或伐木工人。它们可以占据相同的位置,但是当它们占据相同的位置时,经常会发生事件。 我们的森林将根据大小随机生成。例如,如果您的N值为10,则将有10 x 10的森林和100个斑点。 10%的森林将在10个随机地点举行伐木工人。(使用我们的100个现货森林,应该是10个伐木工人) 50%的森林将在任意位置保留树木(树木可以是3种中的一种,并且将从“树木”的中间一种开始)。 2%的森林将容纳熊。 如何获得林的大小取决于您(从stdin,文件中读取或对其进行硬编码)。我建议保持N等于5或更高。小森林没什么好玩的。 大事记: 在模拟过程中将发生事件。这些事件是根据一些逻辑发生的,我将在下面进行解释。我将在以下每个事件中对森林的3个元素进行描述。 这些事件首先遵循树木的顺序,其次是伐木工人,最后是熊。 树木: 每个月,一棵树都有10%的机会生成一个新的“树苗”。在与树相邻的随机开放空间中,您有10%的机会创建“树苗”。 例如,森林中间的一棵树在其周围还有其他八个点。其中之一(如果为空)将成为“树苗”。 存在12个月后,“树苗”将升级为“树”。“树苗”在成熟为“树”之前,无法生成其他树。 一旦“树苗”变成一棵树,它就可以生成其他新的“树苗”。 当一棵“树”已经存在了120个月(10年)时,它将变成“老树”。 老树有20%的几率生成一个新的“树苗”,而不是10%。 如果树或老树没有开放的相邻点,则不会产生任何新的树。 伐木工人: 伐木工人砍伐树木,跳跃和跳跃,喜欢压野花。 伐木工人每个月都会流浪。它们最多可移动3次到任意方向相邻的随机选择的点。因此,例如,网格中间的伐木工人有8个位置可以移动。他将漫步到一个随机地点。然后再说一次。最后第三次。注意:这可以是任何地点(这样它们就可以走进熊,从而造成大槌)。 伐木工人移动时,如果遇到一棵树(不是树苗),他将停下脚步,并停止在该月的游荡。然后,他将采伐树木以砍伐木材。移除树。获得1块木材。 伐木工人不会收获“树苗”。 伐木工人也收获老树。老树值得两块木材。 木材追踪: 每12个月将伐木量与森林中伐木工人的数量进行比较。 如果收集的木材等于或超过森林中伐木工人的数量,则会雇用许多新的伐木工人,并在森林中随机产卵。 计算出要雇用的伐木工人的数量: floor(lumber_collected / number_of_lumberjacks) 但是,如果12个月后收集的木材数量低于伐木工人的数量,则放开伐木工人以节省金钱,并从森林中移除1名随机伐木工人。请注意,您绝不会将伐木工人的劳动力减少到0以下。 熊: 熊像伐木工人一样在森林中漫步。但是,熊最多可以漫游5个空间,而不是3个空间。 如果熊碰到伐木工人,他将在一个月内停止游荡。(例如,在2次移动之后,熊与一名伐木工人一起降落在一个空间上,他本月将不再进行任何移动) 伐木工人闻起来像薄煎饼。熊爱煎饼。因此,不幸的是,熊会ma伤并伤害伐木工人。伐木工人将从森林中移走(他将在星期三回家购物,并用黄油烤饼烤茶)。 …

5
解决爱因斯坦之谜
爱因斯坦写了一个谜。他说,全世界98%的国家无法解决这个问题。 在上班的大约25分钟内,我解决了这个谜语。基本上只是推论。 谜语 连续有5座房子以5种不同的颜色。 每个房子里都有一个不同国籍的人。 这5位主人喝某种类型的饮料,抽烟某种雪茄和养宠物。 没有主人拥有相同的宠物,抽相同品牌的雪茄或喝相同的饮料。 问题: 谁拥有鱼? 为了解决这个难题,爱因斯坦提供了15条提示: 英国人住在红房子里。 瑞典人养狗作为宠物。 丹麦人喝茶。 温室在白宫的左侧。 温室的主人喝咖啡。 吸烟颇尔购物中心的主人饲养鸟类。 黄房子的所有者抽烟登喜路。 住在中心房屋的主人喝牛奶。 挪威人住在第一所房屋。 抽Blends的主人住在养猫的人旁边。 养马的主人住在旁边的吸烟者登喜路。 抽Bluemasters的老板喝啤酒。 德国人抽王子。 挪威人住在蓝房子旁边。 抽Blends的屋主与喝水的人住在一起。 有了这些提示,您就可以找到解决方案。 您的任务:编写一个程序来为您解决这个难题。不允许对解决方案进行硬编码(duh) 允许以任何格式对提示进行硬编码。 格式范例: //Hints in order (Nationality:Brit)==(Color:Red) (Nationality:Swede)==(Pet:Dogs) (Nationality:Dane)==(Drink: Tea) (Color:Green)/(Color:White) (Color:Green)==(Drink:Coffee) (Smoke:PallMall)==(Pet:Birds) (Color:Yellow)==(Smoke:Dunhill) (House:3)==(Drink:Milk) (Nationality:Norwegian)==(House:1) (Smoke:Blend)/\(Pet:Cats) ==等于 /表示 \的左侧=表示 / \的右侧表示左侧或右侧 就像我说的那样,它允许对提示进行硬编码或将其作为输入。 输出:输出应采用以下格式(具有正确的值,仅表示巨魔;)) …
19 code-golf 


3
啊!野兽在这里!
正如我们从IBM PC AT,YouTube(请参阅视频),Wikipedia(请参阅文章)和芝麻街所了解的: 字母H是字母表中最无情的字母! (即使实际上是由代码页437中的两个元素组成的,实际上,这种方式更无情。) 就像外星人一样,呃...呃... 外星人,野兽不懈地追求所有敢于靠近卵子的人。他们没有理由。如果不灭,就必须压扁它们。 对于这种情况,我们将假设您已经到了最后一生,并且您在没有卵的地形中遇到了野兽(如Wikipedia屏幕快照中所示)。您没有数字键盘,只能直接向上/向下/向左/向右移动...但是这些野兽显然有一个,可以在转弯时对角移动。 野兽在其选择中的移动选择将是使与玩家的距离最小化的选择。如果距离相等,则完成平局决胜,偏爱向左+向上胜于向右+向下,但这是明确的消歧矩阵...最低的平局决胜数: 1 3 4 2 H 5 6 8 7 野兽从不睡觉,但幸运的是,它们比玩家还慢。他们每隔一圈移动一次(通过在第二个回合开始他们的交替来让玩家领先。)如果可能的话,他们必须移动,无论这是否使他们离玩家更远。 如果将一列可移动的墙壁移动到封闭的缝隙中,则可以将其压碎。这些普通的野兽每头值2点。 输入项 一对整数,指示列大小,然后按行大小。 输入行的行数,每列大小...包含实心壁​​(#),活动壁(~),野兽(H),播放器(O)或仅一个空格。 输入将是U,D,L,R,表示玩家尝试移动...或等待等待的W。请注意,尝试推动被阻塞的可移动墙是合法的输入,只会导致不采取任何措施。 输出量 aHHHH! 如果野兽杀死了玩家...或者如果玩家赢了而没有剩下的野兽则一无所获 比分 (注意:出于调试目的和/或娱乐目的,您可能希望能够在每个步骤中输出状态;但这太长了,无法在此处发布。) 澄清说明 确保地图被实心墙包围。 谁依次移动的顺序对结果很重要。因此:玩家总是先走,然后如果您从左上到右从屏幕上扫过,则根据野兽的初始地图位置对其进行排序。(第1行的野兽移动到第2行的野兽之前,并且同一行上的两个野兽将是具有最低列号的野兽,然后移动到另一行) 对角移动的野兽可以移动到任何相邻的对角线开放空间中,而不管是否需要在墙壁之间挤压。 只要另一端有空间或野兽,玩家就可以将任何数量的可移动墙沿一条线推入。但是,尝试将一列墙壁推入没有固定在墙壁之间的野兽中时,会将野兽视为墙壁,并且不允许移动。 野兽在回合中的移动决定取决于玩家在回合开始时的位置。它对“玩家距离”的理想优化是通过“乌鸦飞翔”计算。从其正方形的中心到玩家正方形的中心测得的结果相同的任何近似值都可以。 如果由于较高优先级的野兽而无法将其作为第一顺位的行动,那么它将选择其第二个最佳选择,而不是保持原状(如果仍然可以采取行动)。 样品盒 简单粉碎 输入项 5 3 ##### #O~H# ##### R 输出量 2 偏好矩阵->死亡 输入项 5 …
19 code-golf  game  maze 

5
2048机器人挑战赛
我们一直在克隆 2048,分析 2048,但是为什么我们还没有播放呢?编写一个555字节的javascript代码段以自动播放2048,一个小时后的最佳得分将起作用(请参阅下面的得分)。 设定: 转到2048并运行: a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager); a 是控制游戏的对象。 规则: 设置完成后,您可以从控制台运行555字节的JavaScript,以控制游戏。您可以在此处找到游戏的源代码(包括注释)。 它只能做用户可能做的事情: a.move(n) 在四个方向中的任何一个上触发按键动作。 0:向上,1:向右,2:向下,3:向左 a.restart() 重新启动游戏。游戏中间允许重新启动。 有关游戏状态的信息可以在中找到a.grid.cells。该信息是只读的 允许挂钩任何功能,不允许以任何方式更改其行为(或更改任何其他数据) 每250ms只允许移动一次 例 只是一个非常简单的示例。不带注释并输入181个字节。 //bind into new tile function and change m(ove) variable when a tile was moved b = a.addRandomTile.bind(a); m = !1; a.addRandomTile = function() …

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.