编程拼图和代码高尔夫

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

13
有没有更小的重图检查器?[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 去年关闭。 我最近开始玩代码搜索,并尝试编写最小的互写检查器。 一个tautogram是所有单词用相同字母开头,例如一句话:花来自法国蓬勃发展。 给定一个句子作为输入,请确定它是否是一个互变符号。 测试用例 Flowers flourish from France True This is not a Tautogram False 我想出了这个python代码(因为这是我的主要语言): print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False) 用法: python3 tautogram.py Flowers flourish from France # True python3 tautogram.py This is not a Tautogram # False 该句子可以包含逗号和句点,但不能包含其他特殊字符,只能包含大小写字母和空格。 它的大小是98字节。是否有任何语言的较小解决方案?

10
在任何基础上进行Fizzbuzz
挑战 输入: 2到62(含)之间的整数bbb。 输出: 使用任何合理的数字表示形式,从111到以b为底的5000105000105000_{10}的等值数。bbb 然而: 如果该数量是由整除⌊b÷2+1⌋⌊b÷2+1⌋\lfloor b÷2+1\rfloor(四舍五入,例如基体7将是7/2 = 3.5,3.5 + 1 = 4.5,四舍五入到4),则输出'嘶嘶声',而不是数。 如果该数量是由整除⌈b÷3+3⌉⌈b÷3+3⌉\lceil b÷3+3\rceil(四舍五入,例如11/3 = 3.666,3.666 + 3 = 6.666,四舍五入到7),则输出'巴兹'。 您可能会猜到,如果您的电话号码可被两者整除,则输出“ Fizzbuzz”。 例子 使用[0-9],[AZ]和[az]作为数字 (为了使示例简短,我仅包括前10个值-通常每个序列中有4990个以上的项目) 输入: 10(因此“ Fizz” = 6,“ Buzz” = 7) 输出: 1,2,3,4,4,嘶嘶声,嗡嗡声,8,9,10 输入: 2(因此'Fizz'= 2和'Buzz'= 4) 输出: 1,Fizz,11,Fizzbuzz,101,Fizz,111,Fizzbuzz,1001,Fizz (我已包含以下内容的前50个值,以更好地展示它们的工作原理) 输入: 55(因此'Fizz'= 2810281028_{10} = s55s55s_{55}和'Buzz'= 2210221022_{10} …
10 code-golf  math  binary 

4
手机充电
挑战经我的大学代码挑战竞赛许可 我们对手机的依赖性使我们每天晚上都对手机充电直至达到电池的最大电量,因此,我们不会在第二天的中间出现断电的风险。甚至有些人在白天看到免费的插座时,会对可能发生的事情收取费用。 我是他们其中的一员。 多年以来,我不断完善自己的技术,以使每晚不给电池充电到最大程度。通过众所周知的重复程序,我可以清楚地知道一天中的哪些时间可以进行部分充电(以及电量将增加多少个单位)以及每次充电之间会降低电池电量的原因。利用这些数据,每天晚上我都要计算出第二天必须离开房屋的最低电池电量,以使其永远不会低于我自己设定的两个门槛。 当我离开已建立的例行程序时,我还没有掌握的是相同的计算方法,但我有几种选择可以做事。例如,这发生在我前往另一个可以以不同方式到达的城市的路上。 在解决该问题的第一种方法中,我假设我想绕着“棋盘”从左上角到右下角移动。在每个“小区”中,我可以为移动电话充电一定的金额,或者我不能对其充电,并且其负载水平会下降。 挑战 给定一个整数的FxC矩阵,输出我需要从左上角到右下角的最小电池电量,而负载水平不得低于2个单位。 在矩阵中,正数表示在必须继续沿自己的路径行驶之前我可以为手机充电多少,而负数表示没有插座,并且移动电话的电池电量降低了该数量。确保源单元格和目标单元格中​​的数量(左上角和右下角)始终为0,其余值(绝对值)不超过100。 给定的示例: ⎡⎣⎢⎢⎢📱−1−11−1−1111−1−1−1−1−1−10⎤⎦⎥⎥⎥[📱−11−1−1−1−1−1−11−1−111−10] \begin{bmatrix} 📱&-1&1&-1 \\ -1&-1&-1&-1 \\ -1&1&-1&-1 \\ 1&1&-1&0 \end{bmatrix} 我需要更少电池的路径是: ⎡⎣⎢⎢⎢📱− 1− 11个− 1− 11个1个1个− 1− 1− 1− 1− 1− 10⎤⎦⎥⎥⎥[📱-1个1个-1个-1个-1个-1个-1个-1个1个-1个-1个1个1个-1个0] \begin{bmatrix} 📱&-1&1&-1 \\ \color{blue}{-1}&-1&-1&-1 \\ \color{blue}{-1}&1&-1&-1 \\ \color{blue}{1}&\color{blue}{1}&\color{blue}{-1}&0 \end{bmatrix} 我需要的最小电池电量是4 笔记 起点总是在左上角 终点总是在右下角 您无法进入已通过的单元。示例:位置(0,1)后,您将无法到达起始点(0,0) 您的电池电量不能(出于任何原因)低于2 您可以假设总会有起点和终点 如果需要,可以将一维数组作为多维数组 [1,2,3] …

8
左中右(LCR)码高尔夫
在一个聚会上,我被介绍给游戏LCR。现在这不是一个伟大的游戏,因为没有技能,只有随机的机会。但是这让我开始思考,我可以编写代码,然后用R编写了一个快速程序来对游戏进行建模。 维基百科修改了游戏规则,以匹配我们的游戏方式: 每个玩家至少获得3个筹码。玩家轮流掷出三个六边形的骰子,每个骰子的一侧都标有“ L”,“ C”,“ R”,而在其余三个面上标有一个点。对于投出的每个“ L”或“ R”,玩家必须分别向其左侧或右侧传递一个筹码给玩家。“ C”表示到中心(底池)的筹码。点不起作用。 如果玩家剩下的筹码少于三个,则他们仍在游戏中,但筹码数量是他们在回合中掷骰子的数量,而不是全部掷出三个。当玩家的筹码为零时,他们在回合中通过骰子,但可能会从其他人那里获得筹码,并相应地进行下一回合。获胜者是最后一个将筹码放入中心的玩家。 比赛:使用您选择的语言编写一个程序,该程序输入玩家人数和起始筹码数量,并模拟LCR游戏,显示每个玩家滚动后的游戏状态。 例如,一个游戏可能输出为: [[[3,3,3,3],0],[[1,4,3,4],0],[[1,4,3,4],0],[[1,4,1,4],2],[[1,4,1,2],4], [[0,4,1,3],4],[[0,3,2,3],4],[[0,3,0,3],6],[[0,3,1,1],7],[[0,3,1,1],7], [[2,0,1,1],8],[[2,0,0,1],9],[[2,0,0,0],10],[[0,1,0,0],11], [[1,0,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[0,0,0,0],12]] ht:乔纳森·艾伦 输出不必看起来完全像这样,但是应该容易分辨骰子掷骰,每个玩家拥有多少筹码以及每回合中锋拥有多少筹码。 这是代码高尔夫球,所以最短的代码获胜。
10 code-golf  random 

3
被困骑士序列
介绍 受最近录像带《被困的骑士-菲利普》的启发,我提出了一个挑战。 被捕获的骑士序列是长度为2016的有限整数序列,从1开始,具有以下构造规则: 用以下方式写一个数字螺旋: 17 16 15 14 13 ... 18 5 4 3 12 ... 19 6 1 2 11 ... 20 7 8 9 10 ... 21 22 23 24 25 ... 在1上放置一个骑士。 根据国际象棋的规则,将骑士移至网格数量最少的网格,该网格以前从未被访问过(即垂直2个单位,水平1个单位,反之亦然)。 重复直到骑士被卡住。 这是前三个步骤: 步骤1 17 [16] 15 [14] 13 [18] 5 4 3 [12] 19 …
10 code-golf  number 

20
平行帐户(第2天)
挑战经我的大学代码挑战竞赛许可 几个月前完成学业后,玛丽(Marie)开了一个银行帐户,开始在镇上领取她的第一份工作。从那时起,她一直在与它进行一些交易。她的第一笔付款是1000美元。她用这笔钱支付了一次晚餐,邀请她的父母参加(晚餐费用为150美元),然后,她在一家知名的超市购物(80美元),并为度假预订了旅馆(200美元)。月底,她又收到了付款(1040美元,比前一个月略多),第二天又在超市花了70美元。 如今,她意识到,如果在超市中支付了第一笔80美元之后,已经创建了第二个帐户并冻结了第一个帐户,则两个帐户的余额将完全相同: 1000− 150− 80ŤÔ 吨一升= 770− 2001040− 70ŤÔ 吨一升= 7701000−150−80⏟Total=770−2001040−70⏟Total=770 \underbrace{1000\quad -150\quad -80}_{Total=770}\quad \underbrace{-200\quad 1040\quad -70}_{Total=770} 该事件对她来说非常罕见,以至于她想继续确定她的帐户和她的朋友的活动是否也具有此功能。 挑战 给定交易列表,输出银行帐户所有者可以创建第二个帐户,以便两者都具有相同的最终余额的瞬时时间数。 例如: [1000, -150, -80, -200, 1040, -70] 1 )ŤÔ 吨一升= 01000− 150− 80− 2001040− 70ŤÔ 吨一升= 15401)⏟Total=01000−150−80−2001040−70⏟Total=1540 \color{red}{1)\quad\underbrace{}_{Total=0}\quad \underbrace{1000\quad -150\quad -80\quad -200\quad 1040\quad -70}_{Total=1540}} 2 )1000Ťotal=1000−150−80−2001040−70Total=5402)1000⏟Total=1000−150−80−2001040−70⏟Total=540 \color{red}{2)\quad\underbrace{1000}_{Total=1000}\quad \underbrace{-150\quad -80\quad …
10 code-golf 

11
玩Pickomino
在Pickomino游戏中,桌子中间放着几块瓷砖,每块瓷砖上都有一个不同的正整数。每回合,玩家以某种方式掷骰子并获得分数,这是一个非负整数。 现在,玩家将选择仍低于或等于其分数的最高编号的图块,从中间移除图块并将其添加到堆栈中。如果由于中间的所有数字均高于玩家的分数而无法这样做,则玩家将失去其堆栈中最上面的图块(该图块最近添加),并返回中间。如果玩家没有剩余的瓷砖,则什么也不会发生。 挑战 模拟对自己玩游戏的玩家。您会在中间找到一个磁贴列表,以及一个获得的分数列表。在评估所有回合之后,返回玩家的磁贴列表。 挑战规则 您可以假设包含图块的列表是有序的,并且两次都不包含任何整数。 您可以按任意顺序获取两个输入列表 输出必须保持切片在堆栈上的顺序,但是您可以决定列表是从上到下还是从下到上排序。 通用规则 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您使用非代码高尔夫球语言发布答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于具有默认I / O规则的答案,因此您可以使用STDIN / STDOUT,具有正确参数的函数/方法以及返回类型的完整程序。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接(即TIO)。 建议为您的答案添加说明。 例 (摘自第6个测试用例) Tiles: [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] Scores: [22, 22, 22, 23, 21, 24, 0, 22] 第一个分数是22,所以取中间<= 22的最高分块,也就是22本身。 Middle: …
10 code-golf  game 


12
Quine以二进制形式输出自身
您的任务(如果希望接受它)是编写一个程序,该程序以二进制UTF-8表示形式输出其自己的源代码。 规则 源必须至少为1个字节长。 您的程序不得输入(或有未使用的空输入)。 输出可以是任何方便的格式。 允许使用尾随换行符。 请注意,一个字节为8位,二进制UTF-8表示形式的长度必须为8的倍数。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 禁止出现标准漏洞。 例 假设您的源代码是Aä$$€h,其对应的UTF-8二进制表示形式是010000011100001110100100001001000010010011100010100000101010110001101000。 如果我运行Aä$$€h,输出必须是010000011100001110100100001001000010010011100010100000101010110001101000。 A --> 01000001 ä --> 1100001110100100 $ --> 00100100 $ --> 00100100 € --> 111000101000001010101100 h --> 01101000 Aä$$€h --> 010000011100001110100100001001000010010011100010100000101010110001101000 字符串到二进制UTF-8转换器 在线尝试! utf8转换

24
密码主教善良
源于此,现在删除帖子。 给定一个字符串,如果它构成一个不错的Bishop密码,则应回答(真实/虚假或两个一致的值),这是在满足以下所有条件时: 至少有10个字符 它至少有3位数字([0-9]) 它不是回文(反转时与自身相同) 如果您的代码是不错的Bishop密码,则您将获得0字节的奖励。 警告:待办事项不使用善良主教作为实际的密码强度的测量! 例子 好的Bishop密码 PPCG123GCPP PPCG123PPCG PPCG123gcpp 0123456789 Tr0ub4dor&3 不好的Bishop密码 PPCG123 (太短) correct horse battery staple (数字不足) PPCG121GCPP (回文) (太短且数字不足) abc121cba (太短和回文) aaaaaaaaaaaa (回文且数字不足) abc99cba (一切都错了)

11
映射作弊者!
提交所有作业后,将创建一个字典,将学生编号映射到其文件的哈希。 该字典,哈希表或映射(无论您的语言叫什么)将如下所示: {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"} 关键是学生编号,而值是哈希。 我们的任务是挑选作弊者!作弊者是具有相同哈希值的作弊者。 给定输入后{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"},该函数应返回(或打印)以下文本: 100 has identical files to 430 104 has identical files to 332 请注意,没有提到哈希唯一的文件。 另外,顺序在这里很重要: {100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"} 应该返回(打印)以下文本: 100 has identical …

3
任意随机(速度版)
给定integer n,计算n范围1..n^2(含)范围内的一组随机唯一整数,以使该集合的总和等于n^2 在这种情况下,随机是指有效输出之间的一致随机。给定的每个有效输出n必须有统一的机会被生成。 例如,n=3应该有三分之一的机会的各个输出6, 1, 2,3, 5, 1或4, 3, 2。由于这是一个集合,所以顺序无关紧要,4, 3, 2等同于3, 2, 4 计分 赢家是可以n在60秒内计算出最高分数的程序。 注意:为防止可能的部分硬编码,所有条目必须小于4000字节 测试中 所有代码都将在我的本地Windows 10计算机上运行(Razer Blade 15、16GB RAM,Intel i7-8750H 6核,4.1GHz,GTX 1060,以防您滥用GPU),因此请提供详细说明以在以下位置运行代码我的机器。 根据要求,条目可以通过Debian在WSL上运行,也可以在Xubuntu虚拟机上运行(两者都与上述相同) 提交将连续运行50次,最终得分将是全部50个结果的平均值。

15
矩阵拼图碎片
(受到https://codegolf.meta.stackexchange.com/a/17272/42963的随机启发) 给定一个矩形的数字矩阵(即0 - 9),输出矩阵的“块”,就好像这些数字被连接在一起形成单个块(按数字升序排列)一样。这些部件保证只能正交连接-没有任何部件将对角连接。最多只能有10个片段(即,一个3片段不会在同一矩阵中出现两次)。 例如,给定矩阵 0 1 1 1 0 0 1 2 3 3 2 2 以下是片段,以及示例输出: 0 0 0 1 1 1 1 2 2 2 3 3 间距对于保持部件的形状很重要,但是部件不一定需要内部间距。作品本身应以某种方式以一致的方式进行区分(例如,作品之间的换行符,确保每一个都是不同的字符,等等)。此外,不允许使用多余的空格(例如,尾随换行符或前导列)。例如,以下内容也将有效: 0 00 111 1 2 22 33 要么 # ## ### # # ## ## 但是以下内容不是(请注意0s 后面的空格): 0 0 …
10 code-golf  matrix 

30
转数
任务 编写一个函数或程序,以找出车轮在给定半径下行进给定距离所需的转数。 规则 输入可以是2个正有理数,并且可以采用任何方便的格式进行输入。 两个输入的单位相同。 您的代码中不得包含任何数字0-9。 输出将是一个整数(如果是float,则四舍五入为无穷大) 这是代码高尔夫球,所以最短的代码胜出 例子 distance radius output 10 1 2 50 2 4 52.22 4 3 3.4 0.08 7 12.5663 0.9999 3

15
多层次营销“腿”投资规则
与多层次营销相关的挑战。 一位同伴想要获得奖励。因此,它吸引了N投资者(N>=1),每个第i个投资者都进行了投资x[i]。当总和超过阈值时x[0]+x[1]+...+x[N-1] >= T,可以奖励同伴。但仅在满足以下条件时: 最低投资额应大于M(M<=N) 对于至少一个整数k,其中k>=M和k<=N,任何k投资者必须至少投资T/k每个; 给定N, x[], T, M您应该确定是否生成对等方的奖励(布尔结果,“是”或“否”)。最短的代码获胜。 例子: N=5; M=3; T=10000,为了产生对等方的奖励,必须满足以下条件之一: 任何3家公司各投资至少3334 任何4家公司各投资至少2500 所有这5家公司各投资了至少2000 N=6; M=2; T=5000: 任意2家各投资至少2500 任何3家公司各投资至少1667美元 任何4家公司各投资至少1250美元 任意5名至少投资1000美元 所有6家公司各投资了至少834美元 广义的:对于任何k,其中k>=M和k<=N: 任何k的N投资者投入至少T/k每 测试用例: 格式: N, x[], T, M -> correct answer 6, [999, 999, 59, 0, 0, 0], 180, 3 -> 0 6, [0, 60, …

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.