Questions tagged «string»

通过使用和操纵琴弦来解决特定问题的竞赛。

30
随机选择plinko样式的字符
让我们看看您选择的语言在选择性随机方面的表现如何。 给定4个字符,A,B,C,和D,或4个字符的字符串ABCD 作为输入,具有以下概率的字符输出之一: A 应该有1/8(12.5%)的机会被选中 B 应该有3/8(37.5%)的机会被选中 C 应该有2/8(25%)的机会被选中 D 应该有2/8(25%)的机会被选中 这与以下Plinko机器布局一致: ^ ^ ^ ^ ^ ^ A B \ / ^ C D 您的答案必须真正地尝试遵守所述的概率。正确解释您的答案中的概率是如何计算的(以及为什么它们尊重规范,而忽略伪随机和大数问题)就足够了。 计分 这是代码高尔夫球,因此每种语言中最少的字节会获胜!

18
将单数转换为复数
名词有两种形式,单数和复数。两者之间的转换非常容易。 通常,您以结尾s。例如 car=> cars。 如果结尾s,x,z,ch或sh与结束它es。例如 bus=> buses。 如果它y以一个辅音结尾,则将更改y为ies。例如 penny=> pennies。 如果以f或结尾fe,请将其更改为ves。例如 knife=> knives。 如果它o以一个辅音结尾,则将其更改为oes。例如 potato=> potatoes。 任务 您将被赋予一个单数名词。您必须将给定的名词转换为复数并将其输出。 规则 您将不会获得诸如mouse和的不规则名词moose。 不会给您例外,例如safe(safes;违反#4),piano(pianos;违反#5)和o(oes,违反#5)。 系统不会为您提供具有两种或多种可能的复数形式的单词,例如mosquito(mosquitos或mosquitoes)和roof(roofs或rooves)。 您将不会得到不可数的名词。 y 不算元音。 例子 car => cars bus => buses potato => potatoes knife => knives penny => pennies exception => exceptions wolf => wolves eye => eyes …

11
给我烤些莫吉
给定一个字符串,字符列表,字节流,序列…,它们既是有效的UTF-8,又是有效的Windows-1252(大多数语言可能会希望使用普通的UTF-8字符串),然后将其转换为(即假装为)Windows-1252到UTF-8。 演练示例 UTF-8字符串 I ♥ U T F - 8 表示为字节, 49 20 E2 99 A5 20 55 54 46 2D 38 这些字节在Windows-1252表中的字节值为我们提供了Unicode等效形式 49 20 E2 2122 A5 20 55 54 46 2D 38 ,这些形式表示为 I â ™ ¥ U T F - 8 例子 £ → £ £ → …

30
始终以相同的长度输出
对于诸如Output的长度与代码相同的挑战以及Create output的长度是代码长度的两倍的挑战,我想到了一个单独的但相似的挑战。 任务是产生输出。它可以是字符串,字符列表,也可以是程序的默认输出格式。但是,无论输入如何,您的输出必须始终为相同的长度。更重要的是,对于不同的输入,输出应该是不同的。 输入项 单个整数nnn,其范围由语言选择确定。如果您的语言具有可变长度整数,范围是−231≤n&lt;231−231≤n&lt;231-2^{31} \leq n < 2^{31}。 输出量 字符串或字符列表,或打印到STDOUT或STDERR。您只能使用以下方法之一。无论输入如何,输出都应具有相同的长度,但是由您决定是哪个长度。输出中可能不包含数字字符0-9或减号-。输出应该是确定性的。 您应该能够通过形式证明,自变量或蛮力搜索来证明每个输出只有一个可能的输入。 这是一个代码问题,因此请删除所有多余的字节。欢迎所有语言,越多越好!

24
比较版本号
发布某些软件时,我们会为其分配一个版本号。用户可能需要更新到某些软件的最新版本。因此,现在是时候找出哪个版本应该较新。 输入项 输入两个版本号作为字符串。 在此挑战的背景下,我们仅支持版本号,该版本号是一些由点组成的数字。 版本号是一个字符串,只能包含数字(0〜9)和点(.)。 点号不是版本号的第一个/最后一个字符。 点之间必须有一些数字。不能连续出现两个点。 版本号中的所有数字都应小于2 16。 输出量 比较输入的版本号并输出是否第一个大于/等于/小于第二个。您可以选择以下演示文稿之一: 使用正数/零/负数,而零表示相等; 使用三个恒定的不同值; 比较中 您无需实施本节中描述的算法。您的提交是有效的,只要它与该算法产生相同的输出即可。 版本号是一些小数点,由点连接。我们首先将两个版本号拆分为数字数组; 用零填充数组的末尾以使它们具有相同的长度; 比较第一项和最后一项: 如果两个数组项不同,则数字越大表示版本号越大 如果相同,则继续比较以下项目; 如果数组中的所有项目都相等,则两个版本相等。 测试用例 version1 version2 result 2 1 &gt; 1.0.0 1 = 1.0 1.0.0 = 1.2.42 1.2.41 &gt; 1.1.56789 1.2.0 &lt; 1.10 1.2 &gt; 1.20 1.150 &lt; 18.04 18.4 = 7.010 …

19
简单的字符串反射
让我们从定义字符串中字符的反射开始: 给定一个字符串,该字符串具有不同的小写字母字母,且不带空格,例如abcdefg,则将字符串中的字母反射c(不更改任何其他字母的顺序)定义为字符串中的新位置,以使字母的数量最初现在,它右边的字母是它左边的字母数。 因此,信的反射c中abcdefg会abdecfg。说明:的右边有4个字母c,现在,的左边有4个字母c。 其他示例: 反映性格e中myfriend就会形成串myefrind 反映性格a中axyz会形成串xyza。 反映性格b中abc会形成串abc。 反映性格d中d会形成串d。 反映性格e中ef会形成串fe。 有关更多信息或尝试一些测试用例,这是我用C ++编写的(有点长)程序。 挑战 给定一个带有不同小写字母的字符串,请按字母顺序遍历每个字符,然后将其“反映”在字符串中。 说明:字符串中的字母来自a-z,没有空格,字母是唯一的,字符串的长度至少为1个字母,最长为26个字母。 例子 输入:dcba。输出:dcba。 原因:首先,应反映a字母,因为它是字母中最早出现的字符串中的字符。你会得到adcb。然后,反映b字母中紧随其后的以获得badc。然后,反映c得到cbad,然后d得到dcba。 输入:myface。输出:fyecma。 提示:按顺序浏览字母a, c, e, f, m, y。 输入:a。输出:a。 输入:acb。输出:bac。 输入:cwmfjordbankglyphsvextquiz。输出:ieabhqzugdltkfnvpjxsormycw。 计分 输入和输出可以通过任何方便的方法给出。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 发布后约100小时接受。 现任优胜者 显示代码段 &lt;style&gt;body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list …
26 code-golf  string 

12
扩大压缩的脑裂
此挑战是2018年4月LotM挑战以及Brain-flak 2岁生日的一部分 我在考虑编码Flask程序的最有效方法是什么。由于只有8个有效字符,因此显而易见的事情是将每个字符映射到3位序列。这肯定是非常有效的,但是仍然很多余。我们可以利用脑剥落代码的某些功能来缩短编码。 全部由2个匹配的方括号表示的nilads实际上充当单个信息单元,而不是2。如果我们用单个字节字符替换每个方括号,这将使编码小得多而不会丢失任何数据。 这个不太明显,但是monad 的结束字节也是多余的。您认为您可以猜出'?'以下代码段中的字符代表什么吗? {(({}?&lt;&gt;?&lt;&gt;? 如果我们假设输入的内容是有效的大脑标志,那么每个问号只有一个选项。这意味着我们可以明确地使用close monad字符来表示每个结束括号。这具有使字符集保持较小的附加好处,如果我们想使用霍夫曼编码,这将大有帮助。由于接近的monad字符很可能会成为最常见的字符,因此可以用一点来表示,这非常有效。 这两个技巧将使我们通过以下算法来压缩脑筋代码: 用替换monad的每个右括号|。换句话讲,将每个未在开头匹配之前的右方括号替换为小节。所以... (({})&lt;(()()())&gt;{}) 会成为 (({}|&lt;(()()()||{}| 用它的封闭支架替换所有的尼拉丁。因此,其中没有任何内容的匹配方括号将使用以下映射: () --&gt; ) {} --&gt; } [] --&gt; ] &lt;&gt; --&gt; &gt; 现在我们的最后一个示例变为: ((}|&lt;()))||}| 删除尾随|字符。因为我们知道小节的总数应等于({[&lt;字符总数,所以如果末尾缺少小节,我们可以推断出它们。因此,例如: ({({})({}[()])}) 会成为 ({(}|(}[) 今天的挑战是逆转这一过程。 给定一串只包含字符的压缩后的Flask,将其(){}[]&lt;&gt;|扩展为原始的Flak代码。您可以假设输入将始终扩展为有效的大脑标志。这意味着输入的前缀中|最多不会包含({[&lt;字符。 输入将不包含结尾|字符。这些必须从上下文中推断出来。 与往常一样,您可以提交完整的程序或函数,并且输入/输出格式是允许的。并且由于这是一个代码高尔夫,因此您的代码将按源代码的长度(以字节为单位)进行评分,分数越小越好。 测试用例 这是一些测试用例。如果您想要更多,可以使用此python脚本和Brain-Flak Wiki生成自己的测试用例,这是大多数测试用例的来源。 #Compressed code #Original code ()))) (()()()()) ([([}()||||(&gt;||{(})|&gt;|}{((&lt;}|||&gt;}|}&gt;} ([([{}(())])](&lt;&gt;)){({}())&lt;&gt;}{}{((&lt;{}&gt;))&lt;&gt;{}}{}&lt;&gt;{} ({(}|(}[)|||} ({({})({}[()])}{}) …

14
分叉文本
给定一串ASCII字母(大写和/或小写),将显示每个字符分叉的字符串所需的原始MathJax输出为上标和下标。例如,输入cat和horse将导致MathJax分别呈现如下的输出: 请注意,只需要输入一个输入-并排列出这两个输入只是为了节省垂直空间。 标记含义 _ 表示下标。 ^ 表示上标。 在包含进一步的上标或下标的上标或下标子字符串周围需要括号,以防止它们都处于同一级别。 测试用例 测试用例采用格式input : output。第一个测试用例显示空字符串作为输入,应导致空字符串作为输出。 "" : "" "a" : "a" "me" : "m_e^e" "cat" : "c_{a_t^t}^{a_t^t}" "frog" : "f_{r_{o_g^g}^{o_g^g}}^{r_{o_g^g}^{o_g^g}}" "horse" : "h_{o_{r_{s_e^e}^{s_e^e}}^{r_{s_e^e}^{s_e^e}}}^{o_{r_{s_e^e}^{s_e^e}}^{r_{s_e^e}^{s_e^e}}}" "bifurcate" : "b_{i_{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}^{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}}^{i_{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}^{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}}" 您可以通过将输出粘贴到mathurl.com中来查看它们的呈现方式。 没有多余的括号 MathJax将愉快地渲染具有多余花括号的标记。例如,渲染时下面将所有看起来相同:a,{a},{}{a},{{{{a}}}}。 但是,此挑战的有效输出没有多余的花括号。请特别注意,输出中的单个字符不会被花括号包围。 订购 下标和上标的顺序无关紧要。以下是等效的,并且在呈现时将无法区分(并且都是同等有效的输出): c_{a_t^t}^{a_t^t} c_{a^t_t}^{a_t^t} c_{a_t^t}^{a^t_t} c_{a^t_t}^{a^t_t} c^{a_t^t}_{a_t^t} c^{a^t_t}_{a_t^t} c^{a_t^t}_{a^t_t} c^{a^t_t}_{a^t_t} 计分 对于每种语言,获胜者都是以字节为单位的最短代码。 通知太多?键入&lt;/sub&gt;到unsubscript
26 code-golf  string 

24
它是命令词吗?
(此帖子的灵感来自于“ Puzzling”。注意:下面的拼图是令人窒息的。) 标准电话键盘将字母与数字关联如下: 1 -&gt; 2 -&gt; ABC 3 -&gt; DEF 4 -&gt; GHI 5 -&gt; JKL 6 -&gt; MNO 7 -&gt; PQRS 8 -&gt; TUV 9 -&gt; WXYZ 0 -&gt; 如果在使用上述命令将其转换为按键时,给定的输入单词定义为“有序单词”,则该数量为不递减或不递增。换句话说,结果数不能同时增加和减少。 例如,单词CAT翻译为228,它是非递减的,因此是有序单词。但是,单词DOGis 364,它都会增加和减少,因此不是有序单词。 挑战 给定单词,输出是否为有序。 输入项 仅由ASCII字母([A-Z]或任何形式)组成的单词(不一定是词典单词)。[a-z] 您选择输入是全部大写还是全部小写,但必须一致。 该单词的长度至少为3个字符。 输出量 输入的单词是有序(真)还是无序(假)的一致真/假值。 规则 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码! 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 例子 这是一些有序单词(即真词),还有更多相关的令人困惑的难题。 CAT …

15
西班牙车牌游戏
这个问题是基于我用西班牙语问的一个问题。是的,我要求使用西班牙语的算法。:) 在西班牙,当前的车牌具有以下模式: 1234 XYZ 其中XYZ是从全套西班牙辅音中选取的三个辅音(我认为“Ñ”除外)。 有时候,和我妻子一起旅行时,我们会玩游戏。当我们看到一个车牌时,我们将其三个辅音词拼成一个单词,其中包含这三个辅音词,其顺序与车牌中的顺序相同。示例(西班牙语): BCD BoCaDo (valid) CaBezaDa (not valid) FTL FaTaL (valid) FLeTar (not valid) FTR FleTaR (valid, wins) caFeTeRa (valid, loses) 如上一个示例所示,获胜者是使用最少字符的人。 挑战 编写最短的程序或函数,该程序或函数接收单词列表和一组三个辅音,并在包含相同顺序的三个辅音的列表中找到最短的单词。就本游戏而言,大小写无关紧要。 单词列表(第一个参数)的输入将是您的语言string类型的数组。第二个参数(三个辅音)将是另一个string。如果对您的语言更好,请string与三个辅音一起放在整个参数列表的最后一项。输出将是另一个string。 单词列表中的单词不会被发明,也不会是无限的单词,它们会出现在任何标准词典中。如果需要限制,请假设单词列表中的单词长度不能超过50个字符。 如果有多个长度相同的单词可能是有效答案,则可以返回其中任何一个。只要确保您只返回一个单词,或者如果没有单词匹配三个辅音的模式,则返回一个空字符串。 您可以在组中重复辅音,因此三个辅音的有效输入均为FLR和GGG。 西班牙辅音与英语完全相同,但加了“Ñ”。元音与重读元音的附加词相同:“áéíóúü”。不会有其他类型的标记,例如“-”或“'”。 您可以假设单词列表和三个辅音的大小写始终相同。 如果要使用西班牙语单词的真实集合来测试算法,则可以从Dropbox下载一百万个单词以上的文件(15.9 MB)。 测试用例 Input: 'psr', {'hola' 'repasar' 'pasarais' 'de' 'caída' 'pequeñísimo' 'agüeros'} Output: 'repasar' Input: 'dsd', …

18
缩写数组
目标: 给定一个字符串数组,为每个字符串创建缩写版本。 规格: 对于此挑战,缩写是字符串的前N个字符。对于字符串abc:a,ab和abc都是有效的缩写,而bc和ac则不是。 给定一个字符串数组,我们想找到最短的缩写集,这样在给定输入和任何缩写的情况下,您可以确定缩写所指的输入项。 例: 输入: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] 从第一个字符串开始,我们一直在处理字符串。 星期一只是带有的项目字符串M,因此,最短的缩写是M。 星期二从开始T,星期四也是如此。这意味着我们尝试使用字符串TU。由于没有其他字符串以此开头,因此我们使用TU。 星期三是W,星期四是Th,星期五是F。 更多示例: Input: "one,two,three,four,five,six,seven" Output: "o,tw,th,fo,fi,si,se" Input: "red,orange,yellow,green,blue,purple" Output: "r,o,y,g,b,p" Input: "a,ab,abc" Output: Not valid! No abbreviation for `a` that doesn't apply to the other items. 笔记: 您可以通过任何合理的方式进行输入和输出。 您可以假设输入将始终是有效的字符串数组。 您可以假定总会有一个解决方案,这与上一个测试用例不同。 字符串仅包含可打印的ASCII(或编码中的可打印字符) 这是代码高尔夫,所以最少的字节会赢!
26 code-golf  string 

8
将大括号转换为右手括号(Sad Brace)
右括号是一种代码括弧式,其中花括号和分号都对齐到文件右侧的单个点。 通常,出于多种原因,这被认为是不好的做法。 挑战 通过任何方法获取多行字符串,并将其花括号样式转换为Right Hand Brace。 对于这个挑战,您只需要它就可以在Java代码上工作,但是,从理论上讲,它应该可以在使用花括号和分号的任何代码上工作。 您必须{};连续抓取所有字符,它们之间必须有任意空格。例如。}},; } }\n\t\t}和,并通过使用空格将它们排列在文件的右侧。 例如: a { b; {c 应该成为 a { b ;{ c 或者,更抽象地说,将所有空格从所有字符的左侧推{};到右侧。 线的缩进应另作保留。字符移动后仅包含空格的行{};可以有选择地删除。 例如: a{ b{ c; } } d; 可能成为 a { b { c;}} d ; 要么 a { b { c;}} d ; 向右推是指所有{};字符对齐到不短于最长行的点。之后的任何空间都可以接受。 因此,以下所有内容都是可以接受的: a { …


28
将ASCII表重新创建为ASCII表
通常,在进行代码搜寻时,我想知道某个字符的ASCII值是什么。我最喜欢的快速查找所有可打印ASCII字符的资源之一是ASCIItable.com。这有一个非常漂亮的图像,它不仅显示可打印的ASCII字符及其值,而且还显示不可打印和扩展的字符以及十六进制,八进制和HTML的值: 当今的挑战是将ASCII表重新创建为ASCII表而不是图像。为简化起见,我们将不使用控制字符(低于32的字符),而仅显示十进制值和字符。换句话说,您面临的挑战是编写打印或返回以下文本的完整程序或函数: Dec Chr | Dec Chr | Dec Chr ---------------------------------- 32 Space | 64 @ | 96 ` 33 ! | 65 A | 97 a 34 " | 66 B | 98 b 35 # | 67 C | 99 c 36 $ | 68 D | 100 …

6
对游戏男孩的有效打字
许多旧的Game Boy游戏经常需要用户输入字符串。但是,没有键盘。这是通过向用户显示“键盘屏幕”来解决的,如下所示: 该“字符指针”将开始于字母A的用户将导航到与所需的字符d-垫的四个按钮(UP,DOWN,LEFT和RIGHT),然后按BUTTON A将其追加到最终字符串。 请注意: 网格环绕,因此UP在字母A上同时按下可将您带到T。 附加字母后,“字符指针”保持不变 挑战 上面的键盘具有更改大小写的选项,并且形状不规则。因此,为简单起见,在此挑战中,我们将使用以下键盘(右下角为ASCII char 32,一个空格): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z . 在这样的键盘上打字非常慢-因此,为了简化操作,您的任务是编写一个程序,该程序告诉用户以最快的方式键入给定字符串的方法。如果有多种最快的方法,则只需要显示一种即可。 输出密钥应为: &gt; 对于 RIGHT &lt; 对于 LEFT ^ 对于 UP v …

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.