Questions tagged «decision-problem»

对于涉及确定输入是否满足特定条件的挑战,以及输出代表该决策的一些数据。

20
确定整数是否为给定基数的回文(基数)
编写一个程序,从stdin读取两个整数,每个换行符终止,以下称为“ number”和“ radix”,并且: 打印你想,如果数字是在基数回文任何固定的消息(例如true,t,1) 打印你想,如果数字是不是在基数回文(例如,任何不同的固定信息false,f,0等) 这些信息在每次跑步时都必须相同,但是没有关于它们必须是什么的规则(最好是打高尔夫球的规则)。 您可以假设输入有效,两个正整数。“数字”不超过2147483647,“基数”不超过32767。 您可能不会使用外部资源,但可能会使用语言默认包含的任何数学函数。 注意: 基数只是数字的基数。 样品运行: 16 10 false 16 3 true 16 20 true 121 10 true 5 5 false 12346 12345 true 16781313 64 true 16781313 16 true

1
胶带正则表达式决定器
您的任务是创建一个程序,该程序使用来自StackExchange网络上站点的代码段确定给定的字符串是否为有效的正则表达式。 为了解决这一挑战,将对正则表达式方言进行精简,并尽量减少其元字符集:()*?|\。因此,您将无法使用内置的正则表达式解析器。 \用于转义元字符。它后面必须跟一个元字符。 未转义的括号必须保持平衡 *并且?必须在前面加上非元字符,带括号的组或转义的元字符。 所有其他可打印的ASCII字符以及换行符,制表符和空格都必须支持为非元字符。未定义包含其他字符的字符串会发生什么。 正则表达式的实际含义对于此挑战并不重要。 例子 Truthy: abc a? (a|)* () a|b* \* \\ \\* a*b?(cd|e) + [ } (123\))* \| (a(b(c|d)*e)*f)* (|\)*) (abc)+* (abc)+ +abc ^ last test case is an actual newline Falsy: ?abc * ** \ ( a*? a?* ? a) (\) (|\)* \() |* …

2
这是Tichu的有效戏吗?
Tichu是一种纸牌游戏,其中玩家从包含52张标准纸牌的甲板上轮流玩几组纸牌,外加4张额外的纸牌: 的龙,它比任何其他卡更大的价值 的凤,其可以作为通配符作用 的狗,它通过转向你的合作伙伴 值1 的麻将(以及持有该值的人先打) 第一个玩家(据说具有“领先”)可以选择玩以下类型的卡组合之一: 一单个(例如6) 一对(JJ) 一个三重(555) 一个完整的家(QQQ33) -三和一对 一个直的(56789) - 5或更多个连续的卡 一拖拉机(223344) -对任何连续序列 然后,仅允许随后的玩家玩一组相同类型但严格更高的纸牌。例如,QQ可以在上播放JJ,但QQKK不能播放(它是拖拉机,而不是一对)。满屋是按三元组排序的(例如77722> 44499),直线和拖拉机的长度必须相同(456789不能在上方播放23456)。ace高。 有一个例外:同一张卡中的任何四张都是炸弹,并且可以在除高级炸弹之外的任何东西上玩。1个 巨龙可以自己在任何单人之上或带头(但无处可)玩。凤凰号除了可以用作通配符外,还可以在除龙以外的任何单个单张上播放。2狗只能自己带头玩,并立即结束回合。3 您面临的挑战是确定给定的Tichu剧本是否有效。 您可以接受任何形式的整数或字符串列表的两种播放方式-在任何一种情况下,您都可以选择纸牌到整数/字符的任何映射。如果有以前的播放,它将始终有效,如果没有,即玩家处于领先地位,则第一个输入将为空数组/字符串(与其他输入的类型匹配)。不保证以任何特定顺序提供卡。 您的输出必须从一组恰好两个不同的值中进行选择,其中一个值指示播放是合法的,而另一个值则指示不是合法的。 无需测试卡片组中是否确实存在这组卡(例如77766,88877由于只有四个7 ,因此不可能进行测试)-永远不会给出这种情况。 在以下测试案例中,234567890JQKA代表2到ace,分别RPD1代表龙,凤凰,狗和麻将。空字符串在此处显示为-。这些戏剧是合法的: 6 J JJ QQ 555 KKK 44499 77722 23456 56789 223344 QQKKAA 49494 72727 A R A P P R 66 7P P6 …

6
让我们玩Rummikub!
注意:这与游戏Rummikub的变体有关 背景与规则 Rummikub是一款基于图块的游戏。有四种颜色:红色,橙色,蓝色和黑色。对于每种颜色,有13个磁贴(标记为1到13),并且还有2个与颜色无关的小丑,因此共有54件。在Rummikub的这种变体中,每位玩家获得14个磁贴,并且每局必须再获得一个磁贴,然后每回合再丢一枚,这样磁贴数是恒定的。玩家看不到彼此的瓷砖。目标是对图块进行分组,以使所有块至少属于一组(请参见下文)。当玩家将所有棋子分组时,他们放下棋盘并露出棋子。然后其他人检查所有组合是否有效,如果有效,则玩家赢得该回合。 瓷砖如何分组? 组只有两种类型: 多色组: 它们由3或4个图块组成。 它们仅包含编号相同的图块。 所有的瓷砖都是不同的颜色。 范例:RED 9, BLUE 9, BLACK 9。 单色组: 它们至少包含3个图块。 它们不能包含超过13个图块。 它们仅包含具有升序排列的不同连续编号的图块。 所有图块都具有相同的颜色。 标1 有的图块可能不会位于标有的图块之后13。 范例:RED 5, RED 6, RED 7。 等等,小丑们做什么? 小丑可以代替游戏中的任何一块。例如,我们的第一个例子可以成为 JOKER, BLUE 9, BLACK 9,RED 9, JOKER, BLACK 9或RED 9, BLUE 9, JOKER。这同样适用于我们的其他示例。但是,一个人可能不会将两个Joker放在同一组中,因此JOKER, ORANGE 8, JOKER禁止类似的事情。 任务 给定一个Rummikub切片组,确定它是否有效。您可以确保不会出现重复的图块,除了两个小丑,而且您输入的图块是有效的(例如,60不会出现类似的内容)。 输入输出 您可以采用任何标准方法输入并提供输出。 …

5
二次序列中的有效术语?
给出四个数字。对于该序列,前三个分别是,和:a一个abbbcCc Tn=an2+ b n + cŤñ=一个ñ2+bñ+CT_n=an^2+bn+c 您可以通过任何方式输入这四个数字。输出应该是在你的答案提到的两个不同的输出中的一个,一个装置,所述第四数目是序列中的项(上述方程具有用于至少一个溶液这是当一个整数,,和是替换给定值),另一个则相反。ññn一个一个abbbCCcŤñŤñT_n 这是代码高尔夫,所以最短的答案以字节为单位。您的程序应适用于任何输入其中数字为负或正(或0),十进制或整数。为了避免出现问题但保持一定的复杂性,非整数总是以结尾。不允许使用标准漏洞。a ,b ,c ,Tñ一个,b,C,Ťña, b, c, T_n.5.5.5 测试用例 a |b |c |T_n |Y/N ------------------------ 1 |1 |1 |1 |Y #n=0 2 |3 |5 |2 |N 0.5 |1 |-2 |-0.5|Y #n=1 0.5 |1 |-2 |15.5|Y #n=5 0.5 |1 |-2 |3 |N -3.5|2 |-6 |-934|Y …

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字节。是否有任何语言的较小解决方案?

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 (一切都错了)

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, …

1
Tatamibari求解器
背景 Tatamibari是由Nikoli设计的逻辑难题。 Tatamibari拼图游戏在带有三种不同符号的矩形网格上播放:+,-。和|。求解器必须根据以下规则将网格划分为矩形或正方形区域: 每个分区中必须只包含一个符号。 一个+符号必须包含在一个正方形。 甲|符号必须被包含在具有比宽度更大的高度的矩形。 甲-符号必须被包含在具有比高度较大的宽度的矩形。 四个片段可能永远不会共享相同的角落。(这是日本榻榻米瓷砖通常的放置方式。) 以下是一个示例难题,并提供了解决方案: 任务 解决给定的Tatamibari难题。 输入输出 输入是一个2D网格,代表给定的Tatamibari拼图。每个单元包含四个字符之一:+,-,|,和您所选择的字符来表示一个非线索细胞。在测试用例中,使用星号*。 您可以选择任何合适的输出格式,这些输出格式可以明确表示Tatamibari拼图的任何有效解决方案。这包括但不限于:(如有疑问,请在评论中提问。) 4元组的列表,其中每个元组包括矩形的顶部索引,左侧索引,宽度和高度(或任何等效表示形式) 与输入形状相同的数字网格,其中每个数字代表一个矩形 坐标集列表,每个坐标集包括矩形中单元格的所有坐标 如果难题有多个解决方案,则可以输出任意数量(一个或多个)的有效解决方案。输入保证至少有一个解决方案。 测试用例 Puzzle: |-* *+| *-* Solution: 122 134 554 ===== Puzzle: +*** **|* *+** ***- Solution: 1122 1122 3322 3344 ====== Puzzle: |*+*+ ***** ****- ***+| +**** Solution: 12233 12233 44444 55667 …

5
巫师的法术书
编辑:我以前没有玩过D&D,所以当我最初提出这个问题时,我没有进行适当的研究。对此我深表歉意,我正在做一些修改,这些修改可能会使答案无效,以使它们尽可能完全符合dnd 5e规则。抱歉。 最近的热门网络问题中的D&D爱好者似乎在确定巫师选择的咒语是否与可能性相符时遇到了一些麻烦-我想我们应该提供帮助! 介绍 (所有这些已经在前面提到的问题中进行了描述) 巫师从开始就知道两个1级法术(1级): [1, 1] 每次巫师获得一个等级(除了等级12、14、16、18、19和20),他们都会学习一个新的法术(强制性)。 此外,升级时,可以选择(可选)将其中一个咒语替换为另一个。 学习和替换的法术必须是有效的法术槽位,是你巫师等级的一半。见下表: Sorcerer level Highest spell level possible 1 1 2 1 3 2 4 2 5 3 6 3 7 4 8 4 9 5 10 5 11 6 12 6 13 7 14 7 15 8 16 8 17 …

2
解决模块化SNISP的暂停问题
本着为Befinge解决停机问题的精神,让我们定义另一种称为Modilar SNISP的 2D语言。Modilar SNISP具有以下六个指令: \ 指令指令指针如下: 如果从顶部接近,请向右走; 如果从右边靠近,则往上走; 如果从底部接近,则向左走; 如果从左侧接近,则向下走。 / 指令指令指针如下: 如果从顶部接近,则向左走; 如果从左侧接近,则上升; 如果从底部接近,请向右走; 如果从右边靠近,则往下走。 ! 跳过下一条指令。 @ 将IP位置和方向推送到调用堆栈中。 #从调用堆栈中弹出IP位置和方向并进行恢复,然后跳过下一条指令。如果调用堆栈为空,则执行停止。 . 什么也没做。 指令指针从右上角的左上角开始。如果它离开了运动场,执行将停止。 模块化SNISP不能比PDA强大,因为它的唯一无限存储源是带有有限字母(所有IP(位置,方向)对的集合)的堆栈(调用堆栈)。暂停问题对于PDA来说是可以决定的,因此这一挑战应该总是可能的。 挑战 您的目标是编写一个程序,该程序使用代表Modilar SNISP程序的字符矩阵,并根据是否停止而返回两个不同的输出之一。 这是代码高尔夫球,因此最短的有效程序(以字节为单位)获胜。 技术指标 字符矩阵的处理方式很灵活:可以使用换行符分隔的字符串,字符串数组,字符数组,二维字符数组,带整数表示宽度的扁平字符数组等。测试用例选择其中的第一个。 您可以假设输入矩阵将是矩形的(因此您不必填充短行)并且长度和宽度将为非零。 您可以选择任意两个不同的输出,而不仅仅是真/假。 你可以假设输入矩阵将只包含有效的命令(\,/,!,@,#,和.)。 当说一条命令“跳过下一条指令”时,您可以假定将要跳过下一条指令。特别是,在以下情况下将永远不会遇到它:(1)它位于运动场的边缘,并且(2)IP垂直于该边缘移动,以使IP之后的“下一条指令”位于运动场之外。 测试用例 以下代码段可用于测试使用该语言的程序。请注意,它比此处给出的实际规范稍微宽松一些(例如,它允许使用.非禁忌字符)。 function htmlEscape(t){let i=document.createElement("span");return i.innerText=t,i.innerHTML}function tick(){snisp.tick(),snisp.update()}function run(){runButton.style.display="none",stopButton.style.display="",code.style.display="none",executionArea.style.display="",snisp.initialize(),intervalId=setInterval(tick,INTERVAL_MS)}function stop(){runButton.style.display="",stopButton.style.display="none",code.style.display="",executionArea.style.display="none",clearInterval(intervalId)}let TICKS_PER_SECOND=5,INTERVAL_MS=1e3/TICKS_PER_SECOND,runButton=document.getElementById("run-button"),stopButton=document.getElementById("stop-button"),code=document.getElementById("code"),executionArea=document.getElementById("execution-display"),intervalId,snisp={x:null,y:null,direction:null,callStack:null,stopped:null,playfield:null,padRows:function(){let t=Math.max(...this.playfield.map(t=>t.length));for(let i=0;i<this.playfield.length;i++)this.playfield[i]=this.playfield[i].padEnd(t,".")},initialize:function(){this.x=0,this.y=0,this.direction="right",this.callStack=[],this.stopped=!1,this.playfield=code.value.split("\n"),this.padRows(),this.update()},getCurrentChar:function(){let t=this.playfield[this.y];if(void 0!=t)return t[this.x]},backslashMirror:function(){let …

1
跳棋跳棋
这项挑战的目标是确定此举是否是合法的英国跳棋棋子。 这项挑战将使用8x8电路板。移动的棋子应被视为只能对角移动的人(不是国王)。板上将有0个或更多的黑色块和1个或更多的白色块。一块白色的东西目前正在移动。如果直接在其后面的正方形为空,则白色块可以“跳跃”到其前面的一个黑色块上。如果在它的对角线前面的任何一个方向都有另一个黑色块,则可能会从该位置再跳一次。捕获是强制性的,因此不进行可用的跳转是非法的。但是,并不一定要采用最大化跳跃次数的路径。基本上,这意味着,如果您进行了跳跃,并且从终点位置跳出了另一个可能的跳跃,则该移动是非法的。件位使用以下编号方案: 规则 输入: 代表黑块的数字列表。 代表白色的数字列表。 白棋的起始位置 白片的结束位置 输出: 如果移动有效,则为真实值,否则为假值 您可以假设一块白色将始终占据起始位置。 如果方便,您可以假定白名单中的第一个白名单将包含起始位置,而不是接受输入3。 标准代码高尔夫规则。最少的字节数获胜。 测试用例 例如,O是开始位置,X是结束位置,B是黑色块,W是白色块 Black pieces: [] White pieces: [5] Move: (5, 1) Output: True Single move no jump X _ _ _ O _ _ _ B: [6] W: [9] M: (9, 2) O: True Single jump _ …

4
我有许可吗?
挑战 给定一个指示文件的UNIX权限及其所有权(用户ID和组ID)的符号表示形式的字符串,请确定给定的用户是否A具有读取/写入/执行该文件的权限。 相关的。 UNIX系统中的权限 在UNIX中,每个文件都有三类权限(user,group和others)和所有权,包括文件所属的用户和组。 符号表示法由十个字符组成。在这个挑战中,第一个角色并不重要。其余的9个字符位于三个字符集的三个集合中,分别代表用户,组和其他类的权限。每组中的字符表示是否允许读/写/执行。如果允许的话,这将是r,w或x。否则,它将为-。 注意的setuid,setgid的和粘滞位可每一组的第三个字符改变为s,S,t或T。这是一个简单的规则:如果字符是小写字母,则设置权限;否则,事实并非如此。 (有关权限的符号表示法的详细信息,请参阅此处。) 每个用户都有其用户ID,每个组都有其组ID。所有ID将为非负整数。一个用户将至少属于一个组。如果用户A想要访问文件,则系统将按以下方式检查其权限: 如果文件属于user A,请检查用户类的权限。 如果文件不属于A,但A属于文件所属的组,请检查组类的权限。 否则,请检查其他类的权限。 但是,有一个例外:如果用户ID为0(超级用户),则他们有权执行任何操作! 技术指标 您的程序/函数应该以任何合理的格式将它们作为输入: 以符号表示的权限。 文件所属的用户标识和组标识。 的用户ID A和A所属的组ID列表。 访问类型。您可以使用任何三个不同的一位数或一个字符的值进行读取,写入和执行。 如果A有权访问文件,则返回/输出一个真实值;否则,返回/输出一个虚假值。 您可以假定符号的第一个字符将始终为-(常规文件)。 这是代码高尔夫球,因此最短的字节为准! 测试用例 格式为[permissions, user ID of file, group ID of file, user ID of A, group IDs of A, type(r/w/x)]。 [-rwx------, 13, 15, 13, [15, 24], r]: …

6
这是令人满意的数字吗?
受此聊天对话启发 甲满足号码是一个号码,其十进制表示的形式为abx,具有以下属性: x是最长的尾随重复后缀,如果末尾没有重复,则为最后一位(123333-> 3333,545656-> 5656,123-> 3) b是x(123333-> 2,55545656-> 4)之前的一位数字 a是剩余的前缀(123333-> 1,55545656-> 555) a == c**b(**表示指数),其中c是x(1623333-> 4(3 3 3 3,不是33 33))的最小重复部分的重复次数 例如,8300是具有满足数a = 8,b = 3,c = 2,和x = 00。24651是不是一个满意的数字,因为x = 1,b = 5,a = 246,并且没有整数c是满足c^5 = 246。1222也不是令人满意的数字,因为使用x = 222和时b = 1,没有剩余数字a。 给定正整数n >= 100,输出是否n为令人满意的数字。 例子 8300: True (a=8, b=3, c=2, …

16
我们共享主要集群吗?
的素簇的整数的Ñ高于2被定义为通过最高素所形成的一对严格低于Ñ和最低素严格高于Ñ。 请注意,按照上述定义,如果整数是质数本身,然后其首要簇是一对素数的前述和随后它。 任务 给定两个整数,整数N,M(N,M≥3),根据N和M是否具有相同的素数簇,输出真实/虚假值。 这是代码高尔夫球,因此目的是尽可能减少字节数。因此,以每种编程语言中最短的代码为准。 测试用例/示例 例如,9的素类为[7, 11],因为: 7是严格低于9的最高素数,并且 11是严格高于9的最低素数。 同样,素数群集67是[61, 71](请注意67是素数)。 真对 8、10 20、22 65、65 73、73 86、84 326、318 513、518 假对 4、5 6、8 409、401 348、347 419、418 311、313 326、305

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.