编程拼图和代码高尔夫

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

1
编写应急脚本,以从不受信任的本地用户远程保护Mac Pro。
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 情况 假设我允许我的工作站上的“ Shady Sam”管理员访问权限通过为他们提供一个临时的root登录密码来为我在Mac Pro上执行一项重要的管理任务。(假设他们是值得信赖的,也许是我公司的系统管理员。) 在远程位置(例如家庭),我使用MacBook Pro笔记本电脑观察Sam的活动,并学习如何通过远程桌面(VNC)自己完成任务。 在没有警告的情况下,谢迪·萨姆(Shady Sam)怯da地做着什么!也许我看到他试图从硬盘驱动器中删除数据或撬入受限制的文件夹等。无论多么卑鄙的行为,我都想立即将Shady Sam锁定,并尽可能从远程位置保护计算机。 由于我们共享鼠标和键盘,因此我无法在远程桌面内部可靠地执行操作(此外,它们可以关闭连接)。我必须编写一个脚本并远程运行它。 挑战 什么是最好的脚本(例如panicScript.sh或panicScript.py),我可以远程运行以阻止Shady Sam执行其卑鄙的行为并阻止他再次尝试? 我设想自己可以通过以下方式运行它: scp panicScript.sh remoteMachine:~/panicScript.sh ssh remoteMachine . ~/panicScript.sh 可能的功能: 明确鼓励其他想法! 更改remoteMachine上任何/所有帐户的密码 禁用键盘或鼠标 禁用显示器 重新启动机器 假设条件 Shady Sam不会以任何方式损坏Mac Pro或删除其任何组件(例如,物理上删除硬盘驱动器或有线网络连接),但他将尝试重新登录并尽快执行其卑鄙行为。Sam具有(否则)对计算机的无限制物理访问权限和root登录密码。 假设Mac Pro具有显示器,键盘,鼠标,外部硬盘驱动器和用于互联网的以太网连接。假设它可以在公共区域中打印到网络打印机。为了好玩,让我们假设我在几个同事的工作站上有一个标准用户帐户,该帐户与我的相同(因此我可以通过来连接到他们的机器ssh)。 假设有十几个露天小卧室聚集在一起,以便同事可以站起来互相交谈。但是,我的同事们通常不会怀疑Shady Sam如果在我的计算机上看到他时会做出卑鄙的举动,因为他过去曾帮助过其中的几个人,并且没有对他们的计算机做过卑鄙的事情。 约束条件 最初,恐慌脚本位于我的笔记本电脑上。您可以将scp其安装到我的机器上并在那里运行,也可以直接从家里的笔记本电脑运行它。(请在您的回复中指定!) 脚本执行的所有操作都必须在远程位置无损坏和/或可逆,以便以后可以从远程位置重新获得访问权限,并且必须是Mac Pro上的标准功能/命令。 该脚本可以调用其他脚本/程序,只要它们是计算机的标准配置即可。命令行脚本工具(例如awk)可以,只要它们的命令包含在主脚本中(例如history | …

3
前面的路涂
给定两个参数车道模式和道路长度,打印用于道路和交通服务的车道标记的ASCII表示形式以绘制道路。 输入/输出示例 输入: BTHMLRPHU,21 我不在乎您是否使用两个参数或将数字连接到字符串的末尾,这是明确的。 输入可能来自STDIN,作为函数参数,环境变量,无论您使用哪种语言都可以。 输出: ! | x ## | | x x ! ! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x ! ! B | \/ x HOV3 ## | | | | ^^ x HOV3 x ! ! | …

1
无损英语文本压缩挑战[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 4年前关闭。 挑战: 您面临的挑战(您应该选择接受它)是压缩和解压缩5MB的“ 威廉·莎士比亚全集 ”,如下所示:http : //www.gutenberg.org/cache/epub/100/pg100.txt (MD5: a810f89e9f8e213aebd06b9f8c5157d8) 规则: 您必须STDIN通过STDOUT... 输入和通过... 输出 ...并且您必须为输入提供相同的解压缩结果。 (也就是说,您必须能够获得cat inpt.txt | ./cmprss | ./dcmpress | md5和上面相同的 MD5。) (任何via STDERR都将被丢弃。) 您的总源代码必须使用少于2048个字符。 (这是不是代码高尔夫球场。你是不是是基于源代码的长度进球了。这是只是一个让事情变得有限规则。) (如果已拆分,请采用所有源代码的串联长度。) 您还必须能够(理论上)处理类似的纯文本输入。 (例如,硬编码仅能输出所提供的莎士比亚输入的机制是不可接受的。) (其他文档的压缩大小无关紧要,只要解压缩的结果与替代输入相同即可。) 您可以使用任何一种或多种语言。 (例如,随时使用进行压缩awk和进行解压缩java) 您可以编写两个单独的程序,也可以根据需要将它们与某种形式的“开关”组合在一起。 (必须清楚演示如何调用压缩和解压缩模式) 您不得使用任何外部命令(例如,通过exec())。 (如果您使用的是外壳语言,对不起。您必须使用内置的语言。欢迎您发布“不可接受的”答案,以便分享和享受,但不会被评判! ) 您不得使用任何内置功能或库提供的功能,这些功能的目的是压缩数据(例如gz,等) (在这种情况下,更改编码不视为压缩。在这里可以酌情采取一些措施。请在提交中随意争论您的解决方案的可接受性。) 如果选择参加,请尝试玩乐! 所有好的比赛都有获胜的客观定义;因此 如果遵守所有规则,则最小的压缩输出(以STDOUT字节为单位)将获胜。 (请通过报告您的输出./cmprss | wc -c) 在平局的情况下(相同的输出大小),大多数社区会投票赞成获胜。 …

14
复合数字序列
复合数字序列 灵感来自这个问题 给定正整数n,您的代码必须输出前n个复合数字。 输入输出 您可以编写程序或函数。输入通过STDIN或函数自变量,输出到STDOUT或函数返回值。 输出可以是列表,数组或字符串。 例子 0 -> 1 -> 4 2 -> 4, 6 3 -> 4, 6, 8 13 -> 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22 规则 与往常一样,不允许出现标准漏洞。 不允许生成素数或合成数的内置函数。 不允许与质数或合成数相关的内建函数。

1
高尔夫大战第一集:幻影光剑
背景主题 介绍 Obi-Wan Kenobi,Qui-Gon Jinn和Darth Maul将要战斗!但是,他们都忘了带各自的光剑。编写一个程序或函数,在给定字符串Jedi作为输入的情况下,生成类似于此*的图像: 并给定字符串Sith,生成类似于此的图像: 图像规格 3个光剑(白色刀片的一端包括圆形边缘(红色表示两个圆形边缘),包括手柄)均为900px长(不包括刀片周围的颜色渐变)。 刀片末端的圆形边缘是一个半圆(显然是它的离散近似值),其直径等于刀片的宽度。 刀片(即光剑的白色部分)宽12像素。 绿色和蓝色光剑之间的距离为200像素(从绿色刀片的中心线到蓝色刀片的中心线)。 所有3个光剑的手柄均为180像素(占总长度的1/5)。因此,包括圆边的刀片本身对于蓝色和绿色光剑为720px长,对于红色光剑的两个刀片为360px长。 蓝色和绿色光剑的手柄在光剑的底部。红色光剑的手柄水平居中。 从白色刀片的边缘到完全白色的渐变长度为1.5 *刀片的宽度(例如,线性部分为18px)。 绿色渐变从RGB(0,255,0)变为白色(255,255,255)(或透明的,如果您更容易实现)。红色渐变从(255,0,0)变为白色,蓝色渐变从(0,0,255)变为白色。 手柄的颜色为RGB(128,128,128)。 光剑周围可能有白色的空白空间。 输入项 无论是Sith或Jedi作为一个字符串。您可以从STDIN中获取此字符串,作为函数参数,命令行参数或任何类似参数。您可能会假设输入将始终是完全相同Sith或Jedi没有其他内容。 输出量 您必须生成一个图像文件,其中包含与输入字符串相对应的图像。您可以相对自由地选择所需的任何图像格式,只要它是真彩色图像即可。 计分 这是代码高尔夫球,因此最短的答案以字节为单位。愿原力与你同在。 *这篇文章中的图片未显示完整尺寸。

2
隐身踢球者//
隐身踢 加密文本的一种常见但不安全的方法是置换字母。换句话说,字母表中的每个字母在文本中始终被其他字母替换。为确保加密是可逆的,同一字母不会替换任何两个字母。您的任务是解密几行编码的文本,假设每一行使用不同的替换集,并且解密的文本中的所有单词均来自已知单词的词典。 输入值 输入由小写字母组成,按字母顺序。这些单词构成了可能出现在解密文本中的单词词典。在字典之后是几行输入。每行如上所述进行加密。 词典中的单词数不超过1,000。没有一个单词超过16个字母。加密的行仅包含小写字母和空格,并且长度不超过80个字符。 输出量 解密每一行并将其打印到标准输出。如果有多种解决方案,那么任何一种都可以。如果没有解决方案,请用星号替换字母表中的每个字母。 样本输入 and dick jane puff spot yertle bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn xxxx yyy zzzz www yyyy aaa bbbb ccc dddddd 样本输出 dick and jane and puff and spot and yertle **** *** **** *** **** *** **** *** …

8
条码高尔夫:生成号码的UPC
如今,几乎每家商店都使用通用产品代码(UPC)条形码来简化结帐流程。如果这个名称对您没有任何意义,那么您肯定会知道它们的外观: 格式 最常见的系统是UPC-A,它使用12位数字表示每个特定产品。每个数字被编码为一系列黑白条纹,以使机器可以读取代码,长度为7位。总共有11位的模式值指示条形码的开始,中间和结尾。条形码的总长度为12×7 + 11 = 95位。(从现在开始,当使用二进制表示每个位的颜色时,它0是白色和1黑色。) 开头和结尾都有的模式101。然后将这些数字分为2组,每组6个,并按如下所示进行编码,并01010在左右各组之间进行编码。下表列出了每个数字的模式。请注意,根据数字是在右侧还是在左侧,图案会有所不同(这允许条形码上下颠倒扫描)。但是,右边的图案与左边的图案相反(白色交换为黑色,反之亦然)。 如果看不到上面的图像,则这是每个数字的二进制等效项。 # Left Right 0 0001101 1110010 1 0011001 1100110 2 0010011 1101100 3 0111101 1000010 4 0100011 1011100 5 0110001 1001110 6 0101111 1010000 7 0111011 1000100 8 0110111 1001000 9 0001011 1110100 例 假设您拥有UPC 022000 125033。(这些不是随机数。如果要弄清它们的含义,请留下评论。)从此样板开始,每个条形码中的样板都相同: 101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx01010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx101 对于数字,请用其侧面(左或右)的相应编码替换每个数字。如果您仍然感到困惑,请参见下图。 这是二进制的输出,其中|管道将零件分开。 101|0001101|0010011|0010011|0001101|0001101|0001101|01010|1100110|1101100|1001110|1110010|1000010|1000010|101 …

30
签署这个词!
什么是单词签名? 一个字的签名是它的所有的信件整理-的签名this,hist并且hits都hist。 挑战 编写程序时,程序应要求输入,然后打印出该单词的签名。因此,示例程序运行可能如下所示: Give me a string: this The signature signature of 'this' is hist. 不需要任何交互,只要它接受输入并打印签名,就可以。 计分 字节数最小的程序获胜! 排行榜 这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。 为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 显示代码段 var QUESTION_ID=54945;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var …

2
配对电容器
电容器因制造公差高而臭名昭著。在许多情况下这是可以接受的,但有时需要具有严格公差的容量。获得具有所需准确值的容量的常见策略是并联使用两个经过仔细测量的电容器,以使它们的容量总计达到所需范围。 在给定(一组)容量的情况下,此挑战的目标是将电容器配对,以使每对电容器的总容量在给定范围内。您还需要找到最佳的配对对,即配对对,以便找到尽可能多的配对。 约束条件 输入包括选择的格式 容量的无序列表,代表您拥有的(多个)电容器组 一对表示的下部和上部的能力结合的的目标范围(包括) 输入中的所有容量均为小于2 30的正整数,单位为pF(无关紧要)。 除了输入电容列表之外,您拥有的电容器组还包含无限数量的0 pF电容器。 输出以选择的格式包括容量对列表,以使每对容量之和在指定的目标范围内。既没有指定线对的顺序,也没有指定线对中的容量顺序。 输出中的任何电容出现的频率都不会比您拥有的一组电容器中出现的频率高。换句话说:输出的对不能重叠。 满足条件4和5的任何可能输出都不应该包含比程序产生的输出更多的容量对。 您的程序应在O(n!)时间终止,其中n是代表您拥有的电容器组的列表的长度 不得滥用漏洞 该目标范围,不得为空 计分 您的分数是解决方案的长度(以八位字节为单位)。如果您的解决方案设法在多项式时间O(n k)中解决了约k个问题,请将您的得分除以10。我不知道这是否实际上可行。 样品输入 范围100到100,输入数组100 100 100,有效输出: 0 100 0 100 0 100 范围100到120,输入数组20 80 100,有效输出: 0 100 20 80 输出20 100无效 范围90到100,输入数组50 20 40 90 80 30 60 70 40,有效输出: 0 90 20 …

2
抢劫
介绍 经过漫长的战斗,您在一场谜语竞赛中击败了狮身人面像。狮身人面像对您的技巧印象深刻,希望为您提供与您的机灵相称的奖励,并将一条神奇的羊皮纸条分成八个盒子,每个盒子中都包含一个数字,以实现它们的存在。 狮身人面像说:“减少羊皮纸,使盒子重叠,这些盒子将通过加法或乘法合并。当剩下一个盒子时,它的价值将是用金币作为奖励。” 任务 您必须编写一个程序或函数,该程序或函数将一个列表/数组/八个自然数作为输入,并返回/打印通过一系列“折痕”操作可获得的最大奖励。 机械学 “折痕”操作是在某些单元格上执行的,操作者为+或*作为操作者。使用运算符将​​列表的前n个单元格折叠起来并与其目标单元格合并。合并操作中未消耗的任何单元均保持不变。 这是使用n = 3个单元格进行折痕的示例: 使用任何一种加法,将导致以下结果: 或乘法,将导致以下结果: 注意:为简单起见,不允许使用少于1个单元格的折痕,也不允许具有大于或等于列表长度的单元格的折痕。但是,列表的单元格数量可以增加一半以上。 可以将8个单元格的列表加5,从而产生一个新的长度为5的列表: [0,1,2,3,4,5,6,7]使用+操作员会给5个单元格增加一个[9,9,9,1,0]。 计分 标准代码高尔夫规则-产生正确输出且获胜字节数最少的代码。 奖励:如果您的代码还返回/打印了导致最大奖励的折痕操作序列,请将分数乘以0.8。输出示例如下: crease 5 + crease 2 * crease 2 + crease 1 * 例子 使用以下输入和结果测试您的代码,格式为input - maximum reward: [0, 1, 2, 3, 4, 5, 6, 7] - 7560 [0, 9, 0, 3, 2, …

1
有效迷宫数
给定一个WxH网格,有多少种可能的迷宫? 您对迷宫的了解: 网格正好是H正方形,W正方形是正方形。 共有三种类型的正方形:“开始”,“完成”和“空”。迷宫必须正好包含1个开始点和1个结束点,所有剩余的方块均为空。 整个迷宫周围都有墙壁。 除非违反以下规则,否则墙可以存在于任意两个正方形之间的边缘上: 从开始方块到完成方块必须存在一条路径。 因此,给定两个数字W和H,您必须返回一个数字,代表可能的正方形/墙壁配置的数目。您保证W*H > 1 例如,2x2迷宫具有完全100不同的可能配置。 这是一个代码高尔夫球,所以最短的答案是成功的!

5
在数字键盘附近生成概率
受到今天早些时候提出的这个问题的启发,我希望看到各种编程语言将小键盘变成概率的有趣方式。通常,基于图块的游戏将允许您使用数字键盘根据角色当前所在的位置向任何方向移动。当为这些游戏制作AI时,Math.random() * 8还远远不够,所以我必须要有一点创造力,使机芯的外观和感觉更加自然。 小键盘的定义如下: 7 | 8 | 9 - - - - - 4 | x | 6 - - - - - 1 | 2 | 3 请注意,5是无效数字,因为您无法继续前进。 所有示例将使用以下概率: [50, 40, 30, 20, 10] 如果我想在周围生成概率8,则看起来像这样: 40 | 50 | 40 -- | -- | -- 30 | xx …
12 code-golf 

1
检查单身麻将的手牌值
麻将是一款在亚洲非常受欢迎的瓷砖游戏。它通常由四个玩家玩,并且游戏的目标是成为第一个使用磁砖完成有效手牌的人。在麻将中,有三副牌服和荣誉牌-对于这一挑战,我们将仅考虑使用来自单个牌服的牌形成的手。 磁贴从编号1到9,每个磁贴正好有四个副本。有效手牌由四组组成,每组三组,每组一对,共14张。 三个一组可以是: 一个三元组,三个相同的图块(例如444),或 三个连续图块的序列(例如123,678但不是357)。序列不换行(因此912无效)。 一对只是两个相同的图块(例如55)。 挑战 给定有效手牌数为14张,请根据以下条件确定其得分: Condition Description Point/s ------------------------------------------------------------------------------- Straight Contains the sequences 123 456 789 1 Identical sequences Contains two identical sequences 1 All simples Only 2-8, no 1s or 9s 1 All sequences All sets of three are sequences 1 All triplets All sets of …
12 code-golf  game 

3
检查是否有同构子串
这个问题是“ 检查单词是否同构”的扩展, 并将其第一部分复制以给出同构的定义。 两个词是同构,如果他们有字母重复相同的模式。例如,两个ESTATE和DUELED都有模式abcdca ESTATE DUELED abcdca 因为字母1和6相同,所以字母3和5相同,仅此而已。这也意味着单词由替换密码(此处与match)相关E <-> D, S <-> U, T <-> E, A <-> L。 给定两个字符串X和Y,且X的长度不超过Y,任务是确定是否存在Y的子字符串,该子字符串与X同构。 输入: a..zA..Z的两个非空字母字符串,每行一个字符串。这将来自标准输入。 输出第二个字符串的子字符串,如果存在则与第一个字符串同形。否则输出“否!”。 规则您的代码必须在输入的总长度内线性运行。 分数分数是代码中的字节数。最少的字节数获胜。 输入和输出示例 adca ddaddabdaabbcc dabd 小费 对于这个问题,至少有一个不是那么复杂,实际上是快速且线性的时间解决方案。
12 code-golf 

5
风险,战争之道
介绍 在此游戏中,玩家使用自己的军队与其他玩家的军队作战,占领领土并成为最后一个站立的人。每回合,玩家都会得到基本数量的军队供其使用。但是,通过占领某些地区的领土,玩家可以增加此数目,从而在游戏后期拥有潜在的优势。(这与Warlight基本相同)。 所有机器人均应使用Java,C或C ++编写(我可能会包括其他语言,但没有相应的软件或经验)。您的提交没有必要扩展一个类,您可以创建函数,类,接口或其他任何必要的东西,并使用标准 API中的任何包或类。如果您打算创建一个类或接口,请考虑使用一个内部类或内部接口。 请不要尝试以编程方式更改竞赛中的控制器或其他提交的内容。 游戏玩法 总览 一个10x10的二维数组将模​​拟该板,每个元素/单元代表一个“区域”。将进行20轮,每轮最多1000圈。每回合,玩家将首先将他们拥有的军队部署到自己拥有的任何领土,然后有机会将其军队运送到附近的领土,以试图通过攻击对手的领土来占领对手的领土。玩家必须部署所有军队,但是如果需要,他们不必移动军队。 进攻/转移军队 如果玩家愿意,他/她可以从一个地区向八个相邻地区中的任何一个派遣军队。棋盘“环绕”,即,如果玩家的领土在一侧,则可以将其周围的军队转移到另一侧的相邻领土。从某一领土调动军队时,该领土上至少还应剩下一支军队。例如,如果一个领土包含五支军队,那么转移到不同领土的人数不得超过四支。如果一个领土包含一个领土,那支军队就无法行动。 如果玩家将n军队从一个领土派遣到他们拥有的另一领土,则该领土将获得n军队。 假设玩家将n军队从他/她的领地发送到其中有o军队的对立领地。o将n * .6舍入到最接近的整数;但是,与此同时,n将o * .7四舍五入为最接近的整数。以下规则将适用于是否占领了对方领土: 如果o达到零n且大于0,则玩家将接管领土,n军队。 如果同时n和o变为零,o将自动设置为1和领土不会被捕获。 如果o仍然大于0,则玩家所在区域的军队数量将增加,n并且对等区域将不会被占领。 奖金 将选择一组地区代表奖金;如果一个玩家拥有该组中所有领土,则该玩家每回合将获得额外的军队。 奖金的ID号代表不同的ID,值代表玩家可以接收的额外军队数量。每回合,奖励的值将是5到10之间的一个随机数(含5和10),并且现场将提供十个奖励,每个奖励都包含十个地区。 例如,如果一个玩家每回合会获得5个军队的所有领土都拥有价值8的加成,则该玩家将在下一回合及随后的回合中获得13个军队。但是,如果玩家失去组成奖励的一个或多个地区,则他/她每回合只会收到5个军队。 输入输出 您的程序应通过命令行参数进行输入,其格式如下: [id] [armies] [territories (yours and all adjacent ones)] [bonuses] ["X" (if first turn)] id并且armies都是整数。id是您的ID,armies是您需要部署到您的地区的军队数量。您必须部署分配给您的所有军队-不多也不少。 territories是一系列字符串,代表您所拥有的领土和与您不相邻的领土。字符串采用以下格式: [row],[col],[bonus id],[player id],[armies] row并col指出该领土所在的董事会的行和列,是该领土bonus id所属的奖励player id的ID ,是拥有该领土的玩家的ID,并且armies是该领土内的军队数量。这些都是数字。 bonuses是代表您可以利用的董事会奖金的一系列字符串。字符串采用以下格式: [id],[armies],[territories …
12 king-of-the-hill  c  c++  java 

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.