编程拼图和代码高尔夫

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

7
高尔夫代码:弗雷序列(I)
挑战 在此任务中,您将得到一个整数N(小于10 ^ 5),输出N阶的Farey序列。 输入N在单行中给出,输入由EOF终止。 输入项 4 3 1 2 输出量 F4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1} F3 = {0/1, 1/3, 1/2, 2/3, 1/1} F1 = {0/1, 1/1} F2 = {0/1, 1/2, 1/1} 约束条件 输入数量不会超过10 ^ 6个值 您可以使用任何选择的语言 最短的解决方案获胜!
10 code-golf  math  code-golf  math  code-golf  number  number-theory  code-golf  math  arithmetic  repeated-transformation  code-golf  geometry  popularity-contest  code-golf  code-golf  tips  haskell  math  fastest-algorithm  code-golf  combinatorics  code-golf  math  polynomials  rational-numbers  code-golf  code-golf  popularity-contest  javascript  code-golf  kolmogorov-complexity  code-golf  code-golf  math  combinatorics  permutations  code-challenge  restricted-source  random  array-manipulation  code-challenge  generation  code-golf  code-golf  ascii-art  arithmetic  division  code-challenge  number  code-golf  math  number  binary  code-golf  ascii-art  code-golf  interpreter  stack  code-golf  internet  networking  code-golf  math  code-golf  ascii-art  code-golf  math  sequence  code-golf  hello-world  restricted-source  code-golf  ascii-art  code-golf  geometry  code-golf  kolmogorov-complexity  pi  code-golf  math  combinatorics  permutations  code-golf  math  code-challenge  ascii-art  code-golf  string  code-golf  quine  code-golf  math  floating-point  golfscript  code-golf  string  code-golf  sliding-puzzle  code-challenge  arithmetic  code-golf  math  code-golf  geometry  optimized-output 

6
Usenet时间是几点?
1993年9月在Usenet上被称为永无止境的9月。因此,例如,发布此问题的日期是1993年9月8740日,星期六。 您的程序或函数应将任何公历日期(带有正年份)作为输入,并返回与输出相同的日期(如果该日期早于1993年9月),或者返回其后的1993年9月日历上的日期。 您可以接受YYYY-MM-DD,YYYY / MM / DD,MM / DD / YYYY,DD / MM / YYYY,D-Monthnameabbr-YYYY或使用全年的所有其他流行格式(而不是年(以100为模)。您只需要选择一种这样的格式即可。输出格式必须与输入格式匹配。 样本输入→输出: 2017年8月6日星期日→1993年9月8741日星期日 1986年1月28日,星期二→1986年1月28日,星期二 要么: 2017-08-06→1993-09-8741 1986-01-28→1986-01-28 为了获得更有趣的答案,sdate不允许使用为此目的而设计的内置函数(例如UN * X 命令)。除此之外和标准的例外,这就是高尔夫,所以最简单的回答胜。
9 code-golf  date 

3
嘶嘶声光年
在最近在PPCG上发布了许多(两个?)与FizzBu​​zz相关的挑战之后,我很想提出自己的挑战。看... 嘶嘶声光年 编写一个程序或函数,该程序或函数需要一个整数,n并打印出FizzBuzz可以被15整除的Fizz任何数字,可以被3整除的Buzz任何数字以及可以被5整除的任何数字,直到(包括)n。所有输出i必须在换行符之后。但是有一个转折! 对于您的第三次打印Buzz,Buzz Lightyear最终会注意您的呼叫,并在程序中崩溃。然后,他介绍了自己-但是由于崩溃着陆,他说的一些话与程序的输出混杂在一起: Buzz Lightyear, Space Ranger, Universe Protection Unit. FizzBuzz Lightyear, Space Ranger, Universe Protection Unit. (也就是说,仅附加 Lightyear, Space Ranger, Universe Protection Unit.到Buzz或FizzBuzz-否则将显示其他内容。请注意前导空格) 然而,巴斯光年,是太空游侠他,有很敏锐的听力,所以印刷FizzBuzz将会对你的计Buzz计数。 然后,Buzz到处徘徊,以保护您的计算机免受所有有害输出的攻击,直到您击中另一个可被5整除的数字(或15,因为这些数字也可被5整除)。这意味着直到必须再次打印Buzz(或FizzBuzz),您才完全不打印任何内容。 当您最终达到该条件时,Buzz就会离开: To infinity and beyond! 示例输出 这是预期的输出n = 25:(注意它如何跳过16到19) 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 …
9 code-golf 

3
朝鲜语字典顺序
目标 给定一串韩文音节,按朝鲜语字典顺序对字符进行排序。 韩文音节简介 朝鲜文(한글)是世宗大王发明的朝鲜文书写系统。韩文音节分配在Unicode点U + AC00 – U + D7A3中。韩文音节由初始辅音,元音和可选的最终辅音组成。 初始辅音为: ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ 元音是: ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ …

5
饥饿的斑点
比赛结束!阅读有关Blob的评论以查看其得分。 此KoTH受到Primer自然选择模拟的大致启发。您的漫游器是一个Blob。为了生存,您必须吃掉颗粒以重新获得用于移动的能量。有了额外的能量,斑点可以一分为二。 能量与运动 您的Blob每回合都会以100的能量开始,并且对其可以收集的能量数量没有限制。每个回合都是轮流进行,每个Blob可以选择在任意给定的回合中向北,向东,向南或向西移动,或保持静止。移动消耗1能量,而静止不动使用0.25能量。地图的边长是ceil(0.25 * blobCount) * 2 - 1单位,最少9个单位。所有Blob都始于地图的边缘,每个角处都放置一个Blob,随后的每个Blob都应与其他Blob放置2个单位。每30圈,一阵子弹便被放置在地图周围的任意位置,距离任意边缘至少1个单位。每次出现一波颗粒波时,下一波中的颗粒数量(最初为斑点数的两倍或图的宽度(以较大者为准))减少1,迫使斑点数随时间减少。每个药丸可恢复5至15的能量。当Blob的能量小于或等于0时,它就会死掉。 吃 如果两个或多个Blob试图占据同一位置,则能量最大的一个将吞噬其他能量,并吸收它们的能量。如果两者具有相等的能量,则两者都会消失。 检测与信息 斑点可以在4个单位的距离内看到任何颗粒或其他斑点。调用其函数时,将为blob提供: 地图的边长 斑点在地图上的位置 所有小球在其搜索半径内的位置及其值 所有Blob在其搜索半径内的位置,以及它们的能量和UID 执行功能的Blob的能量,UID和位置 Blob唯一的存储对象 通过拆分由与该blob相关的所有blob共享的存储对象 分裂 如果斑点的能量超过50,则可以选择拆分。拆分会消耗50能量,并且所有剩余能量将在两个Blob之间平均分配。所有blob都是原始副本或拆分副本,每个副本都可追溯到原始副本。所有这些都是“亲戚”。所有亲戚都有一个公共存储对象。亲戚仍然可以互相吃饭,可以分裂,使用自己的存储对象或收集能量而不会影响他人。 能量转移 如果两个Blob彼此相邻(移动后),则其中一个机器人可以将能量传递给另一个机器人。这是通过返回完成SendNorth(amt),SendEast(amt),SendSouth(amt),或SendWest(amt),其中amt是代表所述量的号码发送。这可以是发件人可以负担的任何金额,包括其所有能量。建议告知接收能量的斑点在公共存储中保持静止,以使其在转移能量时不会移开(尽管在这种情况下不会从发送者的总量中扣除能量)。 函数,存储和UID 为了允许更复杂的学习行为,所有Blob都将被赋予一个整数UID(唯一标识符)。这些UID将在每个地图上随机生成,从而防止基于单个目标的策略。调用Blob的函数时,将为其传递四个参数: 地图的边长(整数) 具有两个数组的对象:pellets和blobs。两个数组都包含对象,两个对象都具有一个pos属性,该属性包含格式为的颗粒或团块位置[x,y]。丸粒将具有energy属性,而斑点将具有uid属性和energy属性 含有团块的各种属性的对象它被传递给:energy,uid,和pos。该pos阵列被格式化为[x,y] 包含Blob的两个存储对象的对象。一个self属性包含一个可以修改的单独存储对象,但是blob认为合适(通过操纵所传递对象的communal属性),以及一个可以被任何亲戚修改的属性。 斑点不立即移动以防止较早/较晚的转弯具有优势。所有运动均按组进行处理(所有碰撞/进食,然后是所有药丸,然后分裂,等等)。如果某个药丸落在药丸或较小药丸上,并且在此过程中使用了其最后的能量,药丸仍将消耗药丸/能量,而不管其总能量是否大于0。 为了使相对Blob能够相互识别,必须为每个Blob使用公用存储,以在阵列中或通过其他系统记录其UID。 返回值 为了移动或拆分,使用了函数的返回值。首先,基本方向在坐标方面的含义: 北= -Y 东= + X 南= + Y 西= -X 请注意,它[0,0]是左上角,并且Y随您的下降而增加。函数的返回值应遵循以下规则: 不执行任何操作:不返回任何内容,0,null,undefined,false或任何其他等于false的值 移动:返回四个全局变量之一:北,东,南或西,它们等于“北”,“东”,“南”或“西”(也可用作返回值) 要拆分:返回全局变量SplitNorth,SplitEast,SplitSouth或SplitWest,其方向指示将新Blob放置在何处 如果返回拆分命令,并且所需能量大于或等于斑点的能量,则不会发生任何事情。Blob将无法离开地图。 …

6
亚像素缩放
您的任务是拍摄24 BPP sRGB图像,并将同一图像放大3倍后输出为红色,绿色和蓝色子像素。生成的图像将完全由纯黑色,红色,绿色和蓝色像素组成。 源图像中的每个像素在缩放时都会产生9个子像素的排列,这些子像素可以打开或关闭(即它们各自的颜色或黑色)。具体安排使用红色,绿色和蓝色的三列,顺序如下: (请注意,这些“像素”上的边框仅用于演示。) 由于这9个子像素中的每一个只能打开或关闭,因此您将必须对输入图像进行量化,并使用不同的子像素图案来实现3级亮度。 对于图像中的每个子像素: 对于0-74的色阶,所有子像素应为黑色。 对于颜色级别75-134,中间子像素应为相应的颜色,其他两个应为黑色。 对于135-179的色阶,中间的子像素应为黑色,而其他两个应为各自的颜色 对于180-255的色阶,所有三个子像素应为各自的颜色 我选择这些级别范围是因为这些恰好看起来不错 将此变换应用于图像中的每个像素,然后输出子像素放大的图像。 单像素示例 rgb(40,130,175)将产生以下模式: rgb(160,240,100)将产生以下模式: 完整图片示例 图片来自维基百科 规则和注意事项 输入和输出可以采用任何方便的格式,无论是实际的图像文件还是RGB值列表(可能是嵌套的)。 您可以假设像素位于24BPP的sRGB色彩空间中。 打高尔夫球快乐!

3
最小成本流问题
甲流网络是一个有向图G = (V, E)具有源顶点s ϵ V和宿顶点t ϵ V,并且其中每一个边缘(u, v) ϵ E上的曲线图(连接节点u ϵ V和v ϵ V)具有与其相关联的2个量: c(u, v) >= 0,边缘的能力 a(u, v) >= 0,通过边缘发送一个单位的成本 我们定义一个函数0 <= f(u, v) <= c(u, v)为通过给定边的单位数量(u, v)。因此,对于一个给定边缘的成本(u, v)是a(u, v) * f(u, v)。的最小代价流问题被定义为在最小化对于给定的流量所有边缘的总成本d,由下面的量给出: 以下约束适用于该问题: 容量要求:通过给定边的流量不得超过该边的容量(f(u, v) <= c(u, v))。 倾斜对称:当方向相反时,通过给定边缘的流动必须是反对称的f(u, v) = -f(v, u)。 流保护:净流量到任何非汇聚非源节点必须为0(对于每个u ∉ {s, …

2
ASCII迷宫压缩
挑战 设计一种专用于压缩ASCII迷宫的压缩算法。您将需要创建压缩算法和解压缩算法。您的分数将基于压缩迷宫的大小。 迷宫 这些迷宫主要是由字符(层), ,+,-,|和#(壁),并且恰好一个各自的^(开始)和$(结束)。它们也可能包含ASCII字母,这些字母算作地砖。出于此挑战的目的,迷宫不必一定可以解决,迷宫内容物的实际含义无关紧要。 + 将用于壁单元,其中至少有一个水平相邻的壁单元和至少一个垂直相邻的壁单元。 | 将用于壁单元,其中至少有一个垂直相邻的壁单元,但没有水平相邻的壁单元。 - 将用于壁单元,其中至少有一个水平相邻的壁单元,但没有垂直相邻的壁单元 # 仅用于与其他壁单元不正交的壁单元。 所有迷宫都是矩形的,但不一定具有规则的网格/墙对齐方式。 迷宫压缩 迷宫1 +----+---- | o | | | -- | o--+ | | | $ --^-+-+--- 迷宫2 +-----+---+ | a | | ^ +-+-+ # | | | | B | | | | --+ | …

6
帮助诺文模拟重力!
诺特温想研究在均匀重力场中从高处抛出的物体的运动学,但是不幸的是,他没有技术上的可能性去足够高的地方并在跌落时观察物体。但是谁不想看到科学的进步,那么……让我们来帮助Notwen建立一个重力模拟器吧! 物理背景 物体从高处掉落 hhh(没有初始速度)在均匀的引力场中,而忽略了诸如风阻或风等大气影响,会获得速度并随着时间的推移而加速向地面移动。单位时间内速度的这种“变化率”称为重力加速度。在地球表面附近,它大约等于g≈9.8ms2g≈9.8ms2g\approx9.8\frac{m}{s^2},但出于此挑战的目的,我们将使用该值 10ms210ms210\frac{m}{s^2},意味着一秒钟内一个物体的速度增加了大约 10ms10ms10 \frac{m}{s}。考虑身高hhh,是的倍数 100m100m100m 并想象将那个高度分成相等的间隔,每个间隔 100100100米长。Notwen想要测量物体落入每个间隔所需的时间,因此这也是我们要计算的目标。现代运动学 -跳过技术知识-告诉我们: Δhk=vktk+12gt2kΔhk=vktk+12gtk2\Delta h_k=v_kt_k+\dfrac{1}{2}gt_k^2 哪里 Δhk≡Δh=100mΔhk≡Δh=100m\Delta h_k\equiv\Delta h=100m 对于的所有值 kkk 就我们而言 vkvkv_k 是我们开始时的初始速度 kthkthk^\text{th} 间隔和 tktkt_k 是持续时间 kthkthk^\text{th} 时间间隔(仅供参考,索引从 000 与 v0=0v0=0v_0=0)。我们也知道vkvkv_k 具有以下表达式: vk=2g(Δh0+Δh1+⋯+Δhk−1)−−−−−−−−−−−−−−−−−−−−−−−−√=2gkΔh−−−−−−√vk=2g(Δh0+Δh1+⋯+Δhk−1)=2gkΔhv_k=\sqrt{2g(\Delta h_0+\Delta h_1+\cdots+\Delta h_{k-1})}=\sqrt{2gk\Delta h} 在数值上,我们得到 vķ=2000 千-----√米svk=2000kmsv_k=\sqrt{2000k}\frac{m}{s} 并插入第一个方程并求解 Ťķtkt_k 给 Ťķ= 25–√(k + 1----√-ķ--√)小号(*)(*)tk=25(k+1−k)s\color{red}{\boxed{t_k=2\sqrt{5}\left(\sqrt{k+1}-\sqrt{k}\right)s}}\tag{*} 因此,物体经过第一个间隔(k = 0k=0k=0)在 …

4
它是经过有效修改的UTF-8吗?
UTF-8是一种以可变宽度格式编码Unicode代码点的相对简单的方法,这样它就不会轻易混淆不了解Unicode的代码。 UTF-8概述 字节通常在1-0x7F(含)范围内 具有位模式10XX XXXX的字节被视为连续字节,其中六个最低有效位用于编码部分代码点。除非前一个字节期望它们出现,否则它们不得出现。 具有模式的110X XXXX字节之后需要一个连续字节 具有模式的1110 XXXX字节之后需要两个连续字节 具有模式的1111 0XXX字节之后需要三个连续字节 所有其他字节均无效,并且不应出现在UTF-8流中的任何位置。5、6和7字节的簇在理论上是可能的,但出于此挑战的目的而不允许。 超长编码 UTF-8还要求用最少的字节数表示一个代码点。可以用更少的字节表示的任何字节序列都是无效的。修改后的UTF-8向其中添加了一个例外,即空字符(U + 0000),应将其表示为C0 80(十六进制表示),并且不允许空字节出现在流中的任何位置。(这使其与以null终止的字符串兼容) 挑战 您将要编写一个程序,当给定一个字节字符串时,该程序将确定该字符串是否表示有效的Modified UTF-8,如果有效,则返回真实值,否则返回假值。请注意,您必须检查超长编码和空字节(因为这是Modified UTF-8)。您不需要解码UTF-8值。 例子 41 42 43 ==> yes (all bytes are in the 0-0x7F range) 00 01 02 ==> no (there is a null byte in the stream) 80 7F 41 …

4
ASCII艺术H树
一个^ h树是分形树结构,用一条线开始。在每次迭代中,将T分支添加到所有端点。在这个挑战中,您必须创建每第二个 H树级别的ASCII表示。 在第一级只需包含三个连字符减号字符: --- 下一级是递归构造的: 创建上一个级别的副本的2x2矩阵,以三个空格或三行分隔。 将副本的中心与H形式的ASCII艺术线条连接起来。-用于水平线,|垂直线以及+线彼此相遇的地方。 第二级 -+- -+- | | +-----+ | | -+- -+- 第三级 -+- -+- -+- -+- | | | | +--+--+ +--+--+ | | | | | | -+- | -+- -+- | -+- | | +-----------+ | | -+- | -+- -+- …

1
二进位转置
与大多数APL符号一样,⍉当用一个参数(移调)和两个参数(二进位转置/重排维)调用时,含义不同。这个挑战与后者有关,后者的行为类似于numpy.moveaxisPython或permuteMATLAB,但功能更强大。 order ⍉ A什么时候order有不同的条目 当的所有成员order都不同时,order ⍉ A等效于: numpy.moveaxis(A, tuple(range(len(A.shape)), order) 在Python中,或 permute(A,order)在MATLAB中。引用后者的文档: B = permute(A,order)重新排列A的尺寸,以便它们按矢量顺序指定的顺序。所得数组B具有与A相同的值,但访问任何特定元素所需的下标顺序均按顺序指定进行重新排列。 例如,假设A是一个3D数组,然后让B ← (2 0 1)⍉A。那么B B[x0,x1,x2] = A[x2,x0,x1]对所有人来说x2,x0,x1 order ⍉ A什么时候order重复输入 当order有重复的条目时,我们取数组的对角切片。例如,让A为2x3x4数组。B ← (0 0 1)⍉A沿着对角线切片A来制作B这样的图像B[x0,x1] = A[x0,x0,x1]。请注意,这B是一个2x4数组:如果它是3x4,则需要设置B[2, x1] = A[2, 2, x1]超出的范围A。一般情况下k的第N维B将所有的最小A.shape[i]这样order[i] = k。 例 考虑order⍉A其中order = [2, 1, 0]A为3x4x5 的二进位转置 A = [[[ …

1
计算真正独特的数组
这是对创建唯一集合的Count数组的跟踪。最大的区别是唯一性的定义。 考虑A长度数组n。该数组仅包含正整数。例如A = (1,1,2,2)。让我们将定义f(A)为的所有非空连续子数组之和的集合A。在这种情况下f(A) = {1,2,3,4,5,6}。产生步骤f(A) 如下: 的子阵列A是(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)。它们各自的总和为1,1,2,2,2,3,4,4,5,6。因此,您从此列表中获得的集合是{1,2,3,4,5,6}。 如果没有其他相同长度的数组,则我们将数组称为A 唯一数组,除了反向数组。作为示例,但是没有其他长度数组会产生相同的和集。Bf(A) = f(B)Af((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}3 任务 任务,对于给定n和s是计算该长度的独特阵列的数量。您可以假设s介于1和之间9。您只需要对元素为给定整数s或的数组进行计数s+1。例如,如果s=1您要计数的数组仅包含1和2。但是,唯一性的定义是针对相同长度的任何其他数组。举一个具体的例子[1, 2, 2, 2]是不是因为它提供了一组相同的款项的独特[1, 1, 2, 3]。 您应该计算数组的倒数以及数组本身(当然,只要数组不是回文)。 例子 s = 1,n = 2,3,4,5,6,7,8,9的答案是: 4, 3, 3, 4, 4, 5, 5, 6 对于s = …

4
计算切块的角,边和面
来自此沙盒帖子 这是从八年级学生的数学测验中得到的启发 介绍 我们有一个具有以下角的立方体 A(0, 0, 0) B(1, 0, 0) C(1, 1, 0) D(0, 1, 0) E(0, 0, 1) F(1, 0, 1) G(1, 1, 1) H(0, 1, 1) 这个立方体显然有8个角,12个边和6个面。如果现在我们切除角G,以使我们的切割平面正好穿过每个相邻原始边的中间,我们将添加2个新角,3个新边和一个新面。请欣赏此手绘艺术品,以更好地进行说明 输入项 给定一个角列表(在本示例中由AH标识),该列表将被切除,计算出新的角,边和面数量。 您可以按照自己喜欢的任何形式进行输入,只要它响应相同的角即可(例如,可以使用1-8或0-7代替AH,可以将其假定为列表,csv等)。 您可以假定列表是不同的(每个角最多显示一次),但它可能为空。该列表将永远不会包含不存在的角。 输出量 输出三个数字,分别对应于角,边和面的数量。明确允许以列表形式输出。允许尾随空格 例子 {} -> 8, 12, 6 (empty list) {A} -> 10, 15, 7 {A,C} -> …
9 code-golf 

21
比较四个整数,根据最大值返回单词
该函数应该采取四个整输入(a,b,c,d基于其值等于最大的四个),并返回一个二进制字。 返回值将在1和之间0xF。 例如: a = 6, b = 77, c = 1, d = 4 返回2(二进制0010;仅将第二最低有效位设置b为唯一的最大值) a = 4, b = 5, c = 10, d = 10 返回0xC(二进制1100;第三个和第四个最低有效位设置对应于c并d等于最大值) a = 1, b = 1, c = 1, d = 1 返回0xF(二进制1111;因为所有值均等于最大值,所以设置了所有四个位) 这是一个简单的实现: int getWord(int a, int b, int c, …

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.