编程拼图和代码高尔夫

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

3
创建旋转的奎因
通过将字符串分成两部分并颠倒其顺序来进行字符串"world! Hello,"的旋转,例如的旋转"Hello, world!"。可以创建可以旋转以形成其他但仍然有效的程序的程序。考虑一下python中的这个示例: print ")import sys; sys.stdout.write(" 可以旋转形成 import sys; sys.stdout.write("print ") 这本身就是有效的python程序。 您面临的挑战是编写一个输出自身旋转的程序,该程序在运行时将输出原始程序。奖励指向周期长度大于2的任何条目! 这是代码高尔夫,准确的得分将是:(代码长度)/(循环长度-1)。 编辑:我们有一个赢家(除非其他人能打出4分)!我仍然非常有兴趣看到其他解决方案,无论它们是否在竞争。

17
m3ph1st0s的编程难题1(C ++)[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 这是为您准备的一系列C ++难题中的第一个。希望你会喜欢。 因此,难题1: 给定以下程序: #include <iostream> int main() { const int a=1; const int b=2; const float c=0.5; std::cout << a/b-a*c; } 在程序内任何位置的新行上插入一些代码,以便输出为0。新行将包含AT MOST 18个字符(包括空格),其余行将保持不变。要清楚,这是有效的新代码的示例: #include <iostream> int main() { const int a=1; const int b=2; int* p = NULL; const float …

7
编写代码高尔夫球手[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 您的工作(如果您选择不拒绝它)是编写一个程序,该程序将使用您选择的语言“击打”一段给定的代码。 基本功能: 删除多余的空格 删除评论 “高级”功能: 合并声明(int x; int y; int z;至int x, y, z;) 使用基本控制结构的较短变体(while(1)替换为for(;;)) 移动码左右(i = 0; while(i < 10) { /* ... */ ++i; }到for(i = 0; i < 10; ++i) { /* ... */ }) 等等

11
模拟Minsky套准机(I)
形式主义有很多,因此尽管您可能会发现其他有用的资料,但我希望对此加以足够明确的说明,以免不必要。 RM由有限状态机和有限数量的命名寄存器组成,每个命名寄存器都包含一个非负整数。为了便于文本输入,此任务要求还命名状态。 状态分为三种:增量和减量,它们都引用一个特定的寄存器。然后终止 递增状态递增其寄存器并将控制权传递给其后继者。递减状态有两个后继者:如果其寄存器为非零,则递减状态并将控制权传递给第一个后继者;否则(即寄存器为零),它将控制权简单地传递给第二个后继者。 对于“ niceness”作为一种编程语言,终止状态需要打印一个硬编码的字符串(因此您可以指示异常终止)。 输入来自标准输入。输入格式包括每个状态一行,然后是初始寄存器内容。第一行是初始状态。状态行的BNF为: line ::= inc_line | dec_line inc_line ::= label ' : ' reg_name ' + ' state_name dec_line ::= label ' : ' reg_name ' - ' state_name ' ' state_name state_name ::= label | '"' message '"' label ::= identifier reg_name ::= identifier …

30
打印圣诞树
挑战 使用最短的代码在顶部打印自己的星星的漂亮圣诞树。树星是一个星号(*),树体是由树制成的0。树必须高10行。每行应适当缩进,以使上一行在下一行居中。任何给定的行都必须比前一行多2个0,除了第一个是星星,第二个只有一个0。结果是这样的: * 0 000 00000 0000000 000000000 00000000000 0000000000000 000000000000000 00000000000000000 无需更改软件即可更改高度的高度树的并列中断(更改高度参数除外) 请也粘贴代码的结果树! 排行榜 显示代码段 var QUESTION_ID=4114,OVERRIDE_USER=73772;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i; body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" …

19
我的话可以打败你的话
问题 给出两个词,在数字根战中找到获胜者。 通过以下方式定义单词的数字词根: 字母表中的每个字母都有一个数字: A = 1,B = 2,C = 3,...,Z = 26 将每个字母的值相加,得出单词的总数。以“ CAT”为例。C + A + T = 3 + 1 + 20 = 24 将构成结果的所有单个数字相加:24 => 2 + 4 = 6 重复步骤3,直到达到一位数字。那个数字是单词的数字根。 规则: 如果胜出者的数字根数大于另一个,则宣布获胜者。 如果数字根值相等,则通过从两个单词中删除每个最高值字母的实例并重新计算来缩短单词。 重复步骤1和2,直到有赢家或其中一个单词仅剩一个字母(或没有字母)为止。 如果经过缩短过程后数字根值相等,则将较长的单词声明为获胜者。 如果单词的长度相等,并且经过缩短处理后未找到获胜者,则不会声明获胜者。 特殊规则: 在计算数字根本身时,不允许使用模数。它可以在其他任何地方使用。 假设单词将仅由大写字母组成-没有标点符号,没有空格等。 输入 通过stdin(逗号分隔)将单词拉入。方法参数,或者您想要的。在解决方案或代码中明确说明如何解析或准备单词。 输出值 显示获胜词。如果没有获胜者,则显示“ STALEMATE”。 例子: …

17
无限多个素数
自从欧几里得以来,我们知道有无限多个素数。这个论点是矛盾的:如果只有有限个,假设p1个,p2,。。。,pñp1,p2,...,pnp_1,p_2,...,p_n,那么肯定m := p1个⋅ p2⋅ 。。。⋅ pñ+ 1m:=p1⋅p2⋅...⋅pn+1m:=p_1\cdot p_2\cdot...\cdot p_n+1是不是由这些素数整除,所以它的因式分解必须产生新总理,这不是在列表中。因此,仅存在有限素数的假设是错误的。 现在,假设222是唯一的质数。从上面的方法可以得出2 + 1 = 32+1=32+1=3作为新的(可能的)素数。应用该方法再次产生2 ⋅ 3 + 1 = 72⋅3+1=72\cdot 3+1=7,然后2 ⋅ 3 ⋅ 7 + 1 = 432⋅3⋅7+1=432\cdot 3\cdot 7+1=43,那么2 ⋅ 3 ⋅ 7 ⋅ 43 + 1 = 13 ⋅ 1392⋅3⋅7⋅43+1=13⋅1392\cdot 3\cdot 7\cdot 43+1=13\cdot 139,所以无论131313和139139139是新的素数,等等。在我们得到一个复合数的情况下,我们只取最少的新素数。结果为A000945。 挑战 给定一个质数p1个p1p_1和一个整数ñnn计算定义的序列的第ñnn个项pñpnp_n,如下所示: pñ:=分钟(素数(p1个⋅ …

2
神经网络可以识别素数吗?
背景 识别素数似乎不适合(人工)神经网络。但是,通用逼近定理指出,神经网络可以逼近任何连续函数,因此特别应该可以表示一个人想要的任何有限支持的函数。因此,让我们尝试识别前百万个数字中的所有质数。 更准确地说,因为这是一个编程网站,所以我们将其设为2 ^ 20 = 1,048,576。低于此阈值的质数为82,025或大约8%。 挑战 您能找到将神经网络正确分类为素数或不素数的20个整数吗? 出于此挑战的目的,神经网络的大小是表示它所需的权重和偏差的总数。 细节 目标是最小化单个显式神经网络的大小。 您网络的输入将是一个长度为20的矢量,其中包含整数的各个位,分别用0和1或-1和1表示。这些的顺序可以是最高有效位在前或最低有效位在前。 网络的输出应为单个数字,以便在某个截止值以上将输入识别为质数,而在同一截止值以下则将输入视为非质数。例如,正数可能表示素数(负数不是素数),或者大于0.5可能意味着素数(小于0.5则不是素数)。 在所有2 ^ 20 = 1,048,576个可能的输入上,网络必须是100%准确的。如上所述,请注意,此范围内有82,025个素数。(因此,始终输出“非素数”的精度为92%。) 用标准的神经网络术语来说,这可能称为过拟合。换句话说,您的目标是完美拟合素数。可能使用的其他词语是“训练集”和“测试集”相同。 该挑战不考虑“可训练”或“可学习”参数的数量。确实,您的网络可能包含硬编码的权重,下面的示例完全是硬编码的。取而代之的是,所有的重量和偏见是考虑的参数和计数。 训练或生成您的神经网络所需的代码长度与您的分数无关,但是发布相关代码当然值得赞赏。 基准线 作为基准,可以“记住”所有82,025个素数,总重量和偏差为1,804,551。 请注意,下面的代码包含许多内容:工作示例,工作测试代码,使用已知神经网络库的神经网络的有效定义,“硬编码”(或至少不是“训练有素”)神经网络,和分数的有效衡量。 import numpy as np bits = 20 from keras.models import Sequential from keras.layers import Dense from sympy import isprime # Hardcode some weights weights = …

15
切换一些位并得到一个正方形
给定一个整数,您必须找到将N反转为平方数所需的最小位数。只允许将最高有效位以下的位取反。N&gt;3N&gt;3N>3NNN 例子 已经是一个平方数( 2 2),因此预期输出为 0。N=4N=4N=422222^2000 可通过将1位取反来变成一个平方数: 11000 → 1100 1( 25 = 5 2),因此预期输出为 1。N=24N=24N=2411000→1100111000→1100111000 \rightarrow 1100\color{red}125=5225=5225=5^2111 通过反转的单个位不能被转变成平方数(可能的结果是 23, 20, 18和 30),但它可以通过反转2位来实现: 10110 → 10 0 0 0( 16 = 4 2) ,因此预期输出为 2。N=22N=22N=2223232320202018181830303010110→1000010110→1000010110 \rightarrow 10\color{red}0\color{red}0016=4216=4216=4^2222 规则 如果您的代码太慢或在较大的测试用例中引发错误,也可以,但是它应该至少在不到1分钟的时间内支持。3&lt;N&lt;100003&lt;N&lt;100003 < N < 10000 这是代码高尔夫球! 测试用例 Input | Output ----------+-------- 4 …

10
404-找不到唯一的404页面
受到Stack Overflow 404页面上的多语言 启发: 目标 您的目标很简单,就是创建一个输出数404的多语种,然后以尽可能多的语言终止。 限制条件 这是一个转折,有一个限制使其变得更难: 您必须编写N个程序并按特定顺序选择N种语言。在我个节目需要打印404在第一个我的语言,但没有任何语言后我个。这是为了防止非常简单的解决方案破坏竞争 得分: 确定获奖者的第一个标准是主程序运行所使用的语言数量。 第二个标准是字节数,其中使用更多语言的程序对此标准更重要。 第三个也是最后一个标准是提交时间 说明: 程序的源代码不需要任何关系。它们作为单独的程序运行。任何程序都可以输出尾随和/或前导空格。程序不必彼此继承! 感谢@MartinEnder提供更好的解释!

6
完全对齐并连字符
Given a width and a block of text containing possible hyphen- ation points, format it fully- justified (in monospace). 有充分理由意味着它是在左对齐和右,和通过增加字间距直到每一行配合来实现的。 有关: 通过添加空格来对齐文本 将文本对齐块 从某种意义上说,这可以被认为是“ 文本处理#1:断字”(似乎从未发布过)的下一步。 输入项 您可以采用任何喜欢的格式输入。您将获得: 目标宽度(以字符为单位),范围为5-100(含); 包含可能带有连字符的单词的文本块。这可以是用空格分隔的字符串,单词数组或单词片段数组的数组(或所需的任何其他数据表示形式)。 典型的输入可能是: Width: 25 Text: There's no bu-si-ne-ss lik-e s-h-o-w busine-ss, n-o bus-iness I know. 连字符表示可能的连字符点,空格表示单词边界。文本的可能替代表示形式: [["There's"], ["no"], ["bu", "si", "ne", "ss"], …


5
国王可以抓卒吗?
给定输入四个整数x 1,y 1, x 2和y 2,输出是否象棋中的白国王(坐标为(x 1, y 1))可以捕获黑棋子(坐标为(x 2, y)2))并捕获,如果典当正在移动以尽快提升为女王。 单板的坐标如下: first coordinate (x) 12345678 1 .#.#.#.# 2 #.#.#.#. 3 .#.#.#.# second 4 #.#.#.#. coordinate 5 .#.#.#.# (y) 6 #.#.#.#. 7 .#.#.#.# 8 #.#.#.#. 假设移动是白色的(国王的回合),并且两个玩家都发挥了最佳状态(国王将尽可能快地移动以抓住棋子,并且棋子将尽可能快地移动以提升)。输入坐标将始终是不同的,并且棋子将永远不会以y坐标8开头。 国王每转一圈可向任何方向移动一个正方形(它可以对角移动),并且棋子只能向前移动一个空间(减小其y坐标),除非它处于其初始位置(使用我们的坐标系y坐标) 7),在这种情况下,它可以向前移动两个空间。 输入可以以空格/逗号分隔的字符串,字符串/整数的数组或四个函数/命令行/ etc参数的形式给出。可以按照最方便/最容易使用的顺序给出坐标(因此,只要一致,就可以接受[y 2,y 1,x 1,y 1,y 2 ]作为输入)。输出必须是真实值或虚假值。 由于这是code-golf,因此以字节为单位的最短代码为准。 真实的测试案例: 5 3 …
26 code-golf  chess 

10
链接程序
挑战 在这个挑战中,您将编写无限个程序序列的第一个程序p 1,其中运行p n输出/生成程序p n + 1。当连接前n&gt; = 2个程序时,该序列应输出n。 例 假设前四个程序是: p1 p2 p3 p4 如果要运行p1,它应该输出: p2 如果要运行p1p2,它应该输出: 2 如果我要运行p1p2p3p4它,应输出: 4 如果要运行p4,它将按顺序生成下一个程序: p5 计分 您的分数是第一个10程序的字节数。

7
写一个0815口译员
我喜欢0815的概念,但是创建者网站上的解释器返回错误404。因此,我决定要求大家提供帮助! 基础 0815基于三(3)个寄存器和一个队列。这些寄存器分别命名为X,Y和Z,其中X为只读,Z为只读,Y为无法直接访问的“辅助”寄存器。所有寄存器开始时都设置为0。所有数字均为十六进制。 使用说明 注:某些指令需要被格式化参数等}:hello:,其中:hello:是参数。其他说明:有些指令说明不清楚,因此我对它们有所保留。(这里的原始说明) ~ 表示该参数是必需的 ----------|---|-------------------------------------------- ~Move | &lt; | &lt;:8: will write 8 to X (parameter required) ----------|---|-------------------------------------------- Swap | x | Swap X and Y ----------|---|-------------------------------------------- ~Label | } | }:hello: makes a label called 'hello' ----------|---|-------------------------------------------- Input | | | Set X to an integer …

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.