编程拼图和代码高尔夫

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

1
模拟(基于重力的)台球式计算机
机器 台球式游戏机仅由符号\ _ /以及大小写字母,空格和数字组成1。 \和/是坡道。来自上方的球将分别偏转到右侧或左侧。对于两个坡道,如果球从任一侧进来,它将向下偏转。 _是一个逻辑元素。它执行的逻辑是计算机中最像台球的部分。首先,来自左侧或右侧的球沿相同方向连续。来自上方的球将停止。然后,执行结束后(请参见下面的“运行机器”),如果横穿/着陆在其上的球的数量为正偶数,则从元素底部释放单个球。 一个空格什么都不做。来自任何方向的任何球都将由于重力而直线下降。 小写字母是输入。所有输入将是单个1或0。 大写字母为输出。输出的数字将是撞到其位置的台球数。 该号码1在该位置释放了一个额外的台球。它代表逻辑1。 除此以外的所有字符都会\_/导致任何方向的球由于重力而掉落。 球永远不会合并,分裂或碰撞。它们仅在从输入a _或a 释放时创建1。只有当它们掉落到地上时才会被摧毁_。 示例机器- 1 a \_/ b \_/ \/ /\ / _ _ A B 机器中永远不会有任何空白行,但是_可能会使显示空白行。 运行机器 机器按层或行运行。顶层上的所有台球运动都在第二层发生任何事情之前进行。 机器 ab \_A C 运行如下: 首先,它提示您输入a形式a:。然后,用户将输入1或0(接着回车)。它对输入重复此操作b。这是第一层的结尾。我将假设用户为两个输入都输入了1。 然后,它会跟踪第一个球(从a)的路径,该球沿着\,穿过_,进入A,然后下降到下方的位置A。然后,它跟踪出第二个球(从b)的路径,该球直接向下进入_并终止。这是第二层的结尾。 现在,在第三层之前,由于上面_有两个球交叉,因此释放了一个球。输出A上有一个球越过,因此输出A:1。 对于第三层,它跟踪第一个球的路径(从_),该球经过C并直线下降。第二个球(落入A)也直线下降。 现在,在第四层之前,由于输出上C有一个滚珠,因此输出C:1。 由于第四层为空白,因此程序终止。 总结果应该像 a:1 (the user entered the one) b:1 (same …

3
实施图形计算器
涉及计算器的问题很多。但是,似乎没有涉及实现图形计算器的事情。 挑战 您将要编写一个完整的程序,该程序将多个公式用作来自STDIN的输入并将其图形化到STDOUT。输入将采用形式f1(x)=x^2-x-1。f后面会有一个数字0-9(含0-9),然后是(x)=,然后是要绘制图形的公式。您的程序应该能够接受输入,图形,接受更多输入,图形等。 这是代码高尔夫。 您的图表的X轴范围应为-5到5,每1/2单位至少有一个点的分辨率。Y轴要求相同。与现代计算器相比,这似乎是一个很小的范围,但增加此数量很可能是微不足道的。该图应在其上绘制轴,并带有+整数形式的刻度线。 应按正常的操作顺序对公式进行评估。这些公式中将没有任何垂直渐近线/未定义区域。该变量将始终为x。如果使用相同的方程式编号输入两个公式,则最旧的一个应被擦除并用新的公式替换。空白公式的计算结果应为零。由于公式可能不会总是给出1/2的整数倍,因此您需要四舍五入到最接近的1/2。 绘制公式的图形时,其线应由公式的数字组成。当一条线与某个轴相交时,该轴应在顶部绘制。当两条线相互交叉时,显示的内容无关紧要。 输入示例 f1(x)=x+1 输出量 + 1 | 1 + 1 | 1 + 1 | 1 + 1 |1 + 1| +-+-+-+-+-+-+-+-+-+-+ 1 | 1 + 1 | 1 + 1 | 1 + 1 | 1 + | + 输入值 f2(x)=(x^2)^0.25 输出量 + …

3
节省会话的Quine
受到这个问题的启发。 创建一个程序,提示用户存储一些数据,并在退出程序时吐出程序本身,但会话数据已更改。 然后,用户打开新生成的程序,并可以从先前的程序中调出数据。 指令 KEY VALUE:KEY将会话变量设置为VALUE *:清除所有数据 ! KEY:删除 KEY ? KEY:查询KEY(如果不存在:什么都不打印然后继续) 否则,退出程序 键或值都不能包含任何空格。新生成的程序的文件名必须标识该程序的版本,您可以使用日期或计数器。 交互示例: name test store name = test data is now { name: test } 0 1 data is now { name: test, 0: 1 } ? name output: test ! 0 delete 0 data is now …
12 code-golf  quine 

7
今天是星期几(或其他日期)?
任务 编写一个程序或函数来计算用户输入的日期的星期几名称。 输入输出 输入是一个字符串,YYYYMMDD。 输入值示例: 20110617:2011年6月17日 19040229:1904年2月29日 06661225:666年12月25日 00000101:1月1日,0 99991231:9999年12月31日 您可以假设所有输入均有效。请注意,零年有效。 输出是0和之间的整数6。每个整数代表星期几的名称。您可以自由决定哪个整数代表星期几的名称,像这样 0:星期一 1:星期二 2:星期三 ... 6:星期日 (按顺序)或这一 0:星期一 1:星期三 2:周日 ... 6:星期六 (顺序不对)。 测试用例 输入周日输出(在此示例中使用[0..6-> Monday..Sunday]。) 20110617星期五4 19500101星期日6 22220202星期六5 19000228星期三2 19000301星期四3 19450815星期三2 19040229星期一0 19040301星期二1 17760704星期四3 20000228星期一0 20000229星期二1 20000301星期三2 20121223星期日6 00000401星期六5 66660606星期三2 59161021星期六5 限制 你不能使用任何类型的函数/类/ ......这些都与时间戳或日期,就像Date在课堂上Java/ JavaScript/ ActionScript,或getdate在功能上PHP。 您应该使用Gregorian压延机,现在很多人都使用它。 当然,最短的代码胜出。如果两个代码的长度相同,则得票最多的代码将获胜。 …
12 code-golf  date 

4
国际象棋骑士的最短路径
您的程序应计算国际象棋骑士到达国际象棋棋盘每个方格所需的移动次数。输入将是两个以空格分隔的整数,代表起始正方形的坐标(水平然后是垂直坐标,每个为0-7)。您的程序应输出一个数字网格,其中包含国际象棋骑士达到每个方块所需的最少移动次数。 例子 输入 0 0 输出 03232345 34123434 21432345 32323434 23234345 34343454 43434545 54545456 输入 3 1 输出 21232123 32303232 21232123 34121432 23232323 32323234 43434343 34343434 最短的代码获胜。
12 code-golf  chess 

10
创意编程[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 8年前关闭。 用您的编程编写故事。JavaScript中的示例: self.book = { "story": function() { var once = "upon", aTime = setTimeout(function() { // Code would continue... }, 1000) } }; self.book.story(); 规定: 在编译之前,之中和之后必须运行无错误。 每个字符串/名称最多只能使用两个单词作为故事。 JavaScript示例: var story = "Once upon a"; // Wrong (Using more than two words) var …

22
JAxH混淆方法,不是文本[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 JAPH是制作打印“ Just another Perl hacker”的程序的悠久传统。这个站点上已经有关于JAPH的问题,但他们似乎更关注隐藏文本,但是JAPH一直更多地是隐藏其执行方法的方法。因此,我要求您炫耀自己喜欢的语言的出色功能,不要太担心隐藏文本(除非您愿意)。 这是Perl的一个矿,对于一个经验丰富的速记员来说,这应该不难理解,但对其他人来说可能很有趣。 (*STORE,*TIESCALAR)=map{eval"sub{$_}"}qw'map{print&&sleep$|}split//,pop bless\$|++';tie$t,main;$t="Just another Perl hacker,\n" 由你们主观地投票,让我们看看一些弯腰的人!

5
多项式插值
编写一个 使用真正的任意精度有理数执行多项式插值的程序。输入看起来像这样: f(1)= 2/3 f(2)= 4/5 f(3)= 6/7 ... 您可以假设=符号前后只有一个空格,所有数字都是小数或整数。您可能还假设输入中的所有分数都是不可约的。 您可以假设不需要进行错误检查,即输入是有效的,并且f(x)中没有x被加倍。 输出应采用兼容LaTeX的形式,发出的LaTeX代码应产生与此处给出的输出相同的图形表示。 f(x)= 123x ^ 2 + \ frac {45} {2} x + \ frac {7} {4} 例如,必须尽可能减少分数。\frac{2}{4} 不允许这样的事情。如果数字是整数,请不要使用小数。 特殊规则: 您的程序应该... 适用于12级以下的多项式 不到1分钟即可完成输入 不使用任何为您完成整个计算的函数 输出最小可能次数的多项式 测试用例: 给定的测试用例只是为了澄清。您的程序应为所有正确的输入产生正确的结果。 输入值 f(1)= 2/3 f(2)= 4/5 f(3)= 6/7 输出量 f(x)=-\ frac {4} {105} x …

8
寻找最大路径
给定一个正数的平方,自然数写一个程序,找到一条水平和垂直路径,沿着它们的数字总和最大。甲水平路径从第一列到最后去,并具有通过一个在每个步骤中,以增加其列位置。甲垂直路径从第一行进行到最后的,并具有由一个在每个步骤中,以增加其行位置。此外,水平路径中的行位置可以保持相同或沿任一方向改变一个,对于垂直路径也是如此。 为了说明这一点,以下可能是有效的路径: 以下路径将无效,因为它会向后退(并在某些地方保留在同一行): 以下路径同样无效,因为它一步一步将行位置更改了多个: 注意:解决方案应在可接受的时间内运行。 输入值 在标准输入上给出n行输入,每行输入n个以空格分隔的正整数。2≤ Ñ ≤40的每一行是由一个换行符终止。数字足够小,以至于最大和适合32位有符号整数。 输出量 水平和垂直路径的最大和(按此顺序),以单个空格分隔。 样品输入1 1 2 1 2 样品输出1 3 4 样品输入2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 …
12 code-golf 

8
奎因挑战我
挑战 在此任务中,您必须编写一个程序,将输入整数N (-1e9 <= N <0 && 0 <N <= + 1e9),然后计算T =(abs(N)%M + 1),如果N为正,然后从源头开始输出第T个字符,否则从源末尾输出第T个字符。 M是您的源大小(以字节为单位)。 示例:如果您的来源是:abcd efg/hi 输入: 2 输出: c 输入: -3 输出: g 输入: -9249678 输出: b 输入: -11 输出: i 约束条件 不要使用任何FILE操作 您可以使用任何选择的语言 尽量避免甚至不要使用1字节提交,因为它会破坏所有乐趣。 最短的解决方案获胜! 编辑:问题陈述已被修改,以便可以使用随机测试数据(和所有解决方案的相同数据)来判断解决方案,因此请相应地更新您的解决方案,对于给您带来的不便,我们深表歉意。
12 code-golf  quine 

9
分叉阶乘
这种高尔夫运动需要将阶乘计算分配到多个线程或多个进程中。 某些语言比其他语言更易于协调,因此与lang无关。提供了示例化的示例代码,但是您应该开发自己的算法。 比赛的目的是看谁能拿出最短的(以字节为单位,而不是秒)多核阶乘算法来计算N!根据比赛结束时的选票来衡量。应该有一个多核优势,因此我们要求它应在N〜10,000下工作。如果作者未能提供有效的解释说明选民如何在处理器/核心之间分配工作,则选民应投反对票,并基于高尔夫的简洁性投票。 出于好奇,请发布一些性能数字。在某些时候,可能会在性能与高尔夫得分之间进行权衡,只要符合要求,就选择高尔夫。我很想知道什么时候发生。 您可以使用通常可用的单核大整数库。例如,perl通常与bigint一起安装。但是,请注意,简单地调用系统提供的阶乘函数通常不会将工作分散在多个内核上。 您必须从STDIN或ARGV接受输入N,并向STDOUT输出N!的值。您可以选择使用第二个输入参数来为程序提供处理器/内核数,这样它就不会执行下面将要看到的事情:-)或者您可以为可用的2、4进行显式设计。 我将在下面发布自己的奇数球perl示例,该示例先前已提交给Stack Overflow下的使用不同语言的阶乘算法。这不是高尔夫。提交了许多其他示例,其中许多是高尔夫,但许多不是。由于采用类似共享的许可方式,因此可以随意使用以上链接中任何示例中的代码作为起点。 在我的示例中,性能由于许多原因而表现欠佳:它使用了太多的进程,太多的字符串/ bigint转换。正如我所说的,这是一个故意的奇怪例子。它将计算5000!在这里在4核计算机上不到10秒。但是,一个更明显的两个衬里for / next循环可以做5000个!在3.6s的四个处理器之一上。 您绝对必须做得比这更好: #!/usr/bin/perl -w use strict; use bigint; die "usage: f.perl N (outputs N!)" unless ($ARGV[0] > 1); print STDOUT &main::rangeProduct(1,$ARGV[0])."\n"; sub main::rangeProduct { my($l, $h) = @_; return $l if ($l==$h); return $l*$h if ($l==($h-1)); # arghhh - …
12 code-golf 

1
破解密码
我设计了一个简单的随机生成器,使用乘法和模数方法以混沌的方式循环两个数字。为此很好。 如果我将其用作密码生成器,则由于攻击者可以以计算有效的方式对一系列随机数进行种子反向工程,因此它容易受到已知的明文攻击。 为了证明密码破解,找到合法的种子值对,它们在[0; 255]范围内连续生成7个零,并且使用尽可能少的功率,CPU时间等。 这是用JavaScript编写的随机生成器: function seed(state1,state2){ //Constants var mod1=4294967087 var mul1=65539 var mod2=4294965887 var mul2=65537 function random(limit){ //Cycle each state variable 1 step state1=(state1*mul1)%mod1 state2=(state2*mul2)%mod2 //Return a random variable return (state1+state2)%limit } //Return the random function return random } //Initiate the random generator using 2 integer values, //they must …

5
离解出版社
http://en.wikipedia.org/wiki/Dissociated_press Dissociated Press是一种从现有文本生成随机文本的算法。 该算法从在文本中打印任何N个连续的单词(或字母)开始。然后在每个步骤中,它搜索已经打印的最后N个单词(或字母)的原始文本中是否有随机出现,然后打印下一个单词或字母。 以功能或整个程序的形式实施Dissociated Press。最短的代码获胜。不要使用命令行或emacs脚本来调用原始的Dissociated Press程序。不要使用任何外部库。

13
进行数字回文
编写一个以数字作为参数的函数,并通过附加最小位数来使其成为回文。该数字最多为100位数字。 Sample Inputs 12 122 232 2323 1012121 Sample Outputs 121 1221 232 23232 101212101

14
完成对称图
您将获得四分之一的地图,该地图在x轴和y轴上对称,作为输入。该程序应打印完整的地图。 该地图可以包含以下字符:-+/\|.,并且应该按预期的方式将其打开。输入数据始终为矩形且较小。 例 $ cat in +--- |./. |/.. $ ./solution < in +------+ |./..\.| |/....\| |\..../| |.\../.| +------+ 最短的代码获胜。
12 code-golf  string 

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.