编程拼图和代码高尔夫

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

9
生成Rummy序列
您的任务是获取Rummy序列的输入n和输出元素n,该序列是我制作的(在OEIS上查找不会帮助您)。 定义 Rummy序列的每个元素都是一组真或假值。例如:[true, false]。 生成Rummy序列的成员的步骤非常简单: 从第一个索引开始[](这是元素0)。 将最左边的falsey设置为true。如果没有要更改的错误,则将列表的长度增加1并将新列表的所有成员设置为错误。 重复步骤2直到到达element n。 例 让我们将函数定义为rummy(int n)({}插入是为得到答案所采取的步骤): >>> rummy(5) {[]} {[false]} {[true]} {[false, false]} {[true, false]} [true, true] 规则 有标准漏洞。 必须通过您的语言的数字上限来输入0。 您可以以您认为合适的任何方式输出,只要清楚地知道输出是一组true / falseys。 琐事 我将其称为“ Rummy序列”是因为从索引2开始,它定义了在每一轮Progressive Rummy中需要放置的集合,其中falsey是一本书,而Truth是运行。 测试用例 >>> rummy(0) [] >>> rummy(1) [false] >>> rummy(6) [false, false, false] >>> rummy(20) [true, true, true, …

11
合法化冲销日期
输入: 日期(含dd,MM和yyyy)。日期对象或三个独立的整数也可用作输入。 输出: 每个部分(dd,MM和yyyy)单独恢复,比四舍五入到最接近的有效日期。 例如(格式为dd-MM-yyyy): 21-10-2016变为12-01-6102 挑战规则: 只有dd,MM,yyyy是有效的,但为了和您使用独立的符号是你自己的选择。 因此,这些都是一些有效的格式例子:dd-MM-yyyy; MM/dd/yyyy; yyyy MM dd; ddMMyyyy等 是一些无效的格式示例:dd MMM yyyy; dd-MM-'yy; 等等 如果您的语言支持日期对象或三个单独的整数参数,也可以选择仅输入日期对象,而不是代表日期的字符串。 请说明您使用的日期格式!(并且输入和输出必须采用相同的格式。)还可以输出Date对象,只要它可以处理以下所有测试用例和质询规则即可。 从儒略历到公历的过渡对此挑战被忽略了。因此,1582对于只是一个有效的反向年份2851。 请参阅挑战信息/所有有效年,月和日的提示。 由于您无法将2月与其他任何月份相反,因此您不必担心worry年。 所有倒转的年,月和日: 年份可以任意倒转,范围从0001(倒数为1000)到9999(剩余数9999)。(因此0000这不是有效的输入,也没有测试用例。) 您将要撤消的唯一月份是:一月(从十月/撤消10);十月(与一月/相反01);11月(仍为11月/ 11);和月(从隔月扭转/ 02- ,)。0912 您将撤消的唯一日期是:01(从撤消10),02(从撤消20),03(从撤消30),10(从撤消01),11(剩余11),12(从撤消21),13(从撤消31) ,20(从反向02),21(从反向12),22(剩余22),30(03与11月的31反向或相同!),31(从04- 09/ 13- 反向19/ 23- 29)。 通用规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有适当参数的函数/方法以及return语句/输出,完整程序。你的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 另外,如有必要,请添加说明。 测试用例(dd-MM-yyyy格式): 21-07-2016 -> 12-12-6102 …
18 code-golf  date 

4
编写VIC密码编码器
该VIC密码是有史以来设计最为复杂的铅笔和纸密码之一。1950年代由苏联间谍ReinoHäyhänen使用,代号为“ VICTOR”,其主要原理是通过迷惑实现安全。一个很多混淆。 您的任务是编写将接收消息并使用VIC密码对其进行编码的程序或函数。我还在这里发布了VIC密码解码器挑战赛。如果以下任何说明不清楚,请随时在评论中询问。该说明改编自该站点。 编码VIC密码 制备 您将需要五个输入: 明文消息 包含您语言中最常见字母的简短关键字或短语 关键短语,例如报价单或歌曲中的一行(至少20个字符) 日期(或其他六位数或更多的数字) 个人代理号码 实际上,这最后四个应该由发送方和接收方事先商定,包括在编码中是否使用发送方或接收方的代理号码。 我的示例消息将是: We are discovered. Take what you can. Burn everything else. Move to Safehouse Foxtrot 3. 我们将使用英语编码(尽管您可以使用喜欢的任何语言和字母),而英语字母中最常见的字母是A, E, I, N, O, R, S, T。我将使用关键字SENATORI。 我的主要用语是理查德·费曼(Richard Feynman)的一句话:“第一个原则是,您切勿欺骗自己,而您是最容易欺骗的人。” 作为日期,我将使用2016年7月31日(格式为3172016),也就是我撰写此说明的日期。 我为自己选择的个人号码是9。 步骤摘要 派生用于以下步骤的中间键。 构造并应用跨界棋盘。 构造并应用第一个换位表。 构造并应用第二个(中断的)换位表。 通过插入消息指示符组来完成消息。 子机制 在深入探讨该问题之前,还有两件事需要解释:链添加和排序的过程。 链加法也称为滞后斐波那契生成器,其工作原理是采用起始数字序列,将前两位数字相加而不携带(然后将它们加在一起mod 10),然后将结果附加到末尾。例如: …

13
预报回文日期
回文日期是显示为回文日期的日期:数字字符串的读取方式可以与向前相同。对于北美日期格式(MM / DD / YYYY),接下来的几个回文日期是: 02/02/2020 12/02/2021 03/02/2030 挑战 创建一个函数,该函数以一致的,通用的日期格式(您选择的)返回所有属于日期范围内的回文日期(编辑:包括范围本身)。 规则 要获得回文资格,仅应检查日期的数字字符。 日期可以采用任何通用格式(MM/DD/YYYY,DD-MM-YYYY),只要它在月份和日期中均使用两位数字,而在年份中则使用4位,并且使用字符来分隔日期的各个部分。输出必须保留字符分隔条件(/,-,等)。您的函数仅需要处理一种不同的日期格式。请在回答中包括格式。 如果返回的日期不止一个,则应将它们用逗号或换行符分隔。 最短答案胜出! 例 date_palindrome('05/02/2050', '12/12/2060') >>>['05/02/2050', '06/02/2060']

30
第二个非重复字符是什么?
基于代码审查中的这个问题 给定一个可打印的ASCII字符的非空字符串,输出第二个非重复字符。例如,对于input DEFD,output F。 输入值 单个字符串,任何合适的格式。 输出量 从左到右读取时,第二个不会重复的字符也将以适当的格式显示。 输出字符不区分大小写。 如果不存在这样的字符(例如,所有字符都重复),则输出一个空字符串。 规则 该算法应忽略大小写。也就是说,D并d算作相同的字符。 完整的程序或功能都是可以接受的。 输入字符串将被保证为非空(即,至少一个字符的长度)。 输入字符串为ASCII。任何有效字符都可以重复,而不仅仅是字母数字(包括空格)。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 例子 输入在第一行,输出在第二行。 DEFD F FEED D This is an example input sentence. x ...,,,..,,!@ @ ABCDefgHijklMNOPqrsTuVWxyz B AAAAAABBBBB Thisxthis This this. .

28
bfcat-将文件编码为Brainf ***程序
挑战 编写一个给定字符串的程序或函数,返回一个有效的Brainfuck程序,该程序在作为Brainfuck编译并执行后将返回该字符串。 假设所有输入均编码为ASCII。 假设输出的BF程序将在具有无限磁带的环境中执行。 假定指针从单元格0开始,每个单元格都初始化为零值。 下面的每个示例代表给定输入的一种可能的正确输出。尤其是,这些示例包括额外的换行符和空格,以帮助人类阅读。解决方案可以自由地以任何方式格式化输出的BF代码。 磁带是双重无限的。 解释器提供的所有单元都是8位单元。上溢和下溢围绕着可预测且理智的问题。 例子 空格串 给定输入,您的程序/函数可能返回: +++++ +++++ +++++ +++++ +++++ +++++ ++ . 感叹号 给定输入!,您的程序/函数可能返回: +++++ +++++ +++++ +++++ +++++ +++++ +++ . 两个字母 给定输入hi,您的程序/函数可能返回: +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ …

27
数数,替换,重复!
定义 如下定义CURR序列的第n 个数组。 从单例数组A = [n]开始。 对于A中的每个整数k,用k个自然数替换条目k,从1到k递增。 重复上一步骤n-1次。 例如,如果n = 3,我们从数组[3]开始。 我们替换3用1,2,3,得到[1,2,3] 。 我们现在更换1,2,和3带1 ; 1,2和1,2,3(resp。),产生[ 1,1,2,1,1,2,3 ]。 最后,我们对数组中的所有六个整数执行与上一步相同的替换,得到[ 1,1,1,2,1,1,1,2,1,2,3 ]。这是第三个CURR阵列。 任务 编写一个函数程序,给定严格的正整数n作为输入,该程序将计算第n 个 CURR数组。 输出必须是某种类型的平面列表(以及从函数返回的数组,您语言的数组语法的字符串表示形式,以空格分隔的等)。 这是代码高尔夫球。可能以字节为单位的最短代码获胜! 测试用例 1 -> [1] 2 -> [1, 1, 2] 3 -> [1, 1, 1, 2, 1, 1, 2, 1, 2, 3] 4 -> …

15
g o l f a t 2
有时将笛卡尔坐标转换(x,y)为极坐标确实很费力(r,phi)。虽然你可以计算r = sqrt(x^2+y^2)很容易,你经常计算时的角度需要的情况下有些区别phi,因为arcsin,arccos以及arctan和所有其他三角函数有一个共同域,每个只有跨越半个圆。 在许多语言中,都有用于将直角坐标转换为极坐标的内置atan2函数,或者至少具有给定的(x,y)计算角度的函数phi。 任务 你的任务是写一个程序/功能采用两个(浮点,但不能同时为零)笛卡尔坐标(x,y),并输出对应的极角phi,其中phi必须处于度,弧度或等级(与等级余平均gradians其是1 /整圆的400),以您较方便的为准。 角度是在正方向上测量的,对于,我们有零角度(1,0)。 细节 您不得使用内置插件是计算角度phi给出两个坐标,其中包括atan2,rect2polar,argOfComplexNumber和类似的功能。但是,您可以使用通常的三角函数及其反函数,它们只需一个参数。任何单位符号都是可选的。 半径r必须为非负数,并且phi必须在范围内[-360°, 360°](无论输出270°还是,都无关紧要-90°)。 例子 Input Output (1,1) 45° (0,3) 90° (-1,1) 135° (-5,0) 180° (-2,-2) 225° (0,-1.5) 270° (4,-5) 308.66°
18 code-golf  math  geometry  trigonometry  code-golf  number-theory  fibonacci  code-golf  math  sequence  fibonacci  code-golf  string  code-golf  math  graphical-output  geometry  code-golf  string  code-golf  math  geometry  code-golf  math  bitwise  number  popularity-contest  graphical-output  image-processing  fractal  code-golf  number-theory  code-golf  date  multi-threading  code-golf  math  code-golf  math  number  sequence  code-golf  math  number  sequence  arithmetic  code-golf  decision-problem  logic-gates  code-golf  decision-problem  balanced-string  code-golf  math  arithmetic  combinatorics  code-golf  expression-building  code-golf  physics  code-golf  abstract-algebra  code-golf  number  arithmetic  integer  code-golf  ascii-art  number  code-golf  number-theory  primes  code-golf  arithmetic  grid  code-golf  code-golf  sequence  code-golf  kolmogorov-complexity  compression  code-golf  math  number  arithmetic  array-manipulation  code-golf  primes  hexagonal-grid  complex-numbers  code-golf  number  counting  code-golf  math  number  arithmetic 

4
实施SHA-256
给定一个字节序列,输出该序列的SHA-256哈希值。 SHA-256算法 以下伪代码来自SHA-2的维基百科页面。 Note 1: All variables are 32 bit unsigned integers and addition is calculated modulo 2^32 Note 2: For each round, there is one round constant k[i] and one entry in the message schedule array w[i], 0 ≤ i ≤ 63 Note 3: The compression function uses 8 …

5
约旦分解
重要说明:因为此挑战仅适用于平方矩阵,所以每当我使用术语“矩阵”时,都假设我是指平方矩阵。为了简洁起见,我将省略“方形”描述。 背景 通过使用相似的对角矩阵(一个不在主对角线上的元素为0的元素),可以简化许多与矩阵相关的操作,例如计算行列式,求解线性系统或将标量值函数扩展到矩阵。到原始矩阵(意味着,对于输入矩阵A和对角线矩阵D,存在一些可逆矩阵P,使得D = P^(-1) * A * P;另外,D和A共享一些重要性质,如本征值,决定因素,而迹线)。对于具有不同特征值的矩阵(矩阵的特征多项式的根,通过求解det(A-λI) = 0给出λ,其中I是与相同维的恒等式A),对角化很简单:D是一个矩阵,其特征值在主对角线上,并且P是一个由对应于这些特征值的特征向量组成的矩阵(顺序相同)。这个过程称为本征分解。 但是,具有重复特征值的矩阵不能以这种方式对角线化。幸运的是,任何矩阵的约旦范式都可以很容易地计算出来,并且比常规的对角矩阵难得多。它还具有很好的特性,如果特征值是唯一的,则Jordan分解与特征分解相同。 约旦分解解释 对于A特征值均具有1的几何多重性的方阵,约旦分解的过程可描述如下: 令λ = {λ_1, λ_2, ... λ_n}为A具有多重性的特征值列表,其中重复的特征值连续出现。 创建一个对角矩阵,J其元素是的元素λ,顺序相同。 对于每个多重性大于1 1的特征值,将特征值的每个重复项的右边放在a 的主对角线上J,最后一个除外。 所得矩阵J是的约旦范式A(对于给定矩阵,可以有多个约旦范式,具体取决于特征值的顺序)。 一个可行的例子 设A以下矩阵: A具有多重性的特征值是λ = {1, 2, 4, 4}。通过将它们放入对角矩阵,我们得到以下结果: 接下来,将1s 放在每个重复特征值中的一个之外的所有右边。由于4是唯一重复的特征值,因此我们1在前四个值旁边放置一个: 这是Jordan的正常形式A(单个矩阵可能具有几种有效的Jordan正常形式,但是出于解释的目的,我将详细介绍该细节)。 任务 给定方阵A作为输入,输出有效的Jordan范式A。 输入和输出可以采用任何合理的格式(2D数组/列表/任何形式,列表/阵列/任何列或行向量,内置矩阵数据类型等)。 的元素和特征值A将始终是范围内的整数[-200, 200]。 为了简单起见,所有的特征值将具有1的几何多重性(因此上述过程成立)。 A 最多为10x10矩阵,至少为2x2矩阵。 不允许使用计算特征值和/或特征向量或执行特征分解,Jordan分解或任何其他类型的分解/对角化的内建函数。允许矩阵算术,矩阵求逆和其他矩阵内置函数。 测试用例 [[1, 0], [0, 1]] …

9
来回顺序
想象一下,由一个路径<,并>在结尾的@,如 ><>@ 助行器从最左侧的单元格开始。他将按照以下方式遍历该路径: 如果步行者在@牢房中,则他已达到目标并完成。 如果助行器在>牢房中,则整个路径会周期性地向右移动一步,并随身携带助行器。 如果助行器在<牢房中,则整个路径会周期性地向左移动一步,并随身携带助行器。 然后,步行者迈出一步。如果他在路径的两端,那么他会从一端移开。否则,他会继续朝最后一步移动的方向移动(忽略旋转),最初向右走。 让我们来研究以上示例。步行者的位置标有^: ><>@ --rotate--> @><> ^ ^ step right (first step): @><> --rotate--> ><>@ ^ ^ step right: ><>@ --rotate--> @><> ^ ^ step left (dead end): @><> --rotate--> ><>@ ^ ^ step left: ><>@ --rotate--> @><> ^ ^ step left: @><> Goal reached! …

13
直流打高尔夫球的技巧
您对DC打高尔夫球有哪些一般提示? dc是早于C语言的UNIX / Linux计算器实用程序。我对如何缩短我的直流程序(计算?)感兴趣。我正在寻找可应用于通用代码高尔夫球的想法,这些想法至少特定于dc(例如,删除注释不是有帮助的答案) 请为每个答案发布一个提示。
18 code-golf  tips  dc 

3
最高分
介绍 假设一个字段是一个仅填充字符-和的矩形[0-9]。字段的示例是: 11-011123 111-010-- 0010---01 111-01234 您会看到该字段被分为三个较小的区域: 要计算较小区域的分数,我们只需将所有数字加起来即可。例如: 11 111 0010 111 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 = 9 该地区的总分为9。现在,我们在第二个区域执行相同的操作: 011123 010 0 + 1 + 1 + 1 + 2 + …
18 code-golf  number  grid 

1
数一下ASCII hamantaschen!
今天是普im节(Purim),一种习俗是散发出带有馅料的三角形饼干hamantaschen(单数:hamantasch)。另一种习惯是大量饮酒。 我不是最完美的面包师。。。我有很多不规则尺寸的hamantaschen可供分发,还有很多朋友可以给他们!如果我给您发送了一张我的饼干的照片,您能告诉我我有多少个大小和馅料吗?但是因为是普im节,而且我太醉了,无法阅读太多代码,所以它必须尽可能地小。 定义 尺寸 hamantasch可以是任何大小。最小的hamantasch是1号,看起来像这样: /\ -- -- \/ 有时,多个hamantaschen可能会重叠。以下形状算作两个hamantaschen(一个尺寸1,一个尺寸2): /\ /\ \ ---- 一些hamantaschen 充满了。这将通过用字符填充内部的所有空白来表示。请注意,尺寸1的hamantaschen不能填充。 我们将根据馅料和大小来命名 hamantaschen。让我们使用格式<filling> <size>,如果没有填充,- <size>可以使用空格代替-,但markdown并不是这样)。 这是一个. 2,一个. 4和一个- 3: /\ /./\ ---- /./ \ \../ /./ \ \/ -------- 这些是@ 3,a . 2和a - 4: /\ / /\ /\ / /@@\ /..\ / /@@@@\ ---- …

23
产生奇偶校验位
甲奇偶校验位,是的校验的最简单的形式之一。首先,您必须选择奇偶校验。假设我们选择了偶数。现在,我们需要一条消息来传输。假设我们的信息是“ Foo”。用二进制形式写成: 01000110 01101111 01101111 现在,我们计算其中1的s 的总数为15。由于15是一个奇数,因此我们必须在消息末尾添加一个额外的位,而现在我们将获得偶数个“ on”位。最后添加的位称为“奇偶校验位”。如果我们为校验和选择了奇数奇偶校验,则必须添加一个额外的“ 0”,以便打开位数保持为奇数。 挑战: 您必须编写一个程序或函数来确定字符串的正确奇偶校验位是多少。您的程序必须接受两个输入: 字符串,s。这是将计算校验和的消息。这将仅限于95个可打印的ASCII字符。 一个字符或单个字符串p,将e用于偶校验或o奇校验。 并产生代表正确奇偶校验位的真假值。如果是1,则为True,如果为,则为false 0。 不允许对字符串或字符中的“ on”位数进行计数的内建函数。例如,执行以下操作的函数f:f('a') == 3或被f('foo') == 16禁止。其他任何事情,例如基本转换,都是公平的游戏。 测试IO: (without the quotes) s: "0" p: 'e' output: 0 s: "Foo" p: 'e' output: 1 s: "Hello World!" p: 'o' output: 0 s: "Alex is right" p: 'e' …

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.