Questions tagged «code-golf»

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

1
在验证ISO 8601日期时击败纯正则表达式
在RX的ValiDate ISO 8601中,挑战在于仅使用标准正则表达式来验证标准日期格式和值(前者是RX的常见工作,后者是不寻常的)。获奖答案使用了778个字节。这个挑战是要使用您选择的任何语言来克服这种挑战,但要使用特殊的日期函数或类。 挑战 查找最短的代码 验证Proleptic Gregorian日历中的每个可能日期(也适用于1582年首次采用之前的所有日期), 与任何无效的日期都不匹配,并且 不使用任何预定义的函数,方法,类,模块或类似方法来处理日期(和时间),即依赖于字符串和数字运算。 输出量 输出是真还是假。无需输出或转换日期。 输入值 输入是3种扩展的ISO 8601日期格式中的任何一种的单个字符串-无时间。 前两个是±YYYY-MM-DD(年,月,日)和±YYYY-DDD(年,日)。两者都需要special日的特殊保护套。这些扩展的RX天真地将它们分别匹配: (?<year>[+-]?\d{4,})-(?<month>\d\d)-(?<day>\d\d) (?<year>[+-]?\d{4,})-(?<doy>\d{3}) 第三种输入格式是±YYYY-wWW-D(年,周,日)。由于leap周模式复杂,因此比较复杂。 (?<year>[+-]?\d{4,})-W(?<week>\d\d)-(?<dow>\d) 条件 一个闰年的Proleptic公历包含闰日 …-02-29,因此它是长366天,因此…-366存在。这种情况发生在序数可以被4整除但不能被100整除(除非也可以被400除)的任何 年份。此日历中存在零年,并且是a年。 一个漫长的一年,在ISO周历包含了第53周…-W53-…,其中一个可以称之为一个“ 闰周 ”。在1月1日是星期四的所有年份中都会发生这种情况,在所有leap年都是星期三的所有leap年都发生这种情况。0001-01-01并且2001-01-01是星期一。事实证明,这种情况通常每5或6年出现一次,看似不规则。 一年至少有4位数字。不必支持位数超过10的年份,因为这已经足够接近宇宙的年龄(约140亿年)。前导加号是可选的,尽管实际标准建议多于4位数字的年份需要使用它。 不得接受不完整的部分或截短日期。-在所有情况下都必须使用连字符。(这些先决条件可以使导致+总是可选的。) 规则 这是代码高尔夫球。以字节为单位的最短代码获胜。较早的答案胜出。 测试用例 有效测试 2015-08-10 2015-10-08 12015-08-10 -2015-08-10 +2015-08-10 0015-08-10 1582-10-10 2015-02-28 2016-02-29 2000-02-29 0000-02-29 -2000-02-29 -2016-02-29 +2016-02-29 200000-02-29 -200000-02-29 +200000-02-29 2016-366 …
12 code-golf  date 

2
这是哪个有限的阿贝尔群?
描述 编写一个函数f(m, G),该函数接受映射m和一组不同的非负整数作为其参数G。 m应该将中的整数对映射G到中的新整数G。(G,m)可以保证形成一个有限的阿贝尔群,但是的任何元素都G可以是恒等式。 有一个重要的定理说: [每个有限阿贝尔群]与素数次循环群的直接积同构。 f必须[p1, ... pn]以升序返回主要力量列表,以便 例子 f((a, b) → (a+b) mod 4, [0, 1, 2, 3])应该返回[4],因为参数描述了Z 4组。 f((a, b) → a xor b, [0, 1, 2, 3])应该返回[2, 2],因为参数描述了Z 2 ×Z 2同构的基团。 f((a, b) → a, [9])应该返回[],因为参数描述了琐碎的组;即零个循环基团的乘积。 定义m如下: (a, b) → (a mod 3 + b mod …

3
ASCII艺术棋盘
在此挑战中,您将在下面绘制棋盘,并允许进行移动。 1.图纸 每个白色正方形都有5x9的空间。 每个黑色正方形都有5x9冒号。 木板被冒号的边界包围。 这些作品宽5个字符,位于中央广场的最底行。 棋子有4个字符宽。它们的位置略偏离右侧中心,左侧有3个空白方块,右侧有2个空白方块。他们坐在正方形底部上方一行。 除可选的尾随换行符外,董事会区域之外不得有空格。 棋盘和西洋棋棋子的绘制应严格按照所示,但: 您可以:用黑色方块和边框中的代替不同的符号,也可以用@黑色部分中的字母替代不同的符号(但黑色方块所用的符号不能相同)。 如果愿意,可以将棋子向左移动一个字符。 。 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : ::::::::: :::www::: _+_ ::::::::: :::::::::: : |_|_| :: _,,::: (/) :::)@(::: )@( :::(/)::: _,, ::|_|_|::: : |@| ::"- \~:: |@| :::|@|::: |@| :::|@|::: "- \~ :::|@|:::: : |@| :::|@|::: |@| :::|@|::: |@| :::|@|::: |@| :::|@|:::: : …

9
创建一个T9键盘
这个问题要求T9词典匹配功能,这是一个非常有趣的问题。但是T9还有另一种打字方式,那就是逐个字符地打字。您不需要字典即可实现此键盘。 如果您忘记了,这是T9键盘的按键图: +-------+-------+-------+ | 1 | 2 | 3 | | .?! | ABC | DEF | +-------+-------+-------+ | 4 | 5 | 6 | | GHI | JKL | MNO | +-------+-------+-------+ | 7 | 8 | 9 | | PQRS | TUV | WXYZ | +-------+-------+-------+ | * …

5
猴岛:航海家的头
警告:此挑战包含“猴岛的秘密”中的一些轻微破坏者。 在游戏快要结束时,导航员的魔术头正带领您穿过地下墓穴: 您需要它的眼球项链,但头部不愿意将它提供给您。获得它的一种方法就是继续乞讨: Guybrush:请给我那条项链吗? 负责人:不,但感谢您如此礼貌地问。 Guybrush:哦,拜托,pleeeeease? 负责人:您可以乞求一切,但不能拥有。 Guybrush:好吗? 负责人:您可以乞求一切,但不能拥有。 Guybrush:好漂亮吗? 负责人:您可以乞求一切,但不能拥有。 Guybrush:可以在上面放糖吗? 头:哦,好的,你这个大宝贝。你可以拥有它。嘿,如果没有肩膀,项链有什么用? 挑战 编写一个完整的程序,打印上述对话框。要注意的是,每次调用该程序时,它应该只打印两行(Guybrush和Head的响应恳求一遍)。例如,如果您的提交是用Python编写的,用法应如下所示: $> python please.py Guybrush: May I please have that necklace? Head: No, but thanks for asking so politely. $> python please.py Guybrush: Oh come on, pleeeeease? Head: You can beg all you want, but you …

9
评估第n个超手术
我的确意识到这有点数学,但是-来了。 在数学中,超运算序列是无限的算术运算序列(称为超运算),从后继的一元运算开始,然后以加法,乘法和乘幂运算的二进制运算继续,此后,该序列继续进行进一步的二进制运算,其范围超出使用右联想进行求幂。 您的目标是编写一个程序,该程序将三个整数x,y和n作为输入,并输出x和y上第n个超级运算的结果。 例如 1 1 1 输出2 2 4 4 输出65536 3 3 4 输出7625597484987 该程序必须用最短的代码编写。 您可以STDIN从文件或从文件中获取输入。 不允许使用库函数。 输入约束:n将≥1。 http://en.wikipedia.org/wiki/Tetration提供了很好的解释,以防您无法解决这个问题。

9
标记信号量编码器
您的目标是编写一个标志信号量编码器,根据Wikipedia上描述的信号量系统,它将给定的句子转换为相应的标志信号量字符。 假设输入是通过stdin(或等效输入)提供的单个句子。您的输出应该是一系列的信号量字符,每一行代表该句子中的一个单词。您只需要处理字母(AZ),并且应该忽略所有其他非空格字符,但是您必须能够处理大写和小写字母。您的输出允许包含额外的空格。 信号量字符必须显示为3x3的正方形,O中间是,标记位置由字符表示| - / \。每个信号量字符必须与相邻字符之间用空格分隔,并且每一行必须由空白行分隔。不必担心包装可能对于您的显示而言太长的单词-假装您的行有无限长。 输入样例: abcdefg hijklmn opqrstu vwxyz 样本输出: \ | / O -O O O O O- O /| | | | | | |\ \ | | / -O O O- O O O- O / / / / / / \ \ | / …

12
高尔夫代码:发球(I)
挑战 在此任务中,您计算​​了将A球分配到B单元中的方式的数量,每个单元至少有一个球。 输入A和B在单行中用空格隔开,输入由EOF终止。 您可能想在这里检查解决方案。 输入值 0 0 1 0 12 4 6 3 18 17 20 19 15 13 18 9 20 20 17 14 9 2 14 13 18 11 输出量 1 0 14676024 540 54420176498688000 23112569077678080000 28332944640000 38528927611574400 2432902008176640000 21785854970880000 510 566658892800 334942064711654400 约束条件 每个A和B都是可以区分的。 0 <= A,B …

11
模拟一维生活游戏模型
这个问题只是在代码审查中引起的,我认为您可能希望将其改编为代码高尔夫挑战: 系统会为您提供x个以布尔值表示的房屋的非空列表。每天,房屋与相邻房屋竞争。1代表“活动”房屋,0代表“无效”房屋。如果给定房屋两侧的邻居都处于活动状态或都处于非活动状态,则该房屋在第二天变为非活动状态。否则它将变为活动状态。 def get_state_as_pos(thelist, pos): if thelist[pos-1] == thelist[pos+1]: return 0 else: return 1 例如,如果我们有一组邻居[0,1,0],则[1]处的房屋将变为0,因为左侧和右侧的房屋均处于非活动状态。两端的单元格也检查相对侧,因此索引0的邻居位于索引length-1和索引n1,反之亦然。即使更新了单元之后,在更新其他单元时也必须考虑其先前状态,以便每个单元的状态信息同时更新。 该函数采用状态数组和多个步骤,并应在给定数量的步骤之后输出房屋的状态。 input: states = [1, 0, 0, 0, 0, 1, 0, 0], steps = 1 output should be [0, 1, 0, 0, 1, 0, 1, 1] input: states = [1, 1, 1, 0, 1, 1, …

2
数论解释器,模n
一个句子数论(我们的目的)的是下列符号序列: 0和'(后继) -后继手段+1,所以0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加法)和*(乘法) = (等于) (和)(括号) 逻辑运算符nand(a nand b是not (a and b)) forall (通用量词) v0,v1,v2等。(变量) 这是一个句子的示例: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) 这not x是简写x nand x-实际的句子会用到(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

4
星巴克转英文
在这些新颖的不干胶标签打印机和无线穿透式耳机掌上扫描仪交易问世之前的星巴克的经典时期,在2000年代的鼎盛时期,星巴克拥有简洁的系统,以严格的语法和随附的编码形式描述饮料。 在杯子的垂直方向上,有一系列带有标签的盒子,其中可能包含某些值: Decaf [ ] -blank- X 1/2 1/3 2/3 Shots [ ] -blank- 0 1 2 3 ... 20 followed by S T G V Syrup [ ] -blank- V M C H Milk [ ] -blank- Wh % N B Custom [ ] -blank- ((-|x)?(F|WC|M|CR) )+ Drink [ …
12 code-golf 

6
解决线性方程组
编写程序,以解决尽可能短的一系列线性方程。它必须解决任意数量的方程式问题。他们可以输入,但是您喜欢,增广矩阵的系数可能是最简单的。该程序不必处理非整数系数或解决方案。不会对任何退化或无效的案例进行测试。程序必须输出每个变量或精简行梯形表格的值。 不允许方程求解库,矩阵函数或任何自动求解的方法。您可以使用数组或列表来模拟矩阵。 输入示例(或等效输入): m={{2,1,-1,8},{-3,-1,2,-11},{-2,1,2,-3}} 这代表 2x+y-z=8, -3x-y+2z=-11, -2x+y+2z=-3 示例输出(或等效输出): {2,3,-1} 这代表 x=2, y=3, z=-1
12 code-golf  math 

5
排列的组成–集团产品
给定两个不连续循环形式的排列,以不连续循环形式输出其乘积/组成。 要查找组成,请将不相交的循环转换为两行符号的排列。循环的不连续部分中的每个数字都映射到同一部分中跟在其后的数字。它环绕。所以1 -> 5,5 -> 1,2 -> 4,4 -> 2。如果找不到数字3 -> 3,则会将其映射到自身。第一个不相交的周期也可以写成(1 5)(2 4)(3)。这些映射将转换为两行,如下所示(请注意,P和Q的顺序相反): 通过重新排列第二个(最左)排列的列,使其第一行与第一个(最右)排列的第二行相同,可以得到两个排列的乘积。然后可以将乘积写为修改后的第二排列的第二行上的第一排列的第一行。 维基百科文章 规则: 输入将以列表形式或类似格式给出 您可能不会采取类似(1 5)(2 4)as之类的[5, 4, 3, 2, 1]已经两行的形式(将索引映射为值) 并非每个组中都必须有所有数字,所以您可能会有(1 5)·(1 2),导致(2 5 1)。 您的输出应该可以用作输入。 您不需要使用空循环来支持输入(1 5)·()。取而代之的是(1 5)·(1)或等价的。 由于循环回绕,因此顺序不重要,只要结果正确即可。 您可以从零或一开始。没关系,因为结果相同。 数字可以大于9。 您可能在输出中多次包含相同的数字。所以[[1],[1]]是不允许的。 注意,该操作不是可交换的!我将Q放在P之前,因为这是Wikipedia所做的。您可以选择任何顺序,但要指定不同的顺序。 最短的代码胜出 允许内置,但是如果您使用内置的,请在不使用的情况下显示解决方案。 例子: 并未显示所有等效的输出可能性 Input Output [[1, 5], [2, 4]], [[1, …

12
最小的python脚本,可打印偶数0到100
我正在研究一个让自己很有趣的问题,即创建一个Python脚本,该脚本打印从0到100的偶数。挑战是使脚本尽可能小。这是我到目前为止所拥有的: for x in range(0, 101): if (x % 2 == 0): print x 当前是60个字节。谁能想到缩小尺寸的方法? 编辑:print(*range(2,101,2),sep='\n')这是30个字节。较小吗?
11 code-golf  tips  python 

11
四元数平方根
背景 四元数是扩展复数的数字系统。四元数具有以下形式 a+bi+cj+dka+bi+cj+dk a + bi + cj + dk 其中a,b,c,da,b,c,d a,b,c,d 是实数,i,j,ki,j,k i,j,k 是三个基本四元数单元。这些单位具有以下属性: i2=j2=k2=−1i2=j2=k2=−1 i^2 = j^2 = k^2 = -1 ij=k,jk=i,ki=jij=k,jk=i,ki=j ij = k, jk = i, ki = j j i = − k ,k j = − i ,i k = − jji=−k,kj=−i,ik=−j ji = …

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.