编程拼图和代码高尔夫

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

8
建立长字链
挑战在于找到最长的英语单词链,其中下一个单词的前3个字符与最后一个单词的后3个字符匹配。您将使用Linux发行版中可用的通用词典,可以在此处下载: https://www.dropbox.com/s/8tyzf94ps37tzp7/words?dl=0 其中有99171个英语单词。如果本地Linux /usr/share/dict/words是同一文件(具有md5sum == cbbcded3dc3b61ad50c4e36f79c37084),则可以使用该文件。 单词只能在答案中使用一次。 编辑:字母必须完全匹配,包括大写/小写,撇号和重音。 有效答案的一个示例是: idea deadpan panoramic micra craftsman mantra traffic fiche 得分为8。 有效词链最长的答案将是赢家。如果出现平局,最早的答案将获胜。您的答案应列出找到的单词链,以及(当然)您编写的用于执行此操作的程序。

20
生成任何随机整数
您的程序/功能应 输出正好一个整数 输出具有正概率的任何整数 至少以50%的概率输出大于1.000.000或小于-1.000.000的整数。 输出示例(必须全部输出): 59875669123 12 -42 -4640055890 0 2014 12 24 -7190464664658648640055894646646586486400558904644646646586486400558904646649001 说明: 尾随换行符是允许的。 不允许前导零。 -0 被允许。 最短的代码胜出。

30
拼图拼图
这是一个依赖答案的挑战!答案的顺序很重要,您的确切任务取决于发布的最后一个答案。您可能想按最旧的答案排序。 让我们拼凑一些代码!这是1920个随机(可打印ASCII)字符。可以将它们视为仍在盒子中的一大堆未分类的拼图碎片: L-^=v^Ej2tW8OxNOIecSt4m}tji2O%YRJ;PJ!M|0*oO77$*Rs&2*<c"KI7e%FY^?I=];Y@`x)u)IBk%_a#<E6<yv5O*$kL): KNGq)2Wa%b)j."(6U|{[UY@`lrCSJ`u0RHX!1z7f,v}n=GvRgkrEZ=YT:4H44bz]iC<](:+FF?Ay'vX~h5QMF)0vaXk1sk@p Zj).{+l;PBKHABvEP%FnSw>u<_-4B^A>I8Kay&5]vXZJ{fCF]UVZ<!ZpOI$7\Y%`@:%H3wPsX-`/l]ZZ?Q/d`\M<T@'t]zip {[ovg:6EpCT&'+vU4Heb^;}0AV|?<}M0rAH/^DL"RkT~%$[VUlM]-&We4(P=66},hL~;a`:$'yty.W[g2OWcL~b:Ryj0*eN< ;&-n[F1F=oh0k[NI!xS"]pA@Y;K}'=ekG5yda8J$+`N;:FIx:l,f_LT@sV[]HF@2*vl?|q"GL1j&%e(CyYPqY%3W|@`z}]bp 4_'1Nx{"G2&j6$UWt_#%`sTt2xC}s1P8J<gV24_RWge/aMuyVOjz=zS!1i2s@`Q#@^~@W/k@.YLbKxS:g9?J^p;7ju?B\yC5 x,ZApKS5G4}kx_iM)f4/|su>=[{XSV#{,j5Qn3U.v5LF;HXs%DYm4'+efmU;\}f6j$SFCRC`Gsd37:'3$q=bs;lvsW0Yj^:- I[94@I|.IpR=}4KB4Z0G4>8PR29'L?n\gk,*4X[-%T`\FC)jj0jl_x<xL8E:G2-"3tT8&E}"sE+SH[7jR%@V)a{!m8K>.rAO 2[dq7GX9nrz8p4}^2mn@q|dF%<.Tl8)Dk?O.<UoE(a*k_=4+u!h$^bVd:$jS#EHFh@Z=y=ib^~/~lEJ^SQ3E_t#&^IOov7v8 ~j#I#OHgxg{DZDyCsq-(GVq}HbiG,JV?eJ~5wJ;bSt@;3LI!2(6gIT92>}`_dw;YF@ccTIEz\Gu@2(}J2I1"S{R(2niIYPp9 8A3iiP[*!SH2*SN8'`V?w4Ufx2H*Az%{}FlUdH31TJ5{:ge^N91^;9Gj`Uqf'$_|8P"kHR1w.(ASwmN)U-~q"[XcWbqPnns= d.ZoPJ}$Xc2lA>HN28`(d0y+UAr*sQ=?KE07=\FsVN(#?&hRabS%BVI#<`O$o#4x5ZFFLGDcA4t?&Eh~Z$oBWwNSNv`^;vO' 2&9egng~L#\QkfMG?S/n@%-VA[?f9K&3"V%P#Sv0!D<,GV:Z;3c&zFe^k&^0b7fAjvrbMc^Lq7k$h=YL<h7<0\NK>~Q=uUv) 4cI$.'b-RVS-=rom:=8QR=c>9am-^5F[XGv>E/>|]~\']3{r{kTc?ee1v=;I7]52#NE)~A;}!z>5?hi{5<9FtWH6{VO_Y-Jy Mw>{l8n#mD,kl'8cG^.7sy=QqU-3~SKGs5(.Ta]:-Vfr'NS$o*q:w6e$&7spk3{CFT'l_hGY0-0Xui*5i^0^fO@6?2IdCn_C lPKaJ6]0t!u>v8<d'Vby]8kEHh04p(YI)&7w82BrGB3PkI,s+%7ux5)gau`G!8F8hLa4[lfD55Xf3Hqy*-K,?;2'fxH3JWYE Z.[N`:[K:CY@TzKX4TMXsm{Xbd:B3)Gy[mlwnC$>)z`:k=C\0ho/v{57#+2,*%]>p~vI2^C:2DebJR>.ESw^wd2N<~]O9sOQ `_yvIw&Ryf%JgT@W(G1wfU3.4G3U}x1jKJzJY\S9n$2~P;F}*eT9UXcTNBTrTs>~0v_Oi.y8ofX6i5u$;'^"q][QhTb*gO[U n'R0"v1r+9fv;5G7Bg=D:c*a=1@[}7}dYOO{Mz2&@6`jnNq.QcBDM9Dd=R.*=MqZ93#'{AJJFqx<{qb':B!H8ig1L%T\Vuc" (h$i3`,scX'hqpbw"=nY`*Lu:h1wR{+-`\^3cQkIWfq)3?&p;~pvDW$o7\O|R6rB2{PX.s#G6A.s<OA_,TI_b*&lO@L3KrQv 我们令人费解的“地板”最初只是96x20的空格网格(代码点0x20)。每个答案可能会在相邻的拼图块之间移动,并最多选择10个拼图(字符)并将其添加到拼图中以创建一个新程序。该程序必须打印您的答案编号(从1开始按顺序编号)。 接听 了解这一挑战的关键在于,一次只能一个人回答,每个答案取决于之前的回答。 永远不应该有两个答案有相同数量的ñ。如果两个人碰巧同时回答了一个N,则稍后回答的人(即使相差几秒钟)也应该宽容地删除他们的答案。 为了使此过程更流畅,请在发布答案时尝试遵循以下步骤: 确保有人独立验证了先前答案的正确性(并留下了相应的评论)。 以前面的“拼图地板”和“盒子”为例。您可以将拼图地板上的任何相邻字符块作为一个单元自由移动(如果字符沿水平或垂直方向触摸,则它们是相邻的)。相邻的块无法再次拆分。5x4网格上的示例: Last answer: Valid: Invalid: |a bc| |d g | |a bc| | bc | |a bc| | d e | |fa …

3
选择您自己的语言代码
让我们以16x16可打印ASCII字符(代码点0x20至0x7E)为网格。从左上角到右下角有30条选择的15条路径,仅进行正交移动,如以下示例所示: ##.............. .#.............. .######......... ......##........ .......##....... ........#....... ........#....... ........#....... ........###..... ..........###... ............#... ............#### ...............# ...............# ...............# 每个此类路径均由31个字符组成。请注意,这些字符中的每个字符在31个对角线中都不同: 0123456789ABCDEF 123456789ABCDEFG 23456789ABCDEFGH 3456789ABCDEFGHI 456789ABCDEFGHIJ 56789ABCDEFGHIJK 6789ABCDEFGHIJKL 789ABCDEFGHIJKLM 89ABCDEFGHIJKLMN 9ABCDEFGHIJKLMNO ABCDEFGHIJKLMNOP BCDEFGHIJKLMNOPQ CDEFGHIJKLMNOPQR DEFGHIJKLMNOPQRS EFGHIJKLMNOPQRST FGHIJKLMNOPQRSTU 这不是示例网格。这是31个对角线的可视化。 如果没有对角线两次包含相同字符,我们将称其为对角线唯一的网格。如果网格具有此属性,则没有两个路径将包含相同的字符串。(只是澄清一下,可视化本身基本上是相反的就是对角线唯一。) 挑战 设计一个对角线唯一的16x16网格,以使尽可能多的路径是有效代码,Jabberwocky并以尽可能多的语言打印到STDOUT(带有可选的尾随换行符)。每个代码可以是完整程序,也可以是没有返回语句的无参数函数的主体(这是为了不阻止需要在某些样板函数/类/命名空间中使用其代码的语言)。 注意:为简单起见,您可以为未使用的单元格使用一些保留字符,例如Ypnypn。 对于每个有效路径,请清楚说明其有效的一种编程语言。 获奖者是上述列表中使用的语言数量最多的作品。(或者,对于要计数的每种语言,请显示一种在该语言中有效的路径,但请确保不要对两种语言的任何路径进行计数。) 如果出现平局,请计算没有被任何有效路径覆盖的网格单元。较少的未使用单元会获胜。如果仍有平局,我将以(净)票最多接受答案。 验证脚本 我只是很快地整理了一个CJam片段,您可以使用它来验证网格对角线唯一。 转到在线CJam解释器。 粘贴以下代码 l:A; qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique" 在输入字段中,将保留字符放在第一行(如果不要求使用保留字符,请使用未使用的字符),然后将网格置于2到17行。例如,对于Ypnypn的答案: …

8
相对vs绝对
如果某人在此网格中的A点处朝北,希望指示遵循绿色路线(因为他们只能遵循网格线)到达B点,您可能会告诉他们: 围棋North, North, West, East, East, South, East, East。 或同等 围棋Forward, Forward, Left, Back, Forward, Right, Left, Forward。 (其中,向右,向左或向后的命令隐含地意味着朝该方向转向然后前进。) 用一个参数编写一个函数,该函数沿相同的路径(不仅指向同一点)在这些绝对方向和相对方向之间转换。假设定向人员总是开始朝北。 如果参数是字母字符串,则NSEW返回等效的相对方向。 例如f("NNWEESEE")返回字符串FFLBFRLF。 如果参数是字母字符串,则FBLR返回等效的绝对方向。 例如f("FFLBFRLF")返回字符串NNWEESEE。 空字符串产生自己。假设没有其他输入情况。 如果您的语言没有函数或字符串,请使用最合适的方法。 以字节为单位的最短代码获胜。
17 code-golf 

4
使用现有框架对2048 AI进行编程
编辑:最近,我的问题已被提议作为2048 Bot Challenge的副本。我要强调,这个问题不同于那个问题,并且要求答案与那个问题的思考方式有所不同。2048 Bot Challenge要求用户创建一个机器人,该机器人将运行一个小时,其中最高的分数是用户的分数。此外,它的限制为555个字节。我的挑战很少频繁地运行代码,只有3次。您的得分是通过使用这三倍的平均得分,再除以您打高尔夫球的字符长度得出的。我的问题是鼓励参赛作品“更聪明”,而不是试图通过蛮力获得最高分。 -- 编辑:将get方法更改为getTile,以避免与JS关键字get发生冲突。此外,增加了高分部分。 最近,我创建了一个站点,该站点允许使用JavaScript控制流行的游戏2048。我的网站在这里链接: http://thatcoolidea.com/2048 怎么样: Ace编辑器位于面板上方。您将代码放入其中,该代码每250毫秒运行一次,或每秒运行4次。这称为循环。 使用以下方法控制电路板。您不能使用箭头键。 up(); //move up down(); //move down left(); //move left right(); //move right move(integer); //integer is a direction. 0:up,1:right,2:down,3:left getTile(y,x); //gets the value of the tile in position y,x on the board. See diagram 为方便起见,定义了以下变量: eother //boolean, alternates every …

6
最小的字节码解释器/ VM
页首横幅-已通过JIT编译(越低越好) es1024-81.2分(包括有效的编译器!) 基思·兰德尔-116点 病-121点 页首横幅-解读(越低越好) 马丁·布特纳(MartinBüttner)-706654点(大约2个小时左右)。 ip割-30379点(97秒) 您的任务(如果您选择接受)是编写尽可能小的字节码解释器/ VM。VM /解释器使用以下指定的语言使用小型CISC架构(操作大小可能有所不同)。完成后,必须打印3个CPU寄存器的值,以证明打印了正确的输出(3,126,900,366)。 编译器 如果您想进行自己的测试,请在下面发布编译器。随时发布答案。 显示代码段 window.compile=function(){var e=$("#text").val().toLowerCase().match(/[^\r\n]+/g);var t=[];for(var n=0;n<e.length;n++)compileLine(e[n],t);var r="";for(var n=0;n<t.length;n++)if(typeof t[n]=="string")r+="\n";else r+="0x"+t[n].toString(16)+" ";$("#compiledArray").val(r)};window.compileLine=function(e,t){var n=e.split(" ");if(n[0]=="load"){t.push(0);t.push(getInt(n[1]));t.pushArr(getInt(n[2]))}if(n[0]=="rload"){t.push(1);t.push(getInt(n[1]));t.push(getInt(n[1]))}if(n[0]=="push"){t.push(2);t.push(getInt(n[1]))}if(n[0]=="pop"){t.push(3);t.push(getInt(n[1]))}if(n[0]=="add"){t.push(4);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="sub"){t.push(5);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="mul"){t.push(6);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="div"){t.push(7);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="jmp"){t.push(8);t.pushArr(getInt(n[1]))}if(n[0]=="cmp"){t.push(9);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="branchlt"){t.push(10);t.pushArr(getInt(n[1]))}if(n[0]=="brancheq"){t.push(11);t.pushArr(getInt(n[1]))}if(n[0]=="branchgt"){t.push(12);t.pushArr(getInt(n[1]))}if(n[0]=="branchne"){t.push(13);t.pushArr(getInt(n[1]))}t.push("NEW LINE")};window.getInt=function(e){if(e.trim().startsWith("<--"))return"COMMENT";if(e=="r0")return 0;if(e=="r1")return 1;if(e=="r2")return 2;if(e.startsWith("0x"))return parseInt(e,16);if(isNaN(parseInt(e)))alert(e);return getIntBytes(parseInt(e))};if(typeof String.prototype.startsWith!="function"){String.prototype.startsWith=function(e){return this.slice(0,e.length)==e}}Array.prototype.pushArr=function(e){this.push.apply(this,e)};window.getIntBytes=function(e){var t=[];var n=4;do{t[--n]=e&255;e=e>>8}while(n);return t} <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <textarea id="text" cols="40" rows="10"></textarea> <br/> <button onclick="compile()">Compile</button> <br/> <textarea id="compiledArray" cols="40" rows="10" readonly></textarea> …

7
从他的耳朵,手指和头部找到罪犯
在发现指纹和DNA测试之前,英国警察使用人体测量系统来识别重犯。对罪犯尸体的某些部位进行了测量并存储在记录中-假定这些尸体成年后大小没有变化。该系统称为bertillonnage。 下图显示了警方用于快速访问这些记录的归档系统。 图1:带编号抽屉的归档系统。 注意:如果看不到图像,请尝试imgur镜像 或自己编译。 文件柜由81个编号的抽屉组成。每个抽屉里都装有卡,每个卡上都有罪犯身体特定部位的尺寸: 他们的头长(H) 他们的头宽(B) 右耳的宽度(E) 食指的长度(F) 每种度量都分为小,中或大。 例如,抽屉56包含具有以下特征的卡:小H,大B,介质E和F.小这可以使用字母来谱写S,M和L在地方小,中和大: SH,LB,ME,SF 请注意,尺寸字母排在最前面,然后是尺寸。另外,!可能在前面放置一个感叹号,从而引起负面影响: !SH,LB,!ME,SF 这表明,具有以下特点卡:不小H,大B,不介质E和F.小有包含卡具有这些特征的四个抽屉- 58,60,61,和63。 您的任务是编写一个程序,当给定一个指示某些特征的字符串时,输出包含该特征卡的所有抽屉。如果没有抽屉包含具有给定特性的卡片,则输出0。 这是一些示例输入和输出。 输入:SH,LB,ME,SF 输出:56 输入:!SH,LB,!ME,SF 输出:58,60,61,63 输入:SB,!MF,!LF 输出:1,2,3,4,5,6,7,8,9 输入:MH,!MH 输出:0 这是代码高尔夫球,因此最短的入场券获胜。如果规范不明确,请在注释中提出问题。
17 code-golf  math 

7
两对多输出
挑战 我向您介绍了另一种间谍对抗间谍挑战,点刺混淆器与饼干。但是,在这种情况下,要保护的数据不是输入而是输出。 挑战的规则很简单。编写具有以下规范的例程: 该例程可以用任何语言编写,但不能超过320个字节。 该例程必须接受三个32位带符号整数作为输入。它可以采用接受3个参数的函数,接受单个3元素数组的函数或从任何标准输入读取3个整数的完整程序的形式。 该例程必须输出一个带符号的32位整数。 在所有可能的输入中,例程必须输出2到1000(含)之间的唯一值。例程可以输出的唯一值的数量称为其键。 例如,C程序 int foo( int i1, int i2, int i3 ) { return 20 + (i1^i2^i3) %5; } 具有9的关键,因为它(希望)只能输出的九个值16,17,18,19,20,21,22,23,和24。 其他一些限制如下: 该例程必须是完全确定性的并且是时不变的,对于相同的输入返回相同的输出。该例程不应调用伪随机数生成器。 该例程可能不依赖于“隐藏变量”,例如文件中的数据,系统变量或深奥的语言功能。例如,例程通常不应引用常量,除非常量在代码本身中明确定义。强烈建议不要使用依赖于编译器怪癖的例程,数学上未定义的操作的输出,算术错误等。如有疑问,请询问。 您(编码人员)必须精确知道例程可以产生多少个唯一输出,并且应该能够提供至少一个产生每个输出的输入序列。(由于可能有成百上千的唯一输出,因此只有在您的密钥被争用的情况下才需要此集合。) 由于此问题与经典加密几乎没有相似之处,因此,我希望它将为更多的读者所熟悉。 越有创意,就越好。 计分 每字节计数最短的未破解提交将被宣布为获胜者。 如果有任何混淆,请随时提出或评论。 反挑战 鼓励所有读者,包括那些已提交自己例程的读者,“破解”提交的内容。当提交的密钥发布在关联的注释部分中时,该提交将被破解。如果提交的内容持续存在72小时而不被修改或破解,则被认为是“安全的”,随后在破解方面的任何成功都将被视为比赛的原因。 每个读者每次提交只能进行一次破解尝试。例如,如果我向用户X提交:“您的密钥是20”,但我错了,用户X将拒绝我的猜测为错误,并且我将不再能够为该提交提交其他猜测。 破解的提交将被排除在争用之外(前提是它们不安全)。不应对其进行编辑。如果读者希望提交新的例程,则应在单独的答案中提交。 破解者的分数是破解者提交的内容(符合或不符合)的数量。对于计数相同的饼干,排名由所有破解提交中的总字节数决定(越高越好)。 得分最高的饼干将与获胜常规的开发者一起宣布为获胜者。 请不要破解您自己的提交。 祝你好运。:) 排行榜 上次更新时间:9月2日,美国东部标准时间上午10:45 不可逾越的壁垒(非破解提交): CJam,105 [丹尼斯] 不可阻挡的力量(爆竹): 丹尼斯[ Java,269 …

4
编写一个程序,以防括号在空格导致停滞的情况下用空格替换
您是项目经理。有一天,您的一名程序员发疯了(不是您的错),并在代码库中提取了所有表达式,并在其中添加了随机括号,然后当场退出,对您的不称职(也不是您的错)表示愤慨。这将是一个简单的修复,但是由于某种原因,您没有使用修订控制(完全不是您的错)。出于某种原因,其他程序员都不想遍历每个表达式来修正不匹配的括号(顺便说一句,这不是您的错)。这些天的程序员,您自己想。您将必须自己做。惊恐的事件!这样的任务本该在你下面... 输入将是一行,其中将包含多个左括号(( [ {)和右括号() ] })。它还可能但不总是包含注释(/* */)和字符串文字(" "或' ')以及各种数字,字母或符号。 至少会有一个括号(在注释或字符串文字之外)没有相反的对应关系(在注释或字符串文字之外)。例如,}没有{先验的错误。另一个例子:一个(没有)事后的。您的程序将以空格替换使括号匹配所需的最小括号数。 例子: (4 + (2 + 3))]==> (4 + (2 + 3)) (末尾方括号) ][][[]]==> [][[]](开始方括号) ("Hel(o!"))==> ("Hel(o!") (末尾括号) ( /* )]*/==> /* )]*/ (末尾括号) {()]==> () (大括号和方括号) 可以从最方便的方式(STDIN,命令行参数,从文件读取等)获取输入。 如果使用相同的清除次数来解决不匹配问题的方法不止一种,则可以接受。 括号中只会有不匹配的内容。字符串文字和注释将始终正确形成。 标题来自此SO线程 注释中永远不会有任何报价,报价中的报价,注释中的注释或报价中的注释。 这是代码高尔夫,因此最少的字节数获胜。如果规范不明确,请在注释中提出问题。

10
符号与字母
符号与字母 该ASCII字符已经分裂一次一次!您的设置是字母和符号。 这些信 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 符号 !"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~ 任务是编写两个程序: 准确打印每个字母一次,而无需在程序中使用它们。 每个符号仅打印一次,而无需在程序中使用它们。 规则 空格可能出现在您的程序或输出中。 不允许使用非ASCII字符。 输出以文件的内容或名称的形式输出到标准输出或文件中。 无输入。 输出只能包含一组或另一组的ASCII字符。 程序可以用不同的语言或相同的语言编写,但有一个例外: 该空白语言仅可用于项目之一。 有标准漏洞。 计分 # of characters in program 1 +# of characters in program 2 =Score 最低分获胜! 注意: 为了鼓励更多的投稿,您仍然可以仅针对其中一个程序发布答案并提供解决方案。您将无法取胜,但仍然可以炫耀一些炫酷的东西。 感谢加尔文的兴趣爱好启发了他先前的问题。

13
创建一个FizzBu​​zz编译器
欢迎来到编译器高尔夫的世界。您的任务是编写一个程序,该程序会生成另一个程序,以按规范播放FizzBu​​zz的变体。 您的编译器 编写一个编译器,以生成符合规范的FizzBu​​zz程序。此变体的规范以整数/字符串对数组的形式表示。 输入可以采用任何方便您的语言的形式。(我的示例使用n:xxxx,但这只是出于说明目的。) 每次调用编译器时,每个整数输入只能使用一次。 每对的整数将具有至少一个值。 每对字符串仅由四个ASCII字母组成。 输出必须是符合以下规则的单个完整程序。 输出可以是任何方便的形式,只要它是文本程序即可。(因此,没有返回的lambda表达式。) 对于不符合上述规则的输入,行为未定义。 您生成的FizzBu​​zz程序 编译器生成的程序将使用单个整数n作为输入。它将输出一个从1到n的数字序列,并在需要时用FizzBu​​zz字符串替换数字。 生成的程序必须使用与编译器相同的语言。 输入n可以采用适合您的语言的任何形式。 n的值至少为1。 输入编译器的至少一个整数的倍数的数字必须替换为所有与这些整数结合在一起的字符串。 不能用FizzBu​​zz字符串替换的数字必须以十进制ASCII输出。 例如; > GenFizzBuzz 3:Fizz 5:Buzz > a.out 5 1 2 Fizz 4 Buzz 计分 您的条目将根据编译器生成的程序的长度加上编译器的长度进行评分。使用以下每个参数多次运行编译器,然后将生成的程序的长度与编译器的长度相加,以得出分数。 只是计数。(无输入-生成的程序将在没有替换的情况下从1到n计数。) 只是高尔夫。(1:Golf-生成的程序将输出n次“ Golf” 。) 经典FizzBu​​zz。(3:嘶嘶声,5:嗡嗡声) (请注意,编译器需要为任何有效输入生成代码,而不仅仅是列出的这些。)

10
为我的深奥语言撰写翻译
我想过深奥的语言跳线。稍后您将了解原因。 它以字节为单元的随机存取存储器工作。RAM是零索引的,最初填充零。 尝试使用负索引访问单元时,将显示错误并终止程序。 尝试从比上一个更大的索引处读取时,应返回零。 尝试以比上一个更大的索引进行写入时,RAM应该增加到1024的倍数,并且新单元格要填充零(从技术上讲,您可以将RAM不能增加到1024的倍数,原因是性能得到了提高,因此如果花费很多字符,不能做到1024的倍数)。 程序还具有指向RAM中单元的指针,该指针最初为零 程序开始执行时,将显示输入字符串的提示(或从命令行参数获取输入,这取决于您)。输入字符串不应包含空字符(零字节)。然后将输入字符串从零索引处开始写入RAM。 当程序结束时,显示带有程序输出的框-RAM的内容从零索引到第一个零字节(不包括在内)。 现在,最有趣的部分是语法。 程序由命令(一元运算符-前缀)及其参数组成。命令和参数可以用空格或换行符分隔,但不是必需的。但是,参数内部的空格无效,例如,# 2 = 4有效但# 2 = 4 4无效。 程序之间可以有注释()。注释不能嵌套-例如,(abc(def)ghi)注释为中(abc(def)。注释可以放在任何地方。 #123 将RAM指针设置为123(任何正十进制整数或零)。 >123 将RAM指针增加123(任何正十进制整数)。 <123 将RAM指针减123(任何正十进制整数)。 =123 在当前单元格中写入123(任何无符号的8位十进制整数)。 +123 将123(任何无符号的8位十进制整数)添加到当前单元格(模256)。 -123 从当前单元格中减去123(任何无符号的8位十进制整数)(取模256)。 :123-“ goto”-转到命令号123(第一个为0)。您只能使用goto来控制程序的流程-它必须跳转-这就是为什么我决定将这种语言称为Jumper。 如果缺少参数,请考虑为><+-命令指定1 或为0 #=:。 此外,还有命令修饰符- ?(命令前缀),仅当当前单元格不为零时才执行下一个命令,否则跳过该命令。可以应用于任何命令。 例如,?:17如果当前单元格不为零,则-转到命令17。 如果程序无效或在运行期间发生错误,则会显示消息“错误”。因为是CodeGolf,所以这样的短消息就可以了。 你的任务 为此语言编写最短的口译员。 一些测试程序 (prints "Hello world!" regardless of input) =72>=101>=108>=108>=111>=32>=119>=111>=114>=108>=100>=33>= (appends …

15
查找最多3个数字而不分支
这次围绕您的目标是不使用分支或循环来查找最多3个整数(从-(2 ^ 31)到2 ^ 31-1在二​​进制2的补码中)。 您只能使用 不等式/平等(==,>,>=,<,<=,!=)这些计数为2个令牌。 算术(+,-,*,/) 逻辑运算符(!非,&&和,|| 或) 位运算符(~未,&和,|或,^异或,<<,>>,>>>算术和逻辑左和右移位) 常数。0个代币 变量分配。0个代币 输入3个变量为a,b和c。输出最大数量。 适用标准原子代码高尔夫球规则。如有任何疑问,请在评论中保留。带有特殊规则的上述任何一项都是令牌。

10
写一个单词方程解算器
这个问题已经在这里有了答案: 利用“自由空白” (10个答案) 2个月前关闭。 介绍 考虑以下示例: CODE + GOLF —————— GREAT 这是一个等式,其中每个字母代表一个十进制数字,而单词代表自然数(相似的字母代表相似的数字,不同的字母代表不同的数字)。任务是将每个字母与其数字值进行匹配,以使方程式正确。上式的一种解决方案是: 9265 + 1278 —————— 10543 你的任务 您的任务是编写一个程序或函数来解决上述等式。 输入值 输入是以下格式的字符串: [A-Z]+\+[A-Z]+=[A-Z]+ 例: CODE+GOLF=GREAT AA+BB=CC 省略空格,仅使用大写字母A和Z之间的字母(不使用特殊字母或小写字母)。 可以从标准输入,文件或功能参数中读取此字符串。 输出量 您有以下两个输出格式选项: 原始方程式已替换数字 字母列表及其值 如果有多个解决方案,则应返回其中的任何一个(但只有一个)。如果没有解决方案,则程序应返回一个空字符串或null。输出可以作为字符串返回,可以写入标准输出或文件。 例: 9265+1278=10543 A=1 B=2 C=3 (您可以使用任何定界符) 规则 为了简化起见,数字以0开头是可接受的,但是您可以将数字以0开头作为无效解决方案,这取决于您 相似的字母代表相似的数字,不同的字母代表不同的数字 您可以使用任何语言和所选语言的标准库(无外部库) 您无法连接到Internet上的任何资源(为什么仍要这么做?) 这是一项代码高尔夫任务,最短的代码获胜。连续的空白字符算作单个字符。(因此,用空格编写的任何程序都会自动获胜) 我有一个使用179个字符的解决方案。如果不清楚,请在评论中问我。

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.