标签: code-golf

Perl golf:打印数字的力量

什么是最短的Perl单行打印出硬编码的2位十进制的前9个幂(例如,.37),每个都在自己的行上?

输出看起来像:

1
0.37
0.1369
[etc.]
Run Code Online (Sandbox Code Playgroud)

官方Perl高尔夫规则:

  1. 最小数量的(关键)笔画获胜
  2. 您的笔画数包括命令行

math perl code-golf

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

Code golf:Diffie-Hellman密钥交换

回到ITAR时代,有一个流行的sig执行Diffie-Hellman密钥交换:

#!/usr/bin/perl -- -export-a-crypto-system-sig Diffie-Hellman-2-lines
($g,$e,$m)=@ARGV,$m||die"$0 gen exp mod\n";print`echo "16dio1[d2%Sa2/d0<X+d
*La1=z\U$m%0]SX$e"[$g*]\EszlXx+p|dc`
Run Code Online (Sandbox Code Playgroud)

使用现代直流电,这可以减少到相当多:

dc -e '16dio???|p'
Run Code Online (Sandbox Code Playgroud)

虽然具有模幂运算命令的现代直流形式('|'通过有效的指数倍增计算g ^ e%m)可能是除了APL之外无法比拟的,原始形式是否可以改进?请记住,e和m值会非常大; 对于加密安全性,它们都将为1024位.

cryptography code-golf public-key

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

oneliner争夺计划

这是一年中的那个时候,程序员想要洗牌,以便没有元素存在于其原始位置(至少在荷兰,我们庆祝Sinterklaas并选择吸管来决定谁写一首诗).有人有一个很好的Python 单一声明吗?

那么,输入示例: range(10)

输出示例: [2,8,4,1,3,7,5,9,6,0]

错误的输出将是[2,8,4,1,3,5,7,9,6,0]因为5它处于原始位置.这意味着5人必须为自己写一首诗,这样就不那么有趣了.

编辑许多人只要需要幸运就重复这项任务,并发现事实上解决方案是令人满意的.这是一种糟糕的方法,因为理论上这可能需要很长时间.巴特确实提出了更好的方法,但由于某种原因,我不能把它变成一个oneliner ......

编辑通过oneliner,我的意思是单一陈述.看起来,Python也能够在一行上压缩多个语句.我不知道.目前有非常好的解决方案,只使用分号来模拟单行上的多线行为.因此:"你能在一个声明中做到吗?"

python shuffle code-golf

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

还记得一个班轮代码挑战吗?

有没有人记得几年前像Byte这样的杂志,人们竞相制作用一行代码编写的最功能的代码片段?我记得像Pole Position这样的游戏有滚动文本等,而分形图形就是这样做的.

像C#和Java这样的现代语言在一个声明中是无穷无尽的,有没有人知道现在有类似的东西?这也是鼓舞人心和有趣的东西.

history computer-science code-golf

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

运行速度最快的算法竞赛

我想参加像代码高尔夫比赛这样的比赛,但获胜者将拥有最快的算法,而不是最小的代码.

  • 测量算法速度的一种公平方法是使用中性虚拟机,如Java的JVM.有没有一种简单的方法可以知道执行的JVM指令总数?(如果条目使用多个线程,那么JVM指令的总数将在所有线程中求和.)

例如,代码

public class simple {
    public static int main(String argc[]) {
        int i;

        i = 3;
        while (i > 0) {
            i--;
        }

    return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

生成JVM代码

0:  iconst_3
1:  istore_1
2:  iload_1
3:  ifle    12
6:  iinc    1, -1
9:  goto    2
12: iconst_0
13: ireturn
Run Code Online (Sandbox Code Playgroud)

它需要(如果我已经正确计算)18个JVM指令来运行.

  • 我希望人们能够在家里办理他们的参赛作品,看看评委会看到什么.显然,如果我将输入提供给程序,最快的解决方案是吐出记忆的预先计算的答案.有没有办法客观地让人们在家里运行程序而不是看到回忆的答案?

  • 还有哪些其他问题阻碍了非正式的"最快的代码竞争"的发生?

谢谢!

java algorithm jvm code-golf

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

Codegolf:使用C#中的最小代码将csv转换为HTML表

我正在为我自己的个人工具包lib添加一个函数来进行简单的CSV到HTML表转换.

我想在C#中使用尽可能最小的代码来完成此操作,并且它需要能够处理超过~500mb的CSV文件.

到目前为止,我的两个竞争者是

  • 通过分隔符将csv拆分为数组并构建HTML输出

  • 使用表格标记的搜索替换分隔符

假设已经处理了文件/读取/磁盘操作...即,我将包含所述CSV内容的字符串传递给此函数.输出将由直接简单的HTML样式标记组成,是的,数据可能在其中有杂散逗号和中断.

更新: 有些人问.如果有帮助,100%我处理的CSV直接来自excel.

示例字符串:

a1,b1,c1\r\n
a2,b2,c2\r\n

c# csv code-golf

0
推荐指数
1
解决办法
6564
查看次数

计算第n个素数的最短方法是什么?

什么是" 计算第n个素数 " 的最短C代码

重要字符方面最短,即分号,非空白字符,关键字和逗号的数量.

输入:

标准输入中的整数n,由新行分隔.输入将由EOF终止.

输出:

在输入n之后,将第n个素数打印到由新行分隔的标准输出.

(您可以假设素数<10,000,即n <1,230.)


测试用例:

Input:
    1
    2
    4
    8
    32
    999
    42
    5

Output:
    2
    3
    7
    19
    131
    7907
    181
    11
Run Code Online (Sandbox Code Playgroud)

我的尝试:

 #define m 10000
 a[m],b[m],x;

 main(i,j){
   for(i=2;i<m;i++)
      {
       if (!a[i])
       for (b[++x]=i,j=2*i;j<m;j+=i)
            a[j]=1;
      }
   for(;~scanf("%d",&i);printf("%d\n",b[i]));
  }
Run Code Online (Sandbox Code Playgroud)

对于这个问题,可读性不是一个问题.在时间和内存方面更昂贵的代码,但满足约束将在这里被认为更好.

c primes code-golf

0
推荐指数
1
解决办法
3710
查看次数

将Coffeescript中的true和false分别转换为1和-1

if x < change.pageX # pageX is cross-browser normalized by jQuery
            val = Number(elem.text())
            return elem.text(o.max) if val + o.step > o.max
            return elem.text(o.min) if val + o.step < o.min
            elem.text(val + o.step)
else x > change.pageX
  # same thing, only - instead of +
Run Code Online (Sandbox Code Playgroud)

(咖啡脚本,但你明白了).我正在寻找一个获取布尔值并将其转换为1(真)或-1(假)的技巧.这样我就能做到val + converted_bool * o.step并保存一个if.

javascript jquery code-golf coffeescript

0
推荐指数
2
解决办法
3628
查看次数