编程拼图和代码高尔夫

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

2
照亮镜面房间
目标 在本次比赛中,您将获得一个随机的房间,里面放着一支蜡烛。目的是编写最短的程序(这是高尔夫球),通过用代替暗点来确定房间的哪些部分被蜡烛照亮@。该程序应占用STDIN的空间,并将输出打印到STDOUT。 输入/房间示例 +------+ | C | | +--+ | \ | +---------+ 蜡烛被表示用C,墙壁/反射镜被用来表示|,-,/,或\。墙壁本身就是镜子。房间的角落用表示+。 房间永远不会有对角墙,光线也永远不会逸出房间。 同样,一行上的第一个字符将始终是房间墙壁的一部分。每行上的绝对最后一个字符将是房间的另一面墙。这两个之间的任何字符都不会在房间外面。 光线与反射 蜡烛在八个基本方向上分别发出八束(类似激光的)光束:N,S,E,W,NE,SE,SW和NW。这些光线从镜子反射出来,如下所述: Old Direction of Travel | Mirror | New Direction N S E W NE SE SW NW / E W N S -- -- -- -- N S E W NE SE …

3
用三角求解三角形
是时候从高中挖掘旧的三角学笔记了!挑战在于解决不同三角形的未知边和角度。按照编码高尔夫的惯例,最小的有效编码将获胜。 这不是一个小问题。我在python中的参考实现目前只有838 837个字符,但是我敢肯定,您将可以使用更小的解决方案。 此外,如果您受困,那么Wikipedia上的这一部分将使您着手进行:Triangle:计算边和角。 输入值 下面的三角形显示了此挑战中使用的边和角度的名称。请注意,侧面是小写字母,而角度是大写字母。 输入以六个空格分隔的值形式给出,可以是在stdin命令行参数上,也可以是命令行参数(您的选择)。这六个值分别对应于侧面a, b, c和角度A, B, C。未知的一面以问号(?)给出。输入和输出角度都必须以弧度为单位。您可以假设输入值正确(您无需验证任何内容)。您还可以假设输入三角形不退化,并且所有边和角度都不为零。 以下示例输入告诉您side a为8,side b为,12而angle A为0.5弧度: 8 12 ? 0.5 ? ? 输出量 输出以与输入相同的格式给出-上用六个空格分隔的数字stdout。唯一的例外是,当无法求解输入三角形时,"No solution"必须将字符串写入stdout。如果可能有两种解决方案,则它们都将以换行符的形式输出。 以下是上述输入的输出: 8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388 8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714 输出不需要具有很高的精度,但是至少需要几个小数。 规则 输入是stdin从命令行参数中读取的 输出写入 stdout 如果给定输入有两种解决方案,则输出两者 如果信息太少而无法获得一两个清晰的解决方案,请考虑使用这种"No solution"情况 不能使用内置或预先存在的代码(当然,您可以使用触发函数,但不能使用“ solveTriangle”等) 最短代码胜出 测试用例 在 …

4
仅有的Bagatelle
挑战 给定一个像下面这样的面包板: | | | /\ / | | \ /| | \ \ /\ \ | | \ / \ | |\ / / \ | | \ / \ | | \ | | \ / \ /\ \ | |\ / / \ /| | / | …
13 code-golf 

9
Soundex功能
编写最短函数,为仅包含大写字母AZ的姓生成American Soundex代码。您的函数必须产生与所有链接页面的示例一致的输出(如下所示),尽管它不需要也不应删除前缀。输出中的连字符是可选的。玩得开心! 注意:您可能无法使用soundex()包含在PHP或其他编程语言等价物的功能。 例子: WASHINGTON W-252 LEE L-000 GUTIERREZ G-362 PFISTER P-236 JACKSON J-250 TYMCZAK T-522 VANDEUSEN V-532 ASHCRAFT A-261
13 code-golf  string 

4
拼音组合
创建一个函数,该函数将一个拼音音节的字符串作为参数,并返回存在的组合的true,否则返回false。 用“ v”代表“ü”。 这是组合的完整列表。 http://www.pinyin.info/rules/initials_finals.html 例子 f("bu") == true f("zheng") == true f("nv") == true f("ri") == true f("cei") == false f("ia") == false f("kian") == false f("qa") == false 请不要做诸如抓取网页或阅读输入法文件之类的事情以减少字符数。(如果这样做,那么数据的长度将计入字符数)。该代码高尔夫的目的之一就是了解如何简化规则。最短的代码获胜。

2
BlackJack KOTH比赛
黑杰克 当我为最初的KOTH挑战进行爆炸时,我想提出另一个挑战。对我而言,这些AI挑战的乐趣在于改进了一个相对简单的机器人,该机器人巧妙地玩了非常简单的游戏。由于纸牌游戏的概率性质,我认为二十一点就像TPD一样可能是一个有趣的KOTH游戏。 所有规则均源自该网站对BlackJack鞋子的描述 卡片和套牌规则 机器人在四(4)名竞争对手和一(1)名经销商的牌桌上玩 所有玩家和发牌者都共用一(1)张鞋(洗过的甲板),直到用尽为止,此时将添加新的随机洗过的甲板,并继续比赛。目前,尚未通知机器人已添加新平台。如果缺少此功能会引起足够的困扰/麻烦,则可以添加此类通知。 每回合买入10张,免费提供卡 完美/理想手牌得分为21 所有面部卡的值为10 所有数字卡都值钱 ace值11或1。这将由框架自动处理,而不是由自动程序处理。 按照规则,所有玩家的卡面朝上并可见。经销商的一张牌面朝下,另一张牌面朝上。 计分 得分超过21且使用ace作为11迫使ace的价值降低到1 超过21的分数不能强制低于21“破坏”机器人的阈值 经销商 庄家抽牌直到他破产或得分超过17 ,这时他被迫站立 博彩和筹码 在每一轮的开始,一个买入的10充电,所以有最低持股比例的10,最小下注 1 注 -赌注是下注参数的绝对值,所以也懒得尝试下注。 无法负担买入的机器人被从比赛中删除 下注时,机器人不能下注超过其拥有的筹码 如果有可能下注,则将筹码下注从机器人中删除并添加到赌注中 赢得下注将使机器人获得2倍筹码下注。但是,由于从筹码中减去了赌注,因此该机器人收支平衡,然后赢得了该赌注的1倍。 机器人只有在其分数大于发牌人的分数时才能赢得赌注 游戏性细目 单手 游戏开始时,每位玩家都会迭代发一张牌,并从其筹码中减去10美元的买入费/最低赌注。 经销商抽奖 第二次过关,并且另一张卡发给所有玩家。 经销商抽奖 然后(按照处理它们的顺序)按照“程序员界面”部分中的说明执行每个漫游器,并且必须移动或站立。博彩被视为举动。注意,下注不会影响机器人进行进一步移动的能力。很有可能先下注然后下一张牌,也有可能在出局前先下多张牌并下注。 当所有机器人停止运行或站起来时,发牌人的游戏极限达到17 然后将机器人的分数与庄家的分数进行比较,赌注获胜和输掉 一轮 被认为构成五(5)手。在两手之间,对参赛者列表进行排序以删除玩家,然后进行进一步处理,以确保所有机器人都玩相同数量的手(这一事实规定,参赛人数不会在四人桌之间平均分配) )。 程序员的界面和法律举措 如CardShark文件中所述: # DOCUMENTATION # INPUT SPECIFICATION # $ ./foo.bar …

5
通过三点圈
给定平面上三个点的笛卡尔坐标,通过它们全部找到圆的方程。这三个点将不在一条直线上。 程序输入的每一行将按顺序包含3个点的x和y坐标A(x),A(y),B(x),B(y),C(x),C(y)。这些坐标是小于1,000,000的实数,彼此之间用空格隔开。 解决方案将作为形式的等式打印(x-h)^2 + (y-k)^2 = r^2。对值h,k,r将被印刷有小数点后三位数字。应根据需要更改方程式中的正号和负号,以避免在数字前出现多个正号。 Sample Inputs 7.0 -5.0 -1.0 1.0 0.0 -6.0 1.0 7.0 8.0 6.0 7.0 -2.0 Sample Outputs (x - 3.000)^2 + (y + 2.000)^2 = 5.000^2 (x - 3.921)^2 + (y - 2.447)^2 = 5.409^2
13 code-golf  math 

5
1P5:地震!
USGS的地震仪刚刚发现了大地震!紧急响应小组需要快速估算受影响的人数。编写一个程序来计算这个估计。 您的程序收到2个输入。首先是地震本身的细节。地震模拟为一条线段,地球沿着该线段破裂,以及距断层的临界距离,在该距离内可能会造成破坏。第二个输入是该地区城市的位置和人口清单。您的程序应计算出受影响区域中的人口数量,即故障段关键距离内所有城市的人口总数。 输入值 首先是描述地震的线,其中包含断层起点和终点的x,y坐标以及临界距离。格式为A_x A_y B_x B_y D。例如: 3.0 3.0 7.0 4.0 2.5 编码从(3.0,3.0)扩展到(7.0,4.0)且临界距离为2.5的故障。 其次,该区域中每个城市的一行,包含城市及其人口的x,y坐标。例如: 1.0 1.0 2500 5.0 7.0 8000 3.0 4.0 7500 9.0 6.0 3000 4.0 2.0 1000 输出量 居住在受影响地区的人数。对于上面的示例,只有第三和第五座城市处于危险区域,因此输出为 8500 最短的代码获胜。 例子2 0.0 0.0 10.0 0.0 5.0 5.0 4.0 10000 5.0 -4.0 1000 5.0 6.0 100 11.0 …
13 code-golf  math  1p5 

12
模拟爆炸的最紧凑代码
您是否可以编写一个程序来渲染一组爆炸的像素(如在简单的粒子引擎中),并且可以用很少数量的字符(按键)完成此操作?(回想一下游戏中的旅鼠,那时候这些小家伙会爆炸并且他们的小像素碎片飞散开来。) 有人在这里将一个简单的粒子系统编程为“ 处理”草图,与我认为其他人应该尝试完成的工作相比,它相当庞大。但是如果有人可以在c ++和sdl甚至Java或c#中做同样的事情,我会印象深刻。
13 code-golf 

7
n,最接近n的素数,n的平方和最接近n的斐波那契数的平均值是多少?
这是一个数学问题,涉及很多问题,使其颇具挑战性,并且您可能已经猜到,这是代码高尔夫球,因此它也应尽可能短。 的输入,n是任何整数数量(至少应该支持整数,但不必限于)。该输出是平均的: n 的平方 n 最接近质数 n n斐波那契数列中最接近的数字 不久,程序应该打印到标准输出通道的结果的(n+(n*n)+closestPrime(n)+closestFib(n))/4。 您不必担心可能的溢出等。正常的浮点精度也可以。 输入的方式完全取决于您。最短的程序(以字符为单位)获胜,就像打高尔夫球一样。 如果在寻找最接近的位置时出现平局,请选择以下选项之一: 上 下去 随机选择一个

4
长乘法,一次8位
您将得到一台16位计算机,并被告知实现任意大小的整数的乘法。您的寄存器只能容纳16位数字,最大的乘法指令需要两个8位输入并生成16位结果。 您的程序必须将两个任意大小的正数作为输入并输出其乘积。每个输入数字在其自己的行上编码为小尾数字节数组,其中每个字节为两位数的十六进制数字。输出必须采用类似的格式。也许最好用一个例子来解释: 输入 1f 4a 07 63 a3 输出 fd 66 03 a7 04 编码乘法477727 * 41827 = 19981887229。 您可以假定每个输入数字的最后一个(最高有效)字节为非零,并且您输出的数字的最后一块必须为非零。两个输入数字的最大长度为100个字节。 最小的代码获胜。 请记住,允许使用的最大乘法是1字节* 1字节,并且没有大于2字节的整数类型!
13 code-golf  math 

13
计算e的前N个数字
挑战 编写一个程序来计算e的前N(<= 10 ^ 3)个数字。 您的程序应采用整数N作为输入。 输入: 100 输出: 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427 输入: 7 输出: 2.718282 输入: 1000 输出: 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035 最短的解决方案获胜!
13 code-golf  math 

20
正常运行时间进度栏
编写一个程序,分析程序的输出uptime并生成一个解剖上提示性的进度条(如图所示),其长度等于当前的正常运行时间(以天为单位): $ uptime 23:01 up 34 days, 7:30, 5 users, load averages: 0.23 0.27 0.24 $ uptime|<command> 8==================================D (34天= 34个等号) 最短答案胜出。

1
用您的语言实施PCRE。
注意:自己尝试一下之后,我很快意识到这是一个错误。因此,我将对规则进行一些修改。 所需的最低功能: 字符类(.,\w,\W等) 乘法器(+,*,和?) 简单捕获组 您面临的挑战是在满足以下条件的情况下以您选择的语言实施PCRE: 您不得以任何方式使用语言的本机RegEx工具。您也不能使用第三方RegEx库。 您的输入内容应实现PCRE规范中的大部分内容。尽可能。 您的程序应接受以下两行作为输入: 正则表达式 输入要匹配的字符串 您的程序应在其输出中指出: RegEx是否与输入字符串中的任何位置匹配 任何捕获组的结果 获胜者将是实现尽可能多规范的作品。尽可能。根据我的判断,如果平局,获胜者将是最具创造力的作品。 编辑:澄清一些事情,这是一些输入和预期输出的示例: 输入: ^ \ s *(\ w +)$ 你好 输出: 符合条件:是 第1组:“你好” 输入: (\ w +)@(\ w +)(?:\。com | \ .net) sam@test.net 输出: 符合条件:是 第1组:“ sam” 第二组:“测试”

6
比较能力。
通过构造一个函数f(a,b,c,d,e,f)比较两个数字N 1 = a b c,N 2 = d e f: 如果N 1 > N 2返回1 如果N 1 <N 2返回-1 注意:不需要为N 1和N 2之间的任何其他关系返回任何值。例如,当它们相等时或当它们的关系未定义(复数)时。 其他限制: 所有数字都是整数 a,b,c,d,e,f可以为正也可以为负,但不能为零。 | a |,| d | <1000 | b |,| c |,| e |,| f | <10 10 运行时间少于几秒钟 例子: f(100,100,100,50,100,100) = 1 f(-100,100,100,50,100,100) = …
13 code-golf 

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.