Questions tagged «code-golf»

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

8
阅读复古展示
从什么地方偷来的艺术品? 可以使用_|字符以ASCII表示7段数字。这是数字0-9: _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| 您的工作是将艺术作品解析为正常数字。 数字注释 每个数字都有不同的宽度。 1 宽度为 1 3而且7很2宽 245689而且0都3宽 每个数字之间还有一个填充字符。这是完整的字符集: // <-应该是一个空格,但是SE格式将其弄乱了 | | ------------- _ _ | | _ …

2
计算谱系
一点遗传学课 当您仅能访问某人的可见特征或表型时,通常会使用其家族史的血统书来找出每个家庭成员的实际遗传信息或基因型。 当我们将要处理简单的优势时,简单的血统图就足以弄清楚每个人的等位基因或它们拥有的基因的版本。在简单的优势地位下,具有等位基因优势的人(用大写字母表示)将始终具有该版本所代表的特征,而与其他等位基因无关。需要表达两个隐性等位基因(用小写字母表示)。换句话说,优势等位基因总是掩盖该基因的隐性形式。这是血统图的示例: 这里的每一行都是一个世代。圆圈是女性,男性是正方形,水平线是婚姻,垂直线是孩子。很简单 黑色表示隐性表型,白色表示显性。从顶部开始(假设等位基因为A和a),我们知道人2具有aa纯合隐性,因为这是隐性表型的唯一可能选择。现在虽然一个人可能是要么Aa或者AA是显性表型,因为他有一个隐性的孩子,他必须Aa,或杂。您可以为所有其他人执行此操作。如果您没有任何信息可以让您找出第二个等位基因,可以这样进行:A_。 你的任务 您将以世代列表的形式收到血统图,就像[GenI, GenII, etc.]任何理智的格式一样。 每一代都是一个字符串列表,每个字符串代表一个人。 人们由三部分组成-ID,表型和“连接”。 它们的ID是一个可打印的ascii字符,在整个树中,除了A或以外都是唯一的a。(不,图表中的人数不会超过95人)。 它们的表型是A或之一a,A是优势等位基因,并且a是隐性的。 他们的联系是与他们有联系的其他人的ID序列。 同代人之间的联系是婚姻,不同世代中的孩子是父母。 双方都重复了这种联系(即丈夫说他是妻子的丈夫,而妻子说她是妻子的丈夫)。 您必须尽可能弄清楚每个人的基因型。 返回相同的列表,除了人类以外,将他们的基因型放在相同的位置。 必须按顺序输出基因型,Aa而不是aA。 在输入格式上留一点余地就可以了。 这是代码高尔夫球,因此最短答案以字节为单位。 例子 [["0A1234", "1a0234"], ["2A01", "3a01", "4A015678", "5a4678"], ["6a45", "7A45","8A45"]] (The one above) -> [["Aa", "aa"], ["Aa", "aa", "Aa", "aa"], ["aa", "Aa", "Aa"]] [["0A12", "1A02"], ["2A301", "3a2"]] -> [["A_", "A_"], …

2
准备去死?
背景 桌上型角色扮演游戏中ennui的一种来源是处理涉及许多骰子的掷骰。施放解散咒语可能是瞬间的,但滚动并加在一起40个骰子肯定不是! rpg.stackexchange.com上讨论了许多处理此问题的建议。但是,其中一些(例如使用滚轴程序或平均骰子)会剥夺玩家的一些乐趣和控制感。其他方法,例如滚动4个骰子并将总数乘以10,会使结果波动更大(平均骰子作用相反)。 这个问题涉及减少骰子掷骰数而不改变平均结果(均值)或其摆动(方差)的方法。 记数法和数学 在这个问题中,我们将使用以下表示法来表示骰子掷骰: n d k(例如40d6)是指k面模具的n卷总和。 n d k * c(例如4d6 * 10)描述将结果乘以常数c。 我们还可以添加滚动(例如4d6 * 10 + 40d6)和常数(例如4d6 + 10)。 对于单模辊,我们可以证明: 均值:E [1d k ] =(k + 1)/ 2 方差:Var(1d k)=(k-1)(k + 1)/ 12 利用均值和方差的基​​本属性,我们可以进一步推断出: 均值:E [ m d k * a + n d l * …

15
编码约定转换
在那个Coding Golf中,您应该将TitleCase的一种编码约定转换为lower_case_with_underscores。而且...反之亦然! 规格 通过以下方式更改外壳: 如果下划线字符是定界符,则将大小写更改为没有任何定界符的标题大小写。 如果有多个没有分隔符的单词,请将大小写更改为小写并添加下划线字符作为分隔符。 如果只有一个单词(或一个字符):如果单词以小写字母开头,则将大小写更改为“标题大小写”;如果单词以大写字母开头,请将大小写更改为小写。 允许的字符: 从A到Z 从a到z 下划线(_)。 不允许输入大小写混合的单词。不允许的案例示例: Coding_Convention_Conversion a_BC 案例案例 Input | Expected Output =========================================================== CodingConventionConversion | coding_convention_conversion coding_convention_conversion | CodingConventionConversion abc | Abc Abc | abc ABC | a_b_c a_b_c | ABC a | A A | a 规则 它被允许使用ToUpper,ToLower和ToTitleCase功能。 允许使用正则表达式。 代码高尔夫:以字节为单位的最短代码胜出!
22 code-golf  string 

30
弦之塔
给定文本字符串,将其输出为“塔”。 字符串的每个片段(形式为0:n)都重复5*n一次,因此第一个字符重复5次,然后第一个和第二个重复10次,依此类推。 例子: 'hello' -> ['h'] ['h'] ['h'] ['h'] ['h'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', …

11
进行中的ASCII Hangman
(受到有关代码审查的问题的启发) 假设有两个人在玩《Hangman》,但您只是听错了游戏,想绘制当前状态。 给定两个单词作为输入,每个单词匹配[A-Z]+或[a-z]+(您选择)一个单词,按照以下规则将rules子手游戏的当前状态输出为ASCII艺术。 第一个单词是要猜测的单词,第二个单词是已经猜测的字母。这些可以按任何顺序作为输入。 要猜测的单词保证为非空,但已经被猜测的字母可能为空(即,好像是游戏的开始)。 该游戏将始终是有效的子手游戏(即,不会重复猜出的字母,不会在游戏结束时猜到字母,您只会收到字母作为输入,等等)。 子手图画下方必须是要猜的单词,用_空格隔开,以代替尚不为人所知的字母。例如,如果要猜的单词是BOAT,则在hangman图下面必须是_ _ _ _。如果这个词被BOAT用A猜,然后在下面的图必须_ _ A _。 下面这个词来猜测一定是已经猜到的字母是不是在这个词。它们可以按任何顺序排列,并且可以根据需要用任何非字母分隔符分隔。 从最初开始到游戏结束,这是the子手游戏的状态。每个错误猜出的字母都会使状态前进一个。因此,第一个错误猜出的字母使头部O出现,下一个使身体|出现,等等。 +---+ | | | | | | ========= +---+ | | O | | | | ========= +---+ | | O | | | | | ========= +---+ | | O | /| | | …

27
可见的骰子脸
甲西方传统模具是立方体,在其上的整数1至6被标记上的面。成对增加到7的对放置在相反的面上。 因为是立方体,所以在任何给定时间我们只能看到1到3个面(包括1个)。不能同时看到相反的面孔。 您的任务是编写一个程序或函数,该程序或函数给出了表示模具上各边的整数列表,以确定是否有可能同时看到这些面。 1 好吧,也许您可​​以用双眼看到4到5张脸,但是出于这一挑战的目的,我们从一个点观察死角。 规则: 您的提交可以采用输入列表: 是非空的。 仅包含满足的值1 ≤ n ≤ 6。 不包含重复的元素。 您可能不假定输入已排序。 您的提交应输出一个true / false的值:true是可以同时看到这些面孔的情况,否则为false。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜! 默认情况下,标准漏洞是禁止的。 测试用例 真相: [6] (One face) [6, 2] (Share a side) [1, 3] (Share a side) [2, 1, 3] (Share a vertex) [3, 2, 6] (Share a vertex) 虚假: [1, 6] …

18
得分游戏
背景 在Boggle中,通过将玩家找到的每个唯一单词的得分相加(即,一个以上玩家找到的任何单词的得分为0分),为该回合得分。根据每个单词中字母的数量来计算分数,如下所示: 3个字母:1分 4个字母:1分 5个字母:2分 6个字母:3分 7个字母:5分 8个或更多字母:11分 挑战 在这个挑战中,编写一个程序或函数,该程序或函数接受代表每个玩家单词的字符串列表的列表,并输出玩家分数的列表。您可以假设至少有2位玩家,所有单词均为3个或更多字母,并且全部为小写字母(如果愿意,可以全部为大写字母)。您还可以假设每个玩家只会使用每个单词一次;也就是说,任何玩家的列表都不会包含重复项。这是代码高尔夫球,因此最短答案以字节为单位。 规则 输入可以采用任何合理的格式。示例包括字符串列表,逗号分隔的字符串列表,输入的每一行上的逗号分隔的字符串等。输出可以采用整数列表的形式(或与您的语言相当的形式),也可以打印使用您选择的分隔符(例如换行符)将其输出到stdout的值。 测试用例 输入=>输出 [["cat","dog","bird","elephant"], ["bird","dog","coyote"], ["dog","mouse"]] => [12,3,2] [["abc","def","ghi"], ["ghi","def","abc"]] => [0,0] [["programming","puzzles"], ["code","golf"], []] => [16,2,0]

24
喝咖啡
画出这个Ascii咖啡杯: Ø Ø Ø __________ / \ __ | J | \ | A | | | V | | | A | __ / \ __________ / 咖啡脚本或Java的布朗尼点:) 以字节,函数或程序为单位的最短代码,结尾的换行符或空格是可以接受的,多喝点!

30
我的体重指数是多少?
问题: 您的任务是编写一个程序,该程序将身高(米)和体重(公斤)作为输入,并输出相应的BMI类别。 BMI是您的体重与身高之比的量度。对于许多人来说,它已过时且不准确,但这并不重要! BMI可以使用以下公式计算: BMI = (mass in kilograms) / (height in meters)^2 类别将定义如下: BMI <18.5:“体重不足” 18.5 <= BMI <25:“正常” 25 <= BMI:“超重” 为了挑战,我忽略了所有“极端”类别。另外,由于某些数字(例如“ 25”)位于2个类别之间,因此我略微调整了界限,因此有明确的答案。 您可以编写函数或完整程序。 输入: 输入可以采用任何合理的形式。两个数字(或字符串),可以是2个单独的参数,也可以是一个字符串。包含2个数字的数组/列表,带有“ weight”和“ height”键的字典...应该支持十进制值。您可以假设输入将始终有效(没有负值,并且高度永远不会为0)。 输出: 输出将是一个字符串,其中包含不区分大小写的类别名称。字符串必须与上面的类别名称完全匹配,忽略大小写。可以将其输出到stdout,返回(对于函数)或写入文件。 测试用例(体重,身高=>结果): 80, 1 => "Overweight" 80, 2 => "Normal" 80, 3 => "Underweight" 50, 1 => "Overweight" 50, …
21 code-golf  math 

30
将两个数字相乘
输入:两个十进制整数。这些可以在标准输入中作为程序或函数的参数或列表形式提供给代码。 输出:其乘积,以十进制整数表示。例如,输入5 16将导致输出80。 限制:请没有标准漏洞。这是代码高尔夫球,以最少的字节数获胜。 注意:布局因我先前的挑战而被盗,请加上两个数字。 测试用例: 1 2 -> 2 4 5 -> 20 7 9 -> 63 -2 8 -> -16 8 -9 -> -72 -8 -9 -> 72 0 8 -> 0 0 -8 -> 0 8 0 -> 0 -8 0 -> 0 0 0 -> 0 …
21 code-golf  math  number 

1
Nethack中卷轴的自动价格识别
哦,天哪!!你不能把我们和门把手一起留在这里!到处都是nethack!- :1天前通过Geobits 好吧,不能令人失望... 介绍 (如果您不关心博览会和/或患有Tab爆炸综合症,则可以跳过本节) Nethack(和Rogue以及同一个roguelike类型的类似游戏)的特征机制之一就是其识别系统。在游戏开始时,只会“正式识别”起始库存中的项目。绝大多数其他物体始于未知。例如,在被识别之前,“反射盾”将最初显示为“抛光银盾”。 “抛光的银盾”只能是反射的盾,但这在另外两种情况下会产生有趣的结果。 某些项目互不相同,但是具有相同的“外观”。例如,如果您找到“ 灰色石头 ”,则可能是以下四件事之一:火石(无用),试金石(可能有用),负载石(会重担,因为它重达一吨,而您不能丢掉它)或运气石(极其有用,这对于赢得比赛几乎是必需的)。 许多物品(卷轴,魔杖,戒指,咒语书,一些装甲等)具有随机外观。这意味着存在一系列可能出现的外观,例如,药水可能具有的列表;例如,[ 金色药水,涡旋药水,泡沫腾腾的药水,紫红色药水等]。这些外观,然后随机分配到他们其实都是(治疗药水,瘫痪的药水,看到隐形药水,多晶型的药水等)。 这意味着六角形护身符可以在一场游戏中拯救您的生命(挽救生命的护身符),而在下一场游戏中将您窒息杀死(扼杀护身符)。 自然地,这使得识别物品成为游戏的关键部分。物品可以被“正式识别”,这意味着它们将明确地显示为一定物品(例如,您发现的所有镶有珠宝的魔杖都将显示为创造怪物的魔杖);这主要是通过标识卷或咒语书来完成的。通常情况下,这些都供不应求,这使我们... 非正式鉴定。这意味着您非常确定(或确定)某个未识别的项目属于某种类型(或只能是几种类型之一),但尚未“正式”识别它。这可以通过几种方法完成:对棒进行雕刻测试,对戒指进行下沉测试,或者最常用的方法... ... 价格识别!这个挑战是关于什么的。 简而言之,在《毁灭的地下城》中遍布商店(是的,店主们认为在地下地下城中建立商店是个好主意;不要问为什么)。在这些商店里,您可以买卖旅行中遇到的各种物品。在购买或出售商品时,店主会首先告诉您他将多少商品出售给您/从您那里购买。由于某些商品保证有特定的价格,因此您可以使用它来非正式地标识某种商品。 某些物品,例如光轴滚动条,是唯一花费一定金额的物品,使您可以明确地标识它们。但是,大多数商品与其他同类商品共享一个价格组,这只能让您缩小可能性范围(这仍然很有用)。但是,一件商品的买/卖价格受许多变量(例如您的魅力统计)的影响。因此,上面的图表。 你能告诉我我喜欢Nethack吗? 输入项 输入将作为当前正在玩的(原始版本3.4.3)Nethack游戏提供: "For you, most gracious sir; only 177 for this scroll labeled VERR YED HORRE." --More-- ------------ | . --------- | | ---------- | ^ | | .## ################. …
21 code-golf  game 

4
解决亚里士多德的数问题
亚里士多德(Aristotle)的数字难题是向六边形网格中的19个单元中的每个单元填充一个介于1到19之间的唯一整数,以使沿每个轴的总数为38的挑战。 您可以像这样绘制游戏板: 本质上,这个难题是对以下十五个方程组的解决方案: ((a + b + c) == 38 && (d + e + f + g) == 38 && (h + i + j + k + l) == 38 && (m + n + o + p) == 38 && (q + r + s) == 38 …

5
还剩多久?
还剩多久? 最近,我在手机上使用5分钟计时器制作披萨。当有人走进来问我还剩多久时,我一开始就如何回答这个问题感到困惑。您会发现,如果当前时间的计时器是3:47,那么当我大声读出“三分四十七秒”时,时间就会变了。因此,我需要找到一个计时器,正好在我将其读出后才能到达。 这是您的挑战:自动化此过程。给定时间以任何合适的格式(用“:”定界,或者作为分秒和第二个参数),输出从当前时刻开始的最早时间,这将花费与读取计时器相同的时间量至。我们假设每个音节需要1秒钟才能读出。 进一步规定 您必须将“分钟”和“秒”分别算作两个音节,以及它们之间的“与”。 披萨的烹饪时间不会超过59:59。 “ 11分零秒”不是10个音节:您必须简化为“ 11分钟”(即5个音节)。分钟也是如此:“ 0分钟7秒”也仅算作4个音节。 您的程序可以以任何格式提供输出:的数组[minutes, seconds],甚至是<minutes> minutes and <seconds> seconds(写出普通文本)。 有标准漏洞。 这是代码高尔夫球,因此最短答案以字节为单位。 测试用例 所有输入为 (minutes, seconds) (4, 47) = (4, 38) (Four MiNutes And ThirTy Eight SeConds - 9 syllables/seconds) (1, 1) = (0, 56) (FifTy-Six SeConds - 5 syllables/seconds) (59, 57) = (59, …

14
看妈妈!我制作了自己的(Base 10)数字系统![关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 4个月前关闭。 我们都已经做到了,也许没有,但是制作自己的外语和数字系统是幻想写作的主要内容,但大部分只是一项有趣的活动。 任务很简单,需要两个输入: 有序列表输入10 [十]个唯一的“数字”(任何可打印的ASCII字符),并按顺序将它们解释为值0、1、2、3,...,9 +这里可能会有数字例外。算术运算符(+,-,*,/),括号和空格不能用作数字之一。 仅使用那些“数字”的算术问题 并以给定的形式输出等效的整数结果。 这是一个例子: INPUT abcdefghij bcd + efg + hij OUTPUT bdgi 在该示例中,“ abcdefghij”的输入列表(您可以选择列表的形式)对应于“ 0123456789”,就像“ hjkloiwdfp”也将与“ 0123456789”一对一对应,而不是与“ a”关联零,“ h”确实如此。后面的算术“翻译”为123 + 456 + 789,等于1368。然后必须以我们给定的形式输出,因此b(代表1)d(代表2)g(代表6)和i(代表8)。 测试用例 abcdefghij abc + def - ghij -gedc qwertyuiop qwerty / uiop e %y83l;[=9| (83l * 9) + 8% …

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.