Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

9
在Postscript中打高尔夫球的秘诀?
作为较不流行的语言之一,很难找到有关后记黑客技术前卫的文献。那么,这里的高尔夫球手有哪些发现可以利用堆栈模型(或其他功能)来克服Postscript固有的冗长性?
14 code-golf  tips 

2
畅玩Mu Torere游戏
背景 Mu Torere是一款游戏,是欧洲毛病爆发前新西兰毛利人玩过的仅有的两种游戏之一。这使其成为一个非常独特的游戏,因为它具有与现有大多数其他游戏不同的“客观获胜标准”和游戏规则。 游戏玩法: 木板是一个八边形。每个相邻顶点之间都有连接,并且有一个中心节点连接到所有顶点。在任何时间点,九个节点中的八个都被石头占据。刚开始时,有四个白色的石头和四个黑色的石头,它们分别占据八角形的一半,而中心节点为空。黑先。 玩家每回合可以将其石头之一沿16个边之一从一个节点移动到空节点。如果石头位于对手的石头旁边,则只能将石头从外部节点移动到中心节点。 玩家无法进行合法移动时会输,这是因为没有边缘将石头连接到空节点时发生。 这是一个解释规则(带有图表)并提供一些分析的网站。 挑战 您面临的挑战是编写最短的程序,以与人类对手玩一个完美的Mu Torere游戏。您的程序应该能够显示和更新游戏板,进行移动并接收来自人类对手的移动。最重要的是,它应该扮演一个完美的游戏。 完美的游戏? 是的,完美的游戏。我一直在进行一些游戏分析,发现如果双方完美玩法,游戏将持续无限长的时间。这意味着您的程序永远不会丢失。同样,只要人类对手犯下允许程序强制胜利的错误,您的程序就应该能够强制胜利。至于您的程序如何找到理想的动作,这取决于您。 细节 每次移动之后(以及游戏开始时),您的程序都应打印游戏板。但是,无论您选择显示板,它都必须显示所有节点并已完全连接(所有16条连接线均应绘制成无交叉线)。在开始时,木板应具有正确的开始位置。实现此目的的一种方法是将游戏板做成正方形。 w-w-w |\|/| b-o-w |/|\| b-b-b 这两种颜色是黑白或暗/浅。棋盘必须显示哪个节点被哪个玩家的棋子占据,例如用“ b”或“ w”标记它们,以及哪个节点是空的。鼓励(但不是必须)使游戏板更具图形效果,而不是纯文本格式。 您的游戏板应该具有一个编号系统,该编号系统为每个节点分配一个唯一的编号。您可以选择自己喜欢的方式给木板编号,但应在答案中或程序中说明。方板可以编号如下: 1-2-3 |\|/| 4-5-6 |/|\| 7-8-9 人是第一个移动的人。他的输入将是一个数字。这将是当前移动的石头所在节点的编号。如果我想将结石从节点4移动到空节点5,我将输入a 4。暗含5,因为它是唯一的空节点。 假设人类将始终采取法律行动。 在人类行动之后,应打印更新的木板。程序决定采取合法行动后,它应该打印另一个更新的标牌,然后等待人员输入其他行动。 程序一旦获胜,应终止。 笔记 应用标准的代码高尔夫规则,不访问外部文件等,等等。此外,我将为程序执行每个动作施加15秒的灵活时限(在合理的机器上)。如上所述,该游戏有可能形成无限循环,我不希望深度优先搜索进入无限循环。
14 code-golf  game 

5
最短的Hello World程序,无分号
我最近在SO上看到了一些问题,询问您是否可以在不使用C#的情况下使用半分号的情况下制作Hello World程序。面临的挑战是要再次执行此操作,但要用尽可能短的代码!
14 code-golf  c# 

8
代码高尔夫宾果游戏!
给你一个 宾果游戏板和一个通话清单。您必须打印宾果!一旦您的董事会赢得比赛。 宾果板看起来像这样: 它们的指定方式如下: 14 29 38 52 74 4 18 33 46 62 7 16 * 60 71 9 27 44 51 67 12 23 35 47 73 董事会之后将立即发出呼叫,如下所示: B7 I29 G60 G51 O71 I23 I16 N38 您必须将呼叫呼出到标准输出,直到赢得您的呼叫之后(获取满满的行,列或5长对角线),然后打印 BINGO!。 对于上面的示例,打印: B7 I29 G60 G51 O71 I23 I16 BINGO! 规则 …
14 code-golf 

17
测试给定数字是否为Keith数
由于斐波那契数字和序列似乎是打高尔夫球的热门话题,所以我认为用基思数字打高尔夫球可能是一个有趣的挑战。 因此,我提出了一个挑战,即创建一个函数,该函数需要一个整数,并根据数字是否为Keith数字来返回true或false。 有关基思数字的更多信息 在娱乐数学中,Keith数或repfigit数(重复的斐波那契数位的缩写)是以下整数序列中的数字:14、19、28、47、61、75、197、742、1104、1537、2208, 2580,… Numberphile的视频解释了如何计算Keith数。但基本上,您使用数字的位数。将它们加在一起,然后取原始数字的最后几位,并将它们加到计算总和中,然后冲洗并重复。并举例说明。 14 1 + 4 = 5 4 + 5 = 9 5 + 9 = 14 输入值 一个整数。 输出量 如果数字是基思数字,则为True。如果不是,则为假。
14 code-golf  math  number 

1
Code Golf:宇宙飞船的命运是什么?[ASCII艺术版本]
背景 在一个遥远的星系(可能还有一个宇宙)中……有一艘太空船和一堆行星。船上的故障导致飞船的燃料用完了。它现在正以危险的缓慢速度在附近的行星簇附近移动,必须从中逃脱!机组人员的命运是什么? 挑战 您是USS StackExchange的首席程序员。因此,您希望编写一个模拟器来揭示您是否注定要坠落到行星上,逃离行星系统或永远停留在轨道上。 但是,您的飞船爆炸了,这意味着计算资源非常有限。您的程序必须尽可能小。同样,这意味着输入要运行的仿真的唯一可能方法是通过ASCII艺术。 模拟 在多元宇宙的这一象限中,为了适应ASCII艺术,对物理定律做了些微改动。这意味着宇宙被分为细胞。运动将以单元为单位进行描述,时间将以时间步长为单位。 船本身有动力。如果船在上一个时间步中在x轴上移动了+2个像元,在y轴上移动了-1个像元(简称为(2,-1)),并且没有重力场,则该船将按照在下一个时间步中保持相同的速度。 将有几颗行星,所有这些行星都在紧邻其的八个单元上施加引力场,这将影响船的速度并将船拉近行星。正好位于行星的“北”,会导致以(-1,0)的力将飞船的一个单元向“南”拉。只是行星的“东北”,将导致以(-1,-1)的力将飞船一个单元拉向“南”,将一个单元拉向“西”。 重力场为船舶离开重力时的动量增加了一个矢量。如果一艘船以前移动了(2,-1)个像元,而现在处于(-1,1)的重力场中,那么在下一个步骤中,它将移动(1,0)个像元。如果船靠近多个行星,则将添加多个矢量。 输入值 在STDIN上,您将收到行星系统的ASCII艺术作品表示,它将显示行星的坐标和船的当前速度。将有多个@符号形式的行星,而将有一个以av ^ <>符号形式的宇宙飞船。选择船的符号表示船的当前速度(在添加重力之前)。例如,<表示一个单元向西的速度,而^表示一个单元向北的速度。所有空白区域都由句点组成,这些句点将每行填充为相同的宽度。空行代表输入的结尾。这是输入的示例: ................. ...@.@........v.. ......@..@..@@... ..@.............. .......@..@...... ................. 输出量 输出将是STDOUT上的一个字,它将告诉船是逃避重力,坠落到行星上还是永远绕轨道运行。 逃避重力的定义是船舶从地图上移开。如果船逃脱,那么您的程序必须打印单词“ escape”。 崩溃着陆是指船舶在某个时间步中直接越过行星或在同一单元中结束时。请注意,仅计算船舶每个时间段的位置是不够的。速度为(5,5)的船舶将撞向位于(1,1)的行星,即使直接计算将意味着它永远也不会访问该单元。但是,速度为(5,6)的飞船不会撞到地球上。如果您的飞船坠毁着陆,那么您的程序必须打印“ crash”一词。 轨道运动可能是最难检测到的。每当飞船以相同的速度两次访问相同的单元时,就会发生轨道运动。如果飞船绕行,则应打印单词“ orbit”。 这是以上示例的输出: escape 说明 这是一张地图,显示上例中太空船在每个时间步中的移动位置: ^ ................. ...@.@........v.. ....^.@..@..@@... ..@..<.<<<.<.v... .......@..@...... ................. 它向南走,向西走,沿着走廊走,向北走,然后由于重力而狭窄地逃到了高速行星之间。 更多案件要检查 ... ^@. ... orbit ........... .>@.@...... .@......@.. ....@...... …

5
模拟任何一维元胞自动机
挑战 您将要编写一个完整的程序,该程序使用来自STDIN的七个数字,并将元胞自动机(CA)的二维历史记录打印到STDOUT。这是代码高尔夫。 输入格式 输入将是七个整数/字符串,以逗号分隔。第一个数字是根据Wolfram代码的规则编号(每个规则的标准名称)。第二个是初始启动配置。第三个和第四个描述了什么模式以及应将多少模式附加到启动配置的左侧。作为填充。第五和第六在右侧也是如此。最后一个数字是运行模拟的世代数。 因此,输入示例为90,11,0,4,0,4,5。这应该告诉您的程序您正在运行规则90。它还应该告诉程序您希望初始配置是11在字符串的0两端都附加4次,因此实际的开始模式是0000110000。它还告诉您的程序将此模拟运行5代。 输出您的程序应该打印每一代的整个单元格数组(用换行符分隔),以便输出是CA的时空图。对于每一代,根据作为输入提供的规则,每个单元的状态由其状态和紧靠左侧和右侧的单元的状态确定。模拟应围绕边缘。首先打印的应该是gen的起始数组。0。 输入90,11,0,4,0,4,5应尽可能精确地产生以下输出。 0000110000 0001111000 0011001100 0111111110 1100000011 0110000110 请注意,起始状态不包括在五代中。还要注意,模拟环绕着边缘。 更多例子 输入: 184,1100,01,2,01,1,4 输出: 0101110001 1011101000 0111010100 0110101010 0101010101 输入: 0,1011,1,0,0,1,2 输出: 10110 00000 00000 有关一维CA如何工作以及如何编号的更多信息

4
Groovy打高尔夫球的秘诀
当我看到许多问题以他们感兴趣的语言询问打高尔夫球的技巧时,我决定询问我最喜欢的语言:Groovy。人们可以提供一些技巧和技巧,这些技巧和技巧将用于Groovy的高尔夫运动中。
14 code-golf  tips 

9
编写一个函数,返回给定动词的过去式
挑战 编写一个函数,该函数接受一个作为动词的自变量,并返回该动词的过去式。(假设动词是规则的) 过去式 注意:认为y既不是辅音也不是元音。 通常,仅ed在动词结尾之后加一个即可使动词的过去时。 例如:jump→ jumped,ask→asked 但是,还有其他规则。 如果给定动词的最后一个字符是e,只需加d。 例如:love→ loved,move→moved 如果动词以辅音+结尾y,则y改为i,并加ed。 例如:study→ studied,cry→cried 但是,如果动词以元音+结尾y,则只需添加即可ed。 例如:play→ played,stay→stayed 如果动词以元音和辅音结尾,则再写一次辅音,然后添加ed。 例如:stop→ stopped,plan→planned 但是,如果一个动词以多个元音+一个辅音或一个元音+多个辅音结尾,则只需添加即可ed。 例如:look→ looked,jump→jumped 还有更多规则,但让我们只关注规则。例如,根据上述规则,visit→ visitted。 优胜者 由于这是代码高尔夫球,因此正确返回过去时态的最短代码将获胜。 范例(JS,127) function f(x){return x.replace(/([^aeiouy])y$/,'$1i').replace(/([^aeiouy][aeiou])([^aeiouy])$/,'$1$2$2').replace(/e$/,'')+'ed'}
14 code-golf  string 

5
写你自己的死亡笔记
基拉需要您的帮助! 输入格式: Date [and/or Time] Name Gender Reason 输出格式: <Last Name, First Name> <will die/died> on the <DD><st/nd/rd/th> of <MMM, YYYY> [at <hh:mm:ss TT>]. <He/She> <will die/died> of <Reason>. 详细信息,详细信息: 您的程序应至少说明以下日期输入格式: 9 November 2003 9/11/2003 November 9, 2003 时间格式: hh tt hh TT hh:mm tt hh:mm TT hh:mm:ss tt hh:mm:ss …
14 code-golf 


5
文字迷宫求解器
给定stdin上的迷宫和入口点,编写一个程序,在stdout上打印到出口的路径。只要您的程序不会为每个迷宫生成平凡的路径(穿过迷宫中的每个点),任何路径都是可以接受的。 在输入中,墙壁用a标记,#入口点用a 标记@。您可以使用任何字符在输出中绘制迷宫和路径,只要它们完全不同即可。 您可以假设: 入口和出口点在输入的边缘 输入的每一行都具有相同的长度 迷宫可解且无循环 只有一个出口 最短的(Unicode)字符计数解决方案获胜。 例子 (请注意,输入用空格填充) #### # # @ ##### # # # ####### #### # # @*##### #* # #****** ####### ### ################### ### # # ## ######### # # # ##### # ############### #@## ###*################### ###*********#*********# ## *#########* # *# # *********** …

30
在不使用按位运算符的情况下,以二进制数打印1的数量
描述 给定一个数字,1以二进制表示形式打印它具有的s 数量。 输入值 >= 0以10为底的数字不会超过您的语言能够处理的最高数字。 输出量 1s 的数量(以二进制表示)。 获奖条件 最短的代码获胜。 不允许的 按位运算符。允许其他运算符,例如加法和乘法。 内置基本转换功能。 例子 Input: Ouput: 56432 8 Input: Output: 45781254 11 Input: Output: 0 0

10
子手文字游戏高尔夫
受reddit启发。 编写一个播放Hangman的程序。 程序从N个单词的列表中选择一个随机单词,其中N> 2。 单词列表可以通过您选择的任何方式提供给程序。 每次迭代 使用下划线将尚未发现的字母打印出游戏状态: H _ N _ _ _ N 打印剩余尝试次数 10 从stdin读取字母,并更新游戏状态,如果他们猜错字母,则减去尝试次数。 A (输入) H A N _ _ A N 10 重复直到猜出所有字母或尝试达到0 使用任何语言 最少的字符数获胜。 绘制绞刑架不是必需的,但是会赢得赞誉和赞誉。

10
指数的最后一位
在此任务中,您将获得A(少于10000位数字)和B(少于2 ^ 64),并且需要计算(A·A·A·...·A(B次))。 输入A和B在一行中以空格隔开;输入由EOF终止。 输入值 34543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222345432323213232432424345445334453434324343111122234543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222345432323213232432424345445334453434324343111122234543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222 22337254775808 38758436543765743875437656358764347568437658743658743454354645645543532487548758475847684756897548758457843758437584758478574857438758436587436587436587643875643856783478743658743658764387564387564378658437658743658743687564387564387564765746576475647564756475465746574675647654765476547534587545689475689748574385743765874585743857843765893748643587438957458754376543265874387564384764367584375874758943267632487564357 54545454123 6777744348435743587643756438765436574587564354375674365645643675 23232 3875843654376574357 54545454 输出量 6 3 5 9 约束条件 请勿使用任何内置函数或重载运算符来计算A B(您实际上根本不需要计算它)。 最短的解决方案获胜!
14 code-golf  math 

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.