编程拼图和代码高尔夫

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

5
交换数字
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 这是许多人手动解决的普遍难题。现在是时候编写一种算法来解决该问题了。 在彼此面对的两个不同侧面上排列有相等数量的火柴棍。它们之间只有一个空白空间。说出类似下图的内容(如果火柴总数为4)。 每个摇杆都可以向前滑动一步(如果紧邻的前部空间是空的),也可以跳过它们前面的一根摇杆,然后降落到自由空间中(如果该空间是空的)。反向移动是不可能的(即使空间是空的)。也不允许反向跳转。一步只能执行一次移动。 现在,您必须编写一种算法来查找所需的最小步骤,所有左手火柴将落在右侧,而所有右手火柴将落在左侧。 例如:如果总共有2个火柴棒(每侧1个),则步骤为: 注意:在上图中,首先移动了左侧操纵杆。当右侧操纵杆先移动时,存在另一种解决方案。但是对于这个问题,您只需要给出一个解决方案,并且还假设左侧操纵杆先移动。 下图描述了使用4个火柴棍(每侧2个)的移动: 注意:在上图中,首先移动了左侧操纵杆。当右侧操纵杆先移动时,存在另一种解决方案。但是对于这个问题,您只需要给出一个解决方案,并且还假设左侧操纵杆先移动。 [假设:输入可以是02到14之间的任何偶数(即每侧1到7个火柴)。对于此范围之外的输入,您不需要进行任何验证,也不需要提供任何错误消息。注意:在输出中,每个步骤都由一个'|'分隔 (管道)字符。COBOL程序员应始终将PIC 9(2)作为输入大小,并且还可以将输出假定为固定的最大长度450个字符,并在右边填充空格。 样本输入: 02 样本输出: 01To02|03To01|02To03| 样本输入: 04 样本输出: 02To03|04To02|05To04|03To05|01To03|02To01|04To02|03To04| 样本输入: 06 样本输出: 03To04|05To03|06To05|04To06|02To04|01To02|03To01|05To03|07To05|06To07|04To06|02To04|03To02|05To03|04To05|

10
非传递性骰子游戏
那些喜欢Numberphile的人会熟悉James Grime博士,他在他的频道上描述了一种非过渡性的骰子游戏。 游戏包含三个6面骰子: 模具1:3,3,3,3,3,6 骰子2:2,2,2,5,5,5 模具3:1,4,4,4,4,4 两个玩家各自选择要使用的骰子。他们滚动他们,更高的骰子获胜,无论如何。 概率上,死亡1击败死亡2的机会大于50%。同样,骰子2击败骰子3,有趣的是,骰子3击败骰子1。 写一个程序服用1,2或3作为输入。这表示用户选择的骰子。然后,程序选择可以击败用户的骰子,并输出21卷的结果,“ Computer/User wins with x points” 规则 代名词高尔夫,以决胜局形式投票 您必须使用RNG(或类似工具)来实际模拟骰子掷骰。 我对输出格式不太严格。只要显示骰子就可以,以某种方式在21卷之间分开(与在同一卷中分开骰子的方式不同),并在上面输出该句子。 输入可以是标准输入,命令行自变量,来自屏幕等。 例 输入值 1 输出量 4 3 4 3 4 3 4 3 4 3 4 3 4 3 4 3 4 3 4 6 1 3 4 3 4 3 1 …
10 code-golf  game  random 

1
你能找到沃尔多吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 Waldo在哪里是一款搜索游戏,向您显示某个场景的图像,并且您的目标是在图片中找到一个名叫Waldo的人。 这是一张显示Waldo外观的图片。他总是穿着红色和白色的条纹毛衣和帽子,蓝色的裤子,棕色的鞋子和头发。他可以带或不带配件,例如相机,眼镜或手杖。 这是Waldo隐藏的一些场景。(您可以右键单击图像,然后转到图像源以获得更高的分辨率。) 挑战 编写一个处理图像的程序(根据您的喜好提供输入),并在上述五个图像中尽可能多地找到Waldo。您的程序使用以下公式得分 codeLength / numberOfPicturesInWhichWaldoIsFound 当然,分数越低越好。

12
改变随机发生器的骰子
介绍 您将获得具有以下实现的随机整数生成器 第一次调用总是返回1。 第二次调用返回1到2之间的随机整数。 第三次调用返回1到3之间的随机整数。 第n次调用返回1到n之间(包括1和n)的随机整数。 根据上述函数,编写一个完全随机的随机骰子生成器,以相等的概率返回一个介于1到6(含)之间的值。 规则 您的程序/函数应以某种可用的形式(例如,到标准输出或作为函数返回值)得出1到6之间的一个随机整数(包括1和6)。 上面的升序随机数生成器可以定义为程序中的“自由”函数(即不计入字符数),也可以定义为根据需要执行的单独脚本/程序(假定状态(n)是持久性的)通话之间。 假设在您的程序的单个使用案例中,请求的掷骰子次数不会超过1000,并且可以将初始随机数生成器重置为11000掷骰子,以避免溢出n。 除了上面定义的升序随机生成器外,您的程序不得使用任何其他随机数源。您当然可以为每个骰子掷骰输出向随机数生成器请求多个随机数。 这是代码高尔夫球,因此如果出现平局,获胜者将是最短答案或最多选票。如果您可以使用少于1000个生成的随机数生成1000个骰子掷骰,请给自己10点效率奖励。 例 ./asc-rand 1 # random integer between 1 and 1 ./asc-rand 1 # random integer between 1 and 2 ./asc-rand 3 # random integer between 1 and 3 ./asc-rand 4 # random integer between 1 and 4 …
10 code-golf  random 

6
打印音乐片段中的间隔大小
背景 在西方音乐中,每个音符都有一个分配的名称。在每个八度音程中,按以下顺序排列十二个唯一音符:“ CC#/ Db DD#/ Eb EFF#/ Gb GG#/ Ab AA#/ Bb B C”,其中最后一个C比第一个高八度。 为了区分不同八度音符之间的区别,在音符名称的末尾附加了一个数字(此挑战仅限于一个数字)。因此,C5是比C4高八度的音符。Bb6高于B5。 一个重要的事实是,B5和C6是彼此相邻的音符,而C0和B9是最低和最高音符。 在任何两个音符之间,存在一个距离,即它们之间的半音数量。Bb4是B4之下的一个半音,它本身是C5之下的一个半音。一个八度音阶中有十二个半音,因此Bb4与A#3的距离为12,因为它比A#3高八度音阶(请注意,单个音符最多可以具有两个名称)。 挑战 您面临的挑战是编写尽可能最短的程序,该程序可以从STDIN中获取音符列表,并将间隔更改列表打印到STDOUT。 输入内容将是音符的空格分隔列表。每个音符将由一个大写字母AG,一个可选的b或#符号以及一个数字组成。您将不必处理E#/ Fb或B#/ Cb。输入示例: C4 D4 E4 F4 G4 A4 B4 C5 C4 输出将是一个用空格分隔的整数列表,这些整数表示每个连续音符之间的距离,并始终以+或-作为前缀,以显示该音符相对于前一个音符是升还是降。输出的数字总是比输入的音符少一个。上述输入的示例输出: +2 +2 +1 +2 +2 +2 +1 -12 其他一些示例输入: E5 D#5 E5 B4 E5 F#5 E5 B4 C0 …

13
列表操作
受到这个问题的启发。 给定一个包含数字的列表,打印: 列表中数字的总和与乘积 平均值和中位数 列表中每个词之间的差异(例如[1,2,3] -> [1,1]: 1+1=2, 2+1=3) 列表,升序排列 列表的最小值和最大值 列表的标准偏差 以供参考: 标准偏差 其中μ是平均平均值,x i是i列表中的第th项,是列表N的长度。 最短的代码获胜。祝好运!

17
河内求解器塔
有关河内塔楼的信息,请用谷歌搜索或在Wikipedia页面上查看。 您的代码应该能够执行以下两项操作,它们是: 接受在河内塔楼起点指定了光盘数量的用户输入 以您选择的方式创建输出(只要出于某种逻辑即可)以显示塔式难题的解决方案。 逻辑输出的示例如下(使用4盘启动): L1L2C1L1R-2R-1L1L2C1C-1R-2C1L1L2C1 L代表左钉子,C代表中心钉子,R代表右钉子,数字是该盘在该钉子上移动的方向和方向。正数表示向最右边的钉子移动的钉子的数量(因为磁盘从最左边的钉子开始)。 河内塔的规则很简单: 一次只能移动一个磁盘。 每次移动都包括从一个钉子上取下上盘并将其滑到另一个钉子上,然后再将另一个钉子顶在该钉子上。 请勿在较小的磁盘上放置任何磁盘。 磁盘自然地从最左端的钉开始,最大的在底部,最小的在顶部。
10 code-golf  stack 

9
在源内编码图像
高尔夫挑战是在源文件中编码和压缩以下图像。 为此,您需要编写3个函数:red,green和blue,它们接受图像的x / y坐标并返回0-255之间的相应R / G / B像素值。 这是C / C ++测试代码: #include <stdio.h> #include "your_file" int main() { int x, y; for(y = 0; y < 32; ++y) for(x = 0; x < 32; ++x) printf("%i %i %i\n", red(x, y), blue(x, y), green(x, y)); } 以及输出:http : //pastebin.com/A770ckxL(您可以使用它来生成图像数据) 规则和详细信息: …


4
在迷宫中撞倒墙壁
规则: 在本游戏中,您从大小为N x M的矩形网格的顶部开始,该矩形网格由墙壁和开放空间组成。输入的是N行,每行M个字符,其中a .指定一个开放空间,a x指定一个墙。您的程序应输出最小的数字K,以使从左上角到右下角(无对角线)的路径跨越K壁。 例如,给定输入: ..x.. ..x.. xxxxx ..x.. ..x.. 您的程序应输出2。 其他例子: 输出4: xxxxx x.x.x x.x.x x..xx 输出0: .xxxxxxxx .x...x... .x.x.x.x. .x.x...x. ...xxxxx. 输出6: xx xx xx xx xx 额外花絮: 如果使您的生活更轻松,则可以将N和M指定为命令行参数。 如果可以让您的程序以某种形式打印出路径,则可以得到额外的奖励。
10 code-golf  maze 

2
通过添加空格来对齐文本
鉴于此文字 Lorem ipsum dolor坐下,私立教育专家,seu do eiusmod tempor incididunt ut Labore et dolore magna aliqua。尽量不要抽烟,不要因抽烟而锻炼。Duis aute irure dolor in reprehenderit in voltate velit esse cillum dolore eu fugiat nulla pariatur。不擅长于圣人的情节,应在负责任的犯罪活动中动工。 编写最短的程序,以产生以80个字符对齐的相同文本。上面的文本必须与以下内容完全相同: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut …

7
检查一串是否是一对双胞胎
说明 可以通过散布两个字母以形成一个新的字符串来打乱两个字符串,就像可以将两堆纸牌打乱形成一个单独的字符串一样。 例如,可以将字符串HELLO和WORLD改组为HWEOLRLLOD或HEWORLLLDO,或者简单地为HELLOWORLD。 这是不是一个洗牌如果没有保存的信件的原始顺序。例如,Din WORLD不能R在改组后出现。EHLLOWRDLO举例来说,这意味着即使其中包含所有原始字母,也不是HELLOand WORLD的改组。 如果可以通过改组两个相同的琴弦来构成双胞胎,则该琴弦是双胞胎的混洗。例如,ABACBDECDE是双胞胎的混洗,因为它可以通过改组ABCDE和形成ABCDE。DBEACBCADE不是双胞胎的混洗,因为它不能通过混洗两个相同的琴弦来形成。 计划详情 给定一个输入字符串,0如果不是一对双胞胎,则输出,如果不是一对双胞胎,则输出一个双胞胎字符串。 您可以假设输入字符串的长度(包括4到20个字符),并且完全由大写字母字符组成。它应该能够在合理的时间内运行,例如不到10分钟。 这就是代码高尔夫,所以最短的解决方案是成功的。 示例I / O > ABACBDECDE ABCDE > DBEACBCADE 0 > FFFFFF FFF > FFGGG 0 > ABBA 0 > AABB AB > AABAAB AAB 我有一个示例(非高尔夫)实现。

6
枚举具有n个节点的所有二叉树
给定一个整数n,用n个内部节点枚举所有可能的完整二叉树。(完整的二叉树在每个内部节点上恰好有2个子节点)。树结构应作为树的预遍历输出,其中1表示内部节点,0表示外部节点(空)。 以下是前n个示例: 0: 0 1: 100 2: 11000 10100 3: 1110000 1101000 1100100 1011000 1010100 这是一场代码高尔夫,奖金最少的人物。这些树应该每行输出到stdout。该程序应从命令行或标准输入中读取n。

1
Code 39条码扫描器
1974年开发的Code 39是条形码中最常用的符号或类型之一,尽管零售中最常见的是UPC / EAN系统。Code 39条形码可以对大写字母,数字和一些符号进行编码,使用特殊字体从计算机软件进行打印很容易。这导致了它们在商业和工业上的广泛使用(例如,公司ID徽章,资产跟踪,工厂自动化)。 创建最短的程序或函数,以从512x512像素灰度图像的任何方向读取Code 39条码;条形码可能未水平或垂直对齐。 您的程序必须接受标准的图像文件格式,并产生以条形码编码的数据作为其标准输出或返回值(不包括任何开始/停止字符)。 没有图像包含多个有效的Code 39条形码,并且没有条形码对空格字符(ASCII 32)进行编码。 如果图像中未显示有效的Code 39条码,则程序必须输出一个问号(?)。 我已经准备了JavaScript参考实现和 PNG格式的图像测试套件,包括有效条形码和无条形码。该参考实现在最新的Web浏览器中仅使46个测试案例中的3个失败,该参考实现旨在显示一种可能的解码算法,而不严格符合上述规范。 有效提交至少通过了这些测试的80%(37/46),并且在相当快的CPU(例如2.6 GHz四核)上为每个图像花费的时间不超过一分钟。我的参考实现通过了93%的测试,并在10秒内(在运行Google Chrome的台式机上)处理了每个图像。 (此问题是2011年5月28日在Meta上提出的。)
10 code-golf 

16
随机抽样,无需更换
创建一个函数,该函数将输出从一个范围中得出的一组不同的随机数。集合中元素的顺序无关紧要(甚至可以排序),但是每次调用函数时,集合的内容都必须不同。 该函数将以您想要的任何顺序接收3个参数: 输出集中的数量计数 下限(含) 上限(含) 假设所有数字都是0(含)到2 31(不含)之间的整数。可以将输出传递回任何您想要的方式(写入控制台,作为数组等)。 评判 条件包括3个R 运行时 -在Windows 7四核计算机上使用免费或易于使用的编译器进行了测试(必要时提供链接) 稳健性 -函数是否处理极端情况,或者陷入无限循环或产生无效结果-无效输入中的异常或错误有效 随机性 -它应该产生随机结果,使用随机分布很难预测。使用内置的随机数生成器就可以了。但是,不应有明显的偏差或明显的可预测模式。需要比Dilbert会计部门使用的随机数生成器更好 如果它是健壮且随机的,那么它就取决于运行时间。缺乏鲁棒性或随机性会极大地损害其地位。

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.