标签: code-golf

Code Golf:找到加权中位数的最短代码?

我尝试打码打高尔夫球.

找到最小值?W_i*|X-X_i|的问题减少到找到x[i]具有权重的列表的加权中值w[i](参见下面的定义).你将如何用最短,最简单和最美丽的程序来做到这一点?

以下是我的代码最初的显示方式(解释在问题的答案中,简短版本作为以下答案之一发布).

    #define zero(x) ( abs(x) < 1e-10 )  /* because == doesn't work for floats */

    float sum = 0;
    int i;

    for (i = 0; i < n; i++) 
         sum += w[i];
    while (sum > 0) 
         sum -= 2*w[--i];

    right = x[i]             // the rightmost minimum point
    left  = ( zero(sum) && zero(w[i]-w[i-1]) ) ? x[i-1] : right;
    answer = (left + right) / 2;
Run Code Online (Sandbox Code Playgroud)

(实际上,当你看到变量isum …

language-agnostic code-golf

4
推荐指数
1
解决办法
3420
查看次数

最简洁的异步调用void方法的方法

我有一个方法,我想异步调用:

void Foo()
{
}
Run Code Online (Sandbox Code Playgroud)

我确实可以通过以下方式异步调用它:

delegate void DVoidMethod();
DVoidMethod FooDelegate = new DVoidMethod(Foo);
FooDelegate.BeginInvoke(null,null);
Run Code Online (Sandbox Code Playgroud)

有没有人有其他选择?

我认为三行代码太多了?

c# delegates asynchronous code-golf

4
推荐指数
2
解决办法
2876
查看次数

Code Golf - Word Scrambler

请按照下面给出的示例输入和输出,使用最短的源代码回答一个程序,该程序将任意明文转换为相应的密文.奖励积分*表示最短的CPU时间或最少的内存使用量.

例1:

明文:快速的棕色狐狸跳过懒狗.Supercalifragilisticexpialidocious!

Ciphertext: eTh kiquc nobrw xfo smjup rvoe eth yalz .odg!uioiapeislgriarpSueclfaiitcxildcos

例2:

明文: 123 1234 12345 123456 1234567 12345678 123456789

密文: 312 4213 53124 642135 7531246 86421357 975312468

规则:

  1. 标点符号定义为包含在最接近的单词中.
  2. 单词的中心定义为上限((strlen(word)+1)/ 2).
  3. 空格被忽略(或折叠).
  4. 奇怪的话首先向右移动.甚至单词首先向左移动.

您可以将其视为向后读取所有其他字符(从单词的结尾开始),然后是剩余的字符向前.Corporation => XoXpXrXtXoX => niaorCoprto.

感谢那些指出我的描述不一致的人.这导致你们许多人走上了错误的道路,我为此道歉.规则#4应该清理.

*只有Jeff Atwood决定这样做才能获得奖励积分.由于我没有跟他核实过,机会很小.抱歉.

puzzle encryption code-golf scramble cpu-word

4
推荐指数
1
解决办法
1150
查看次数

Python Golf:将这个列表列表转换为字典的最简洁方法是什么:

我有一个列表,看起来像这样:

[['Tom', 'Dick'], ['Harry', 'John', 'Mike'], ['Bob']]
Run Code Online (Sandbox Code Playgroud)

我想将它变成一个字典,其中每个键都是一个名称,每个值都是一个与列表中子列表位置相对应的数字:

{'Tom': 0, 'Dick': 0, 'Harry': 1, 'John': 1, 'Mike': 1, 'Bob': 2}
Run Code Online (Sandbox Code Playgroud)

我尝试了各种列表推导,但我无法让它与嵌套列表一起工作.我可以使用嵌套循环,如下所示:

names = [['Tom', 'Dick'], ['Harry', 'John', 'Mike'], ['Bob']]
names_dict = {}
for i, name_sublist in enumerate(names):
    for name in name_sublist:
        names_dict[name] = i
Run Code Online (Sandbox Code Playgroud)

但我怀疑有一种更短,更优雅的方式.

python code-golf

3
推荐指数
2
解决办法
1435
查看次数

查找列表中最长项目长度的最有效方法是什么?

给出各种长度单词的列表,找到任何单词的最大长度的最佳方法是什么?

例如,以下应返回6

findMaxLen("a,set,of,random,words")
Run Code Online (Sandbox Code Playgroud)


当然,这样做是相当微不足道的......

<cffunction name="findMaxLen" returntype="Numeric">
    <cfset var CurMax = 0 />
    <cfset var CurItem = 0 />
    <cfloop index="CurItem" list="#Arguments[1]#">
        <cfif Len(CurItem) GT CurMax >
            <cfset CurMax = Len(CurItem)/>
        </cfif>
    </cfloop>
    <cfreturn CurMax />
</cffunction>
Run Code Online (Sandbox Code Playgroud)


或者,更短一点......

<cffunction name="findMaxLen" returntype="Numeric">
    <cfset var CurMax = 0 />
    <cfset var CurItem = 0 />
    <cfloop index="CurItem" list="#Arguments[1]#">
        <cfset CurMax = Max( CurMax , Len(CurItem) ) />
    </cfloop>
    <cfreturn CurMax />
</cffunction>
Run Code Online (Sandbox Code Playgroud)


但是有更好的方法 - 更高效的东西吗?

也许是一些Java方法?转换为数组并按项目长度排序?计算逗号之间的最大差距?


在实际应用中,无论是上述两个例子将罚款我目前的需求,这是不适合的东西是性能的关键,所以我并不需要一个答案,但我认为这仍然将是有趣的看看人们会想出什么......

language-agnostic string coldfusion code-golf list

3
推荐指数
1
解决办法
925
查看次数

最短代码的主要计算

我学校的计算机科学专业报(称为readme,它是挪威语,第19页)有一个有趣的竞争,为下面的问题编写尽可能短的Java代码.

接受一个整数(作为字符串数组的第一个条目中的字符串,因为Java main方法只接受字符串数组)作为参数,并首先写出所有低于此数字的数字作为素数,然后写出所有数字不是素数.最短的代码获胜!

作为答案,我将发布赢得竞争的最短Java代码.我想知道Stack Overflow社区是否可以制作更短的代码如果您了解挪威语,您会看到如果您已经完成它就可以赢得一瓶香槟,但不幸的是,比赛的最后提交日期已经结束.

你怎么解决这个问题?

java primes code-golf

3
推荐指数
1
解决办法
2874
查看次数

使用尽可能少的字符注入javascript文件?

我正在制作一个书签,并且认为我会抛出一个挑战:如何从尽可能少的字符中的链接注入外部javascript文件.

这是我能想到的最短的:

javascript:(function(d){d.body.appendChild(d.createElement('script')).src='URL'})(document)
Run Code Online (Sandbox Code Playgroud)

这是没有URL的88个字符.

Stack Overflow javascript大师可以做得更好吗?我将接受最少字符的工作答案,所以戴上你的思维帽!

(有一点:书签必须适用于所有主流浏览器.是一个聪明的解决方案,但不适用于所有主流浏览器,因为它返回一个值.)

javascript code-golf bookmarklet minimize

3
推荐指数
2
解决办法
798
查看次数

如何在Erlang中将数字转换为单词?

我发现了一个关于将数字转换为"单词"的有趣问题:

代码高尔夫:数字到单词

我真的很想看看如何在Erlang中有效地实现它.

erlang numbers words code-golf

2
推荐指数
1
解决办法
803
查看次数

使用string.translate()将不可打印的字符转换为点

所以我之前已经完成了这个,对于这样一个看似简单的任务来说,这是一个令人惊讶的丑陋代码.

目标是将任何不可打印的角色翻译成一个.(点).出于我的目的,"可打印"确实排除了最后几个字符string.printable(换行符,制表符等).这是用于打印旧的MS-DOS调试"十六进制转储"格式......或任何类似的东西(其中额外的空格将破坏预期的转储布局).

我知道我可以使用,string.translate()并且要使用它,我需要一个翻译表.所以我用string.maketrans()它.这是我能想到的最好的:

filter = string.maketrans(
   string.translate(string.maketrans('',''),
   string.maketrans('',''),string.printable[:-5]),
   '.'*len(string.translate(string.maketrans('',''),
   string.maketrans('',''),string.printable[:-5])))
Run Code Online (Sandbox Code Playgroud)

......这是一个难以理解的混乱(虽然它确实有效).

从那里你可以打电话使用像:

for each_line in sometext:
    print string.translate(each_line, filter)
Run Code Online (Sandbox Code Playgroud)

... 而且要快乐.(只要你不看引擎盖).

现在,如果我将这个可怕的表达式分解为单独的语句,它就更具可读性:

ascii = string.maketrans('','')   # The whole ASCII character set
nonprintable = string.translate(ascii, ascii, string.printable[:-5])  # Optional delchars argument
filter = string.maketrans(nonprintable, '.' * len(nonprintable))
Run Code Online (Sandbox Code Playgroud)

为了便于阅读,这样做很诱人.

但是,我一直认为必须有一种更优雅的方式来表达这一点!

python code-golf

2
推荐指数
1
解决办法
2513
查看次数

如何打开功能名称?

在打高尔夫球时,人们试图用尽可能少的角色完成拼图,通常只使用基本语言.在R中打高尔夫球的一个技巧是使用部分完成,以便例如rle(...)$length可以缩短到rle(...)$l.如何在R中打开函数名称,最好是尽可能少的字符?

r code-golf

2
推荐指数
1
解决办法
470
查看次数