Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

3
有选择地谋杀正整数
介绍 算术监禁是一种特殊的工具,它可以包含正整数。但是,最近,正整数一直在试图逃脱。因此,管理人员已决定要消除一些正整数,以便向其他整数发送消息。他们聘请了一名软件工程师来编写程序,以找出要消除的整数以最大程度地发挥作用。 输入说明 输入是通过STDIN,命令行参数或用户输入函数(例如raw_input)给出的。您不能将其作为函数参数或预初始化的变量使用(例如,该程序希望在变量中输入x)。 输入的第一行包含一个正整数n,其中8 >= n >= 3。接下来是n包含n集合中字符的行[1,2,3,4,5,6,7,8,9]。这是一个示例输入: 5 22332 46351 65455 24463 65652 输出说明 监护人希望消除数字,以便满足以下条件: 在结果网格的每一行和每一列中,没有数字将出现两次; 消除的两个数字在水平或垂直方向上不得相邻; 尚存数字必须形成正交的连续组-可以从任何尚存数字移动到仅在水平和垂直方向移动且永远不会越过任何被淘汰号码的任何其他尚存数字。 输出输入(减去第一行),将消除的数字替换为#。 可能有不止一种解决方案。在这种情况下,您可以输出任何解决方案。 可能也没有解决方案。在这种情况下,输出字符串no answer。 这是示例输入的可能输出: #2#3# 46351 6#4#5 24#63 #56#2 输入和输出示例 每个输入都有多个输出,因此这些输出仅是示例。 输入: 5 46551 51565 32654 14423 43244 输出: 46#51 #156# 326#4 1#423 #324# 输入: 7 7183625 1681563 5238564 …
21 code-golf  grid 

16
位串物理
背景 是的,位串物理是真实的东西。这个想法是用仅在概率规则或某些规则下演化的比特串来构造新的物理学理论。尽管阅读了几篇有关它的论文,但我还是很困惑。但是,比特串世界使高尔夫成为一个不错的小代码。 程序宇宙 位串物理发生在所谓的程序宇宙中。在宇宙的演化的每个步骤中,存在有限列表L一些长度的位串的k,首先是两个元素的列表[10,11],其中k = 2。一个时间步的处理如下(使用类似Python的伪代码)。 A := random element of L B := random element of L if A == B: for each C in L: append a random bit to C else: append the bitwise XOR of A and B to L 所有随机选择都是一致随机的,并且彼此独立。 例 4个步骤的示例演变如下所示。从初始列表开始L: 10 11 我们随机选择A …

6
中国剩余定理
在中国剩余定理告诉我们,我们总能找到一些能产生下不同的素模所需的任何剩余物。您的目标是编写代码以在多项式时间内输出这样的数字。最短的代码胜出。 例如,假设我们得到了以下约束(%代表mod): n % 7 == 2 n % 5 == 4 n % 11 == 0 一种解决方案是n=44。第一个条件满足,因为44 = 6*7 + 2,所以44有剩余2时,除以7,因此44 % 7 == 2。也满足了其他两个约束。还有其他解决方案,例如n=814和n=-341。 输入项 对的非空列表(p_i,a_i),其中每个模数p_i是一个不同的质数,每个目标a_i是该范围内的自然数0 <= a_i < p_i。您可以采用任何方便的形式进行输入。它实际上不一定是对列表。您可能不认为输入已排序。 输出量 这样的整数n,以便n % p_i == a_i于每个索引i。该值不必是最小值,也可以是负数。 多项式时间限制 为了防止廉价的解决方案,只是尝试n=0,n=1,n=2,等等,你的代码必须在多项式时间在运行中输入的长度。请注意,m输入中的数字具有length Θ(log m),因此m其长度不是多项式。这意味着您最多不能计数m或不能进行一次运算m,但是可以对这些值进行算术运算。 您可能不会使用像一元这样的低效率输入格式来解决此问题。 其他禁令 不允许执行以下操作的内置函数:实现中国余数定理,求解方程式或因数。 您可以使用内置函数查找mod并进行模块化加法,减法,乘法和乘幂运算(使用自然数指数)。您可能不使用其他内置的模块化操作,包括模块化逆运算,除法和查找顺序。 测试用例 这些给出最小的非负解。您的答案可能有所不同。如果直接检查输出是否满足每个约束,可能会更好。 [(5, 3)] …

9
计算Collat​​z表兄弟
为正整数n定义函数f(n),如下所示: n / 2,如果n是偶数 3 * n +1,如果n为奇数 如果您将此功能重复应用到任何 大于0的 n,则结果似乎总是收敛到1(尽管尚无人能​​够证明这一点)。此属性称为Collat​​z猜想。 将整数的停止时间定义为必须通过Collat​​z函数f传递它的次数。达到1之前必须。这是前15个整数的停止时间: 1 0 2 1 3 7 4 2 5 5 6 8 7 16 8 3 9 19 10 6 11 14 12 9 13 9 14 17 15 17 让我们用相同的停止时间呼叫任何一组数字 Collat​​z表兄弟的数字。例如,5和32是Collat​​z表兄弟,停止时间为5。 您的任务:编写一个程序或函数,该程序或函数采用一个非负整数并生成一组Collat​​z表兄弟,其停止时间等于该整数。 输入项 通过STDIN,ARGV或函数参数指定的非负整数S。 输出量 它的停止时间是S所有的数字列表,排序中升序的顺序。该列表可以由您的程序输出,也可以由您的函数返回或输出。输出格式是灵活的:只要数字之间可以容易地区分,空格就可以了,换行​​符可以换行,或者您的语言的任何标准列表格式都可以。 要求 …

11
计算Hausdorff距离
介绍 在豪斯多夫距离测量度量空间的两个子集之间的差异。直观地来说,度量空间只是带有内置距离函数的某个集合。在这个挑战中,我们将使用具有普通距离的自然数d(a, b) := abs(a - b)。两个非空有限集之间的Hausdorff距离A和B由下式给出 max(max(min(d(a, b) for b in B) for a in A), max(min(d(a, b) for a in A) for b in B)) 以类似Python的符号表示。Hausdorff距离的计算方法是:找到与A的最近元素的B距离最大的元素B,与到的最近元素的A距离最大的元素,然后取这些距离中的最大值。换句话说,如果Hausdorff距离为d,则的每个元素A都在d的某个元素的距离内B,反之亦然。 输入项 您的输入是一个整数列表。它仅包含元素0,1,2,3,这意味着该列表的给定索引是否是的元件既不A也不B,仅A仅B或两者A和B。例如,输入[0,1,1,0,2,3]表示A = {1,2,5}和B = {4,5},如果我们使用基于0的索引(这没有区别,因为我们的度量标准是转换不变的)。 输出量 您的输出是A和之间的Hausdorff距离B。在上面的示例中,它是3。如果任何一组为空,则距离没有定义,您应返回-1。 规则 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 [] -> -1 [0] -> -1 [0,1,0] -> -1 [2,0,0,2] -> …

2
素多项式
给定一个多项式,确定它是否为质数。 多项式是ax^n + bx^(n-1) + ... + dx^3 + ex^2 + fx + g,其中每个项是一个常数(系数)乘以一个非负整数幂x。具有非零系数的最高功率称为度。对于此挑战,我们仅考虑至少为1的多项式。即,每个多项式都包含x。另外,我们仅使用具有整数系数的多项式。 多项式可以相乘。例如,(x+3)(2x^2-2x+3)等于2x^3+4x^2-3x+9。因此,2x^3+4x^2-3x+9可以将x+3和分解为2x^2-2x+3,因此它是复合的。 其他多项式无法分解。例如,2x^2-2x+3不是任何两个多项式的乘积(忽略常数多项式或具有非整数系数的多项式)。因此,它是素数(也称为不可约)。 规则 输入和输出可以通过任何标准方式进行。 输入可以是类似的字符串,类似2x^2-2x+3的系数列表{2,-2,3}或任何类似的方式。 如果输出为素数,则输出为真值,如果为复合值,则输出为假值。您必须为所有质数产生相同的真实值,并为所有复合多项式产生相同的假值。 输入至少为1级,最大为10级。 您可能不使用内置工具进行(整数或表达式的)分解或方程式求解。 例子 真实-质数 x+3 -2x x^2+x+1 x^3-3x-1 -2x^6-3x^4+2 3x^9-8x^8-3x^7+2x^3-10 错误-复合 x^2 x^2+2x+1 x^4+2x^3+3x^2+2x+1 -3x^7+5x^6-2x x^9-8x^8+7x^7+19x^6-10x^5-35x^4-14x^3+36x^2+16x-12
21 code-golf  math  primes 

13
道路长度编码
在美国,如果允许通过,则道路上两个相反的交通方向用虚线黄线分隔,如果不允许通过,则用两条实线黄线分隔。 (只需将一侧划线以允许通过该侧即可,黄线可能表示其他事物,例如中心车道或可逆车道,但我们与这些情况无关。) 编写一个程序,它在游程编码的字符串P进行传递,并N为不及格,并打印相应道路的ASCII版本。除中心线外,道路始终具有相同的样式,可以从以下示例中轻松推断出该样式。 输入字符串中的每个P和之前将有一个正的十进制数N。此数字定义的长度通过或不通过的道路的当前部分的区域。 例子 输入12N会产生12列没有通过的路(中线all =): ____________ ============ ____________ 输入12P会产生12列通过的路(- 重复中心线): ____________ - - - - - - ____________ 通过和没有通过可以合并,例如4N4P9N7P1N1P2N2P将产生: ______________________________ ====- - =========- - - -=-==- ______________________________ 这些是4个不通过列,然后是4个通过,然后9个不通过,等等。 请注意,通过区域始终以-最左侧的破折号()开头,而不是以空格()开头。这是必需的。 细节 输入永远不会有两个N区域或P连续两个区域。例如4P5P永远不会发生。 您无需支持没有前导正数的字母。朴素P永远是1P,朴素N永远是1N。 只要不超出道路的最后一列,就可以有尾随的空间。可能有一个可选的尾随换行符。 您可以编写一个函数,该函数采用游程长度编码的字符串并打印或返回ASCII路径,而不是程序。 以任何标准方式(stdin,命令行,函数arg)接受输入。 以字节为单位的最短代码获胜。Tiebreaker是较早的帖子。

4
Pure Sourcery-整形程序,输出0到9的数字
这是数字0到9的像素化5 x 7字体: .███. █...█ █...█ █...█ █...█ █...█ .███. ..█.. ███.. ..█.. ..█.. ..█.. ..█.. █████ .███. █...█ ....█ ...█. ..█.. .█... █████ .███. █...█ ....█ ..██. ....█ █...█ .███. █..█. █..█. █..█. █████ ...█. ...█. ...█. █████ █.... █.... .███. ....█ █...█ .███. .███. █...█ █.... ████. █...█ …

30
打印3x3网格的所有颜色
您有一个3x3的网格。每个单元格可以染成黑色或白色。显示所有512种颜色。最少的字节数获胜。 您可以以任何形式显示网格,只要它们在视觉上分开并且间距看起来规则即可。您可以使用ASCII艺术作品或图像。黑色和白色可以使用任何两种不同的可见符号或颜色。只要结果在视觉上正确,任何空格都可以。 输出示例: ... ... ... ... ... ..X ... ... .X. ... ... .XX ... ... X.. ... ... X.X ... ... XX. ... ... XXX ... ..X ... ... ..X ..X ... ..X .X. ... ..X .XX ... ..X X.. ... ..X X.X ... ..X XX. ... ..X …

3
我该如何制作?
有21个项目在我的世界,你可以手艺只使用木材和木材制作的物品: 斧头 船 碗 扣 胸部 各具特色表 门 栅栏 门 锄头 梯 镐 木板 压盘 铲 标志 板 楼梯 坚持 剑 暗门 此列表假定使用6种不同类型的木板/平板/门/等。全部算作同一个项目。另一种思考的方式是假设您只能使用一种木材。 这21种物品都有不同的制作配方。我们将这些食谱中的每一个都表示为2×2或3×3的字符网格.WPS。该.是空各具特色插槽,W是木材,P是木板,并且S是枝。这些特殊项目不需要其他字符。 例如,这是用于胸部的食谱: PPP P.P PPP 挑战 编写一个程序,使用我们21个项目之一的名称,与上面显示的完全一样,并为该项目打印有效的制作配方。 工艺配方是翻译不变的,因此,如果输入为fence,则这两个都是有效的: PSP PSP ... ... PSP PSP 如果配方适合2×2网格,则可以将其输出为2×2或3×3网格。例如stick: .P .P ... .P. .P. 食谱也可以水平镜像(围绕垂直对称线),尽管这只会对斧头,头和楼梯产生影响。例如hoe: .PP .S. .S. PP. .S. .S. …

8
魔方争夺战
您的任务是创建随机移动序列,该序列可用于加扰魔方。这样的争夺是由25个动作组成的。每个动作都由字母组成,UDRLFB可选地后跟一个后缀'2。 该表示法称为Singmaster表示法。UDRLFB表示6个面之一,可选的后缀'2表示转角。此信息对于解决任务绝对不是必需的。 为了确保争夺是“高质量”,必须遵循以下两个规则: 两个连续的动作不能使用相同的字母。这禁止连续移动UU,DD,RR,LL,FF和BB和使用可选的后缀像所有的组合U2U或U'U'。 禁止使用这些移动对,因为它们很容易减少为1或0个移动。U2U具有相同的效果U',R'R相同的效果。 三个连续的动作不能属于同一字母组。该信集团是UD,RL和FB。这条规则还禁止连续移动UDU,DUD,RLR,LRL,FBF,BFB和使用可选的后缀像所有的组合U2DU,RL'R或B2FB'。 这些组按其移动轴对面进行排序。U并且D位于同一组中,因为它们都围绕相同的轴旋转。因此,U移动不会影响D面部,D也不会影响U面部。因此,两个动作可以互换,UDU并且具有与相同的效果UUD,并且可以减小为U2D。 挑战 编写脚本或函数,以生成一个随机加扰。没有输入。脚本/功能必须打印25个动作,而不能分开或用一个空格隔开,或者返回相应的字符串。 您的程序必须能够创建满足上述规则的每个加扰。当然,假设随机数生成器是真实随机的,而不是伪随机的。 这是代码高尔夫球。最短的代码(以字节为单位)获胜。 示例输出: 调用脚本/函数3次应打印/返回如下内容: R'B2R2F2R2FB'R2DR2ULFB2RB'U2B'FL'BR'U'RB' U'DBR'B2U'B'U'RUF'B'RDR2U'B'LR'B'F2D2UF2L' BR2F'B'R'D'R'U2B'F2D2R'F2D'F'D2R2B'L2R'UB'R2L'D 如果将每个动作分开一个空格: R2 L' F2 U2 D' R2 L2 F L' D2 U R B D' U2 L B2 L U B2 D U2 R' D2 U' B R D2 F U2 B' R2 F2 …

6
时间旅行股票交易者
故事 很久以前,鲍比(Bobby)用1个中本聪(1e-8 BTC,最小货币单位)创建了一个比特币钱包,却忘了它。像许多其他人一样,他后来也说“该死,如果我再投资更多……”。 他不停地做白日梦,他将所有的时间和金钱都献给了建造时光机。他将大部分时间都花在车库里,没有意识到世俗的事情和关于他的谣言。由于缺电,他将在即将关闭电源的前一天完成样机。从工作台上抬起头来,他看到一辆警车驶向他的房子,看上去像个爱管闲的邻居,以为他在自己的车库里经营一个冰毒实验室,并叫警察。 由于没有时间进行测试,他用过去几年的汇率数据获取USB记忆棒,将Flux电容器连接到Quantum Discombobulator,并发现自己回到了创建钱包的那一天 任务 根据汇率数据,找出鲍比能赚多少钱。他遵循一个非常简单的规则:“低买高卖”,并且由于他以无限小的资金开始,所以我们认为他的行为不会对未来的汇率产生影响。 输入 浮点数> 0的列表,可以是用单个字符(换行符,制表符,空格,分号,可以根据需要选择的任何字符)分隔的字符串,作为命令行参数传递给程序,从文本文件或STDIN中读取或作为参数传递功能。您可以使用数字数据类型或数组而不是字符串,因为它基本上只是带括号的字符串。 输出 Bobbys资本乘以交易结束所乘的因子。 例 Input: 0.48 0.4 0.24 0.39 0.74 1.31 1.71 2.1 2.24 2.07 2.41 汇率:0.48 $ / BTC,因为它即将下降,所以我们以4.8纳元的价格出售所有比特币。因子= 1汇率:0.4,不执行任何操作 汇率:0.24 $ / BTC并上涨:将所有$转换为2 Satoshis。因子= 1(美元价值仍然保持不变) 汇率:0.39-2.1 $ / BTC:不做任何事情 汇率:2.24 $ / BTC:在下跌之前卖出所有东西。44.8纳米美元,系数= 9.33 汇率:2.07美元/ BTC:买入2.164聪,系数= 9.33 汇率:2.41美元/ …

10
0-1最大相位计数器
考虑一下一个位数组 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0 如果至少85%的位相同且前/后位都等于多数位,则将长度≥5的连续子数组称为相位。此外,如果它不是某个其他阶段的严格子数组,则将其称为最大阶段。 这是以上示例的最大阶段: 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0 ------------- ------------- ------------- 如您所见,存在3最大阶段。另一方面,这 1 1 1 …

12
以8种方式读取代码以输出8个数字
英语和大多数编程语言都是从左到右,从上到下编写和读取的,但并非必须如此。 实际上对于文本块 ABC DEF 我可以想到八种相关的阅读方式: 从左到右,从上到下(LTR-TTB): ABCDEF 从上到下,从左到右(TTB-LTR): ADBECF 从左到右,从下到上(LTR-BTT): DEFABC 从下到上,从左到右(BTT-LTR): DAEBFC 从右到左,从上到下(RTL-TTB): CBAFED 从上到下,从右到左(TTB-RTL): CFBEAD 从右到左,从下到上(RTL-BTT): FEDCBA 从下到上,从右到左(BTT-RTL): FCEBDA 挑战 编写一个矩形的文本块,以您选择的语言将其作为八个单行程序以上述八种方式读取。这些程序中的每一个都应输出一个从1到8的不同整数。 哪个读取方向输出哪个数字都没有关系,它们不必与上面的数字匹配。例如,如果您的文本块仍然 ABC DEF 然后该程序ABCDEF可能输出5和FEDCBA力量输出2,而其他六个方案将输出1,3,4,6,7,和8一些秩序。 文本块可以包含除行终止符之外的任何字符。 如果您的语言没有正确的标准输出,则输出应转到标准输出或类似的替代方法。没有输入。您可能会假定程序在REPL环境中运行。 Pietu1998慈善地编写了一个JSFiddle,当给出一段文本时,它给出了8种不同的单行程序。我已经将其放入堆栈片段中: <script>function f(n){n=n.split("\n");var e=n.map(function(n){return n.length}).sort()[n.length-1];n=n.map(function(n){return(n+Array(e+1).join(" ")).substring(0,e)});var t=n[0].split("").map(function(e,t){return n.map(function(n){return n[t]}).join("")});n=[n.join(""),n.reverse().join(""),t.join(""),t.reverse().join("")],n=n.concat(n.map(function(n){return n.split("").reverse().join("")})),document.getElementById("a").innerHTML=n.map(function(n,e){return document.getElementById("b").checked?n+" "+"LLTTRRBB"[e]+"T"+"RRBBLLTT"[e]+"-"+"TBLRBTRL"[e]+"T"+"BTRLTBLR"[e]:n}).join("\n")}</script><textarea onkeyup="f(this.value)" id="c" placeholder="Code"></textarea><br/><input type="checkbox" id="b" onchange="f(document.getElementById('c').value)" checked/> <label for="b">Show directions</label><br/><pre …

9
堆放圣诞礼物
有人急忙堆放圣诞节礼物,真是一团糟: ======================== | | ======================== ============= | | | | | | | | | | | | ============= ======= | | | | | | ======= =================== | | | | | | =================== ================= | | | | | | | | ================= ======= | | | | …

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.