标签: code-golf

如何使用T-SQL生成Mandelbrot?

学习一些关于T-SQL的知识,并认为一个有趣的练习就是用它生成一个Mandelbrot集.

原来已经有人(最近出现了).我会让其他人发布它作为答案,但我很好奇可以做出哪些优化.

或者,您会如何使代码更具可读性?

我将选择最可读(但相当紧凑)的版本作为已接受的答案(太糟糕了,我们还没有代表奖励!)除非有人真的带来了很好的优化.

奖金指向那些教我一些关于T-SQL的答案.

-亚当

t-sql code-golf fractals

9
推荐指数
3
解决办法
2802
查看次数

python dict.add_by_value(dict_2)?

问题:

>>> a = dict(a=1,b=2    )
>>> b = dict(    b=3,c=2)

>>> c = ???

c = {'a': 1, 'b': 5, 'c': 2}
Run Code Online (Sandbox Code Playgroud)

所以,这个想法是两个以最短的形式通过int/float值添加到字典.这是我设计的一个解决方案,但我不喜欢它,因为它很长:

c = dict([(i,a.get(i,0) + b.get(i,0)) for i in set(a.keys()+b.keys())])
Run Code Online (Sandbox Code Playgroud)

我认为必须有一个更短/更简洁的解决方案(可能与reduce和操作员模块有关吗?itertools?)...任何想法?


更新:我真的希望找到更优雅的东西,比如"reduce(operator.add,key = itemgetter(0),a + b)".(显然这不是真正的代码,但你应该得到这个想法).但似乎这可能是一个梦想.


更新:仍然需要更简洁的解决方案.也许groupby可以帮忙吗?我用"reduce"/"groupby"提出的解决方案实际上并不简洁:

from itertools import groupby
from operator import itemgetter,add

c = dict( [(i,reduce(add,map(itemgetter(1), v))) \
              for i,v in groupby(sorted(a.items()+b.items()), itemgetter(0))] )
Run Code Online (Sandbox Code Playgroud)

python dictionary code-golf

9
推荐指数
5
解决办法
2053
查看次数

Python中的十进制对齐格式

应该很容易.

这是我的数组(相反,一种生成代表性测试数组的方法):

>>> ri = numpy.random.randint
>>> ri2 = lambda x: ''.join(ri(0,9,x).astype('S'))
>>> a = array([float(ri2(x)+ '.' + ri2(y)) for x,y in ri(1,10,(10,2))])
>>> a
array([  7.99914000e+01,   2.08000000e+01,   3.94000000e+02,
         4.66100000e+03,   5.00000000e+00,   1.72575100e+03,
         3.91500000e+02,   1.90610000e+04,   1.16247000e+04,
         3.53920000e+02])
Run Code Online (Sandbox Code Playgroud)

我想要一个字符串列表,其中'\n'.join(list_o_strings)将打印:

   79.9914
   20.8
  394.0
 4661.0
    5.0
 1725.751
  391.5
19061.0
11624.7
  353.92
Run Code Online (Sandbox Code Playgroud)

我想空间垫的左侧右侧(但没有超过必要的).

如果小数点后面的所有内容,我想在小数点后面加零.

我不想要科学记谱法.

..我不想丢失任何有效数字.(在353.98000000000002中2表示不重要)

是的,很高兴想要..

Python 2.5 %g, %fx.x等等要么迷惑我,要么无法做到.我还没有尝试过import decimal.我看不出NumPy是这样做的(虽然,array.__str__array.__repr__十进制对齐(但有时会返回科学).

哦,速度很重要.我在这里处理大阵列.

我目前的解决方案是:

  1. str(a)和解析NumPy的括号
  2. str(e)数组中的每个元素并拆分('.')然后填充和重建
  3. 到a.astype('S'+ str(i)),其中i是max(len(str(a))),然后填充

似乎应该有一些现成的解决方案......(但不是必需的)

最佳建议失败,何时dtype是float64: …

python formatting numpy code-golf

8
推荐指数
1
解决办法
7921
查看次数

自动汇总数字列和打印总数

鉴于以下产出git ... --stat:

 3 files changed, 72 insertions(+), 21 deletions(-)
 3 files changed, 27 insertions(+), 4 deletions(-)
 4 files changed, 164 insertions(+), 0 deletions(-)
 9 files changed, 395 insertions(+), 0 deletions(-)
 1 files changed, 3 insertions(+), 2 deletions(-)
 1 files changed, 1 insertions(+), 1 deletions(-)
 2 files changed, 57 insertions(+), 0 deletions(-)
 10 files changed, 189 insertions(+), 230 deletions(-)
 3 files changed, 111 insertions(+), 0 deletions(-)
 8 files changed, 61 insertions(+), 80 deletions(-)
Run Code Online (Sandbox Code Playgroud)

我想生成数字列的总和,但保留行的格式. 为了通用性,我制作了这个awk脚本,它自动对任何数字列求和并生成一个摘要行:

{
    for (i …
Run Code Online (Sandbox Code Playgroud)

language-agnostic awk code-golf

8
推荐指数
1
解决办法
632
查看次数

Twitter文本压缩挑战

规则

  1. 您的程序必须有两种模式:编码解码.
  2. 编码:

    1. 您的程序必须将一些人类可读的Latin1文本作为输入,大概是英语.
      • 忽略标点符号无关紧要.
      • 你只需要担心实际的英语单词,而不是L337.
      • 任何带重音的字母都可以转换为简单的ASCII.
      • 您可以选择如何处理数字.
      • 123
        • 一二三
        • 一百二十三
        • 123
        • 1 2 3
      • 一百二十三
        • 一二三
        • 一百二十三
        • 123
        • 1 2 3
    2. 您的程序必须输出可以表示的消息

      • 范围内的140个代码点U+0000-U+10FFFF

        排除非字符:

        • U+FFFE
        • U+FFFF
        • U+nFFFE,这里是- 十六进制U+nFFFFn110
        • U+FDD0- U+FDEF
        • U+D800- U+DFFF(代理代码点).

    它可以以您选择的任何合理编码输出; GNUiconv支持的任何编码都被认为是合理的,您的平台本机编码或区域编码可能是一个不错的选择.

  3. 解码:

    1. 您的程序应该将编码模式的输出作为输入.
    2. 文本输出应该是输入文本的近似值.
      • 你越接近原始文本越好.
      • 不需要任何标点符号.
    3. 输出文本应该是人类可读的,也可能是英语.

      • 可以是L337,或者lol.
    4. 除了上面指定的输出之外,解码过程可能无法访问编码过程的任何其他输出; 也就是说,您无法在某处上传文本并输出用于下载的解码过程的URL,或者类似的任何内容.
  4. 为了用户界面的一致性,您的程序必须按如下方式运行:
    1. 您的程序必须是可以在具有相应解释器的平台上设置为可执行的脚本,或者可以编译为可执行文件的程序.
    2. 您的程序必须作为其第一个参数encodedecode设置模式. …

compression unicode twitter code-golf

7
推荐指数
1
解决办法
2185
查看次数

家庭邮件合并(代码高尔夫)

我写了一些邮件合并代码的一天,虽然它的作品我是一个用代码关闭.我想看看它看起来像在其他语言.

因此,对于输入,例程采用联系人列表

Jim,Smith,2681 Eagle Peak,,Bellevue,Washington,United States,98004
Erica,Johnson,2681 Eagle Peak,,Bellevue,Washington,United States,98004
Abraham,Johnson,2681 Eagle Peak,,Bellevue,Washington,United States,98004
Marge,Simpson,6388 Lake City Way,,Burnaby,British Columbia,Canada,V5A 3A6
Larry,Lyon,52560 Free Street,,Toronto,Ontario,Canada,M4B 1V7
Ted,Simpson,6388 Lake City Way,,Burnaby,British Columbia,Canada,V5A 3A6
Raoul,Simpson,6388 Lake City Way,,Burnaby,British Columbia,Canada,V5A 3A6
Run Code Online (Sandbox Code Playgroud)

然后它将具有相同地址和姓氏的行合并到一个记录中.假设行未排序).代码还应该足够灵活,以便可以按任何顺序提供字段(因此需要将字段索引作为参数).对于一个两口之家,它连接两个名字字段.对于三个或更多的家庭,名字设置为"the",姓氏设置为"surname family".

Erica and Abraham,Johnson,2681 Eagle Peak,,Bellevue,Washington,United States,98004
Larry,Lyon,52560 Free Street,,Toronto,Ontario,Canada,M4B 1V7
The,Simpson Family,6388 Lake City Way,,Burnaby,British Columbia,Canada,V5A 3A6
Jim,Smith,2681 Eagle Peak,,Bellevue,Washington,United States,98004
Run Code Online (Sandbox Code Playgroud)

我的C#实现是这样的:

var source = File.ReadAllLines(@"sample.csv").Select(l => l.Split(','));
var merged = HouseholdMerge(source, 0, 1, new[] {1, 2, 3, 4, 5});

public static …
Run Code Online (Sandbox Code Playgroud)

code-golf

7
推荐指数
1
解决办法
462
查看次数

Python代码缩短

我试图在这里解决这个问题: - https://www.spoj.pl/problems/PHIVAL/

这些问题要求您输出尽可能多的黄金比例(1 + sqrt(5))/ 2的十进制数字,并尝试最小化代码长度.

这就是我现在所拥有的.这段代码可以缩短吗?

from decimal import *
getcontext().prec=7050
print(1+Decimal(5).sqrt())/2
Run Code Online (Sandbox Code Playgroud)

python code-golf code-snippets

5
推荐指数
1
解决办法
1972
查看次数

这个Linux/32bit x86组件"Hello,World"能否做得更小?

以下32位x86 Linux程序打印一个任意长度的字符串(只要程序可以,无论如何),exit(0)然后执行:

.global _start             ; notice on entry here, all regs but %esp are zero
_start:
    call  .L0              ; offset == strlen, provided by your assembler
.byte 'H','e','l','l','o',',',' ','W','o','r','l','d'
.L0:
    pop   %ecx             ; ret addr is starting addr of string
    mov   -4(%ecx),%edx    ; argument to `call`, 4 bytes: strlen
    inc   %ebx             ; stdout == 1
    movb  $4, %al          ; SYS_write == 4
    int   $0x80
    xchg  %eax,%ebp        ; %ebp is still zero
    xchg  %eax,%ebx        ; SYS_exit == 1, return …
Run Code Online (Sandbox Code Playgroud)

assembly code-golf

5
推荐指数
1
解决办法
1911
查看次数

使用Property创建新PSObject的PowerShell最短语法?

我经常使用以下内容:

New-Object psobject -Property @{a=1; b=2; c=3; d=4}
Run Code Online (Sandbox Code Playgroud)

我想让它尽可能短,甚至可能是1个字符?使用上面的属性创建新的psobject的最短方法是什么?

我的愿望是我可以用类似这样的语法来做到这一点:

#{a=1; b=2; c=3; d=4}
Run Code Online (Sandbox Code Playgroud)

请注意,我用新的'特殊'符号替换了@.

请注意,如果这被认为是偏离主题,我会移动它.

powershell code-golf

5
推荐指数
1
解决办法
1198
查看次数

Code Golf:解决迷宫问题

这是一个有趣的问题,需要用最少量的代码来解决.我希望递归解决方案最受欢迎.

我们有一个被定义为人物地图的迷宫,其中=是墙,空间是路径,+是你的起点,#是你的终点.一个非常简单的例子是这样的:

====
+  =
= ==
=  #
====
Run Code Online (Sandbox Code Playgroud)

您能编写一个程序,以尽可能少的代码找到以这种方式解决迷宫的最短路径吗?

如果它适用于所有迷宫输入,例如那些路径跨越自身或具有大量分支的迷宫点,则奖励积分.该程序应该能够适用于大型迷宫(例如,1024x1024 - 1 MB),以及如何将迷宫传递给程序并不重要.

"玩家"可以沿对角线移动.输入迷宫将永远不会有对角线通道,因此您的基本动作组将是向上,向下,向左,向右.对角线移动只是向前看一点,以确定是否可以合并上/下和左/右.

输出必须是迷宫本身,使用星号字符(*)突出显示最短路径.

maze code-golf

4
推荐指数
3
解决办法
3164
查看次数