标签: code-golf

Code Golf:Triforce

这是受到这个主题的启发:http://www.allegro.cc/forums/thread/603383

问题

假设用户为您提供1到7之间的数字输入.应从控制台输入,参数不太理想.

输入为1时,打印以下内容:

***********
 ********* 
  *******    
   *****   
    ***    
     *     
Run Code Online (Sandbox Code Playgroud)

大于1的值应生成模式的倍数,以上面的值结束,但对称堆叠.例如,3应该打印以下内容:

*********** *********** ***********
 *********   *********   ********* 
  *******     *******     *******  
   *****       *****       *****   
    ***         ***         ***    
     *           *           *     
      *********** ***********
       *********   ********* 
        *******     *******  
         *****       *****   
          ***         ***    
           *           *     
            ***********
             ********* 
              *******  
               *****   
                ***    
                 *     
Run Code Online (Sandbox Code Playgroud)

如果您也打印相反的奖励积分.

      *********** ***********
       *********   ********* 
        *******     *******  
         *****       *****   
          ***         ***    
           *           *     
            ***********
             ********* 
              *******  
               *****   
                ***    
                 *     
                 *     
                ***    
               *****   
              *******  
             ********* 
            ***********
           *           *     
          ***         ***    
         ***** …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

48
推荐指数
11
解决办法
3727
查看次数

代码高尔夫:莫里斯序列

挑战

按字符数排序的最短代码将输出Morris数字序列.在莫里斯数列,又称外观数列是数字的顺序启动,如下所示:

1, 11, 21, 1211, 111221, 312211, ...

您可以无限生成序列(即,您不必生成特定的数字).

I/O期望

该程序不需要任何输入(但是接受输入的奖励点,从而提供从任意任意起点或数字开始的选项).至少你的程序必须从1.

输出至少是预期的顺序:

1
11
21
1211
111221
312211
...
Run Code Online (Sandbox Code Playgroud)

额外信用

如果你需要额外的功劳,你需要做这样的事情:

$ morris 1
1
11
21
1211
111221
312211
...

$ morris 3
3
13
1113
3113
132113
...
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

47
推荐指数
12
解决办法
4834
查看次数

Code Golf:Tic Tac Toe

按字符数发布您的最短代码,以检查玩家是否赢了,如果是,那么.

假设你在变量b(board)中有一个整数数组,它包含Tic Tac Toe板,以及玩家的移动:

  • 0 =没有设置
  • 1 =玩家1(X)
  • 2 =玩家2(O)

所以,鉴于阵列b = [ 1, 2, 1, 0, 1, 2, 1, 0, 2 ]将代表董事会

X|O|X
-+-+-
 |X|O
-+-+-
X| |O
Run Code Online (Sandbox Code Playgroud)

对于这种情况,您的代码应该输出1以指示玩家1赢了.如果没有人赢了你可以输出0false.

我自己的(Ruby)解决方案即将推出.

编辑:对不起,忘了将其标记为社区维基.您可以假设输入格式正确,不必进行错误检查.


更新:请以函数的形式发布您的解决方案.大多数人已经这样做了,但有些人没有,这不完全公平.电路板作为参数提供给您的功能.结果应该由函数返回.该函数可以具有您选择的名称.

code-golf tic-tac-toe rosetta-stone

42
推荐指数
7
解决办法
8340
查看次数

Code Golf:浪潮

挑战

按字符计数的最短代码,用于从输入字符串生成波形.

通过提升(第1行)较高字符并使(第1行)降低较低字符来生成波.相等的字符保持在同一行(没有提升或降级).

输入仅由小写字符和数字组成,字母被认为高于数字.

测试用例:

Input:
    1234567890qwertyuiopasdfghjklzxcvbnm

Output:
                                 z
                                l x v n
                               k   c b m
                              j
                             h
                            g
                   y   p s f
                  t u o a d
               w r   i
            9 q e
           8 0
          7
         6
        5
       4
      3
     2
    1

Input:
    31415926535897932384626433832795028841971693993751058209749445923078164062862

Output:
                9 9   8 6 6
         9 6   8 7 3 3 4 2 4  8   9   88
    3 4 5 2 5 5     2       33 3 7 5 2  4 9   9 99 …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

41
推荐指数
11
解决办法
6203
查看次数

Code-Golf:编译和崩溃的最短程序是什么?

这有点儿有趣.你可以设计一个最短的程序,它可以编译但什么都不做,但在执行时会立即崩溃?因此,"崩溃"意味着程序因错误条件(例如核心转储)而停止.

是否有一种语言使用gcc编译器比C语言崩溃更快(7个字符)?[我留下这个答案供有人找.]

(应该允许使用编译器标志.否则7现在不能工作,编译器检查变得更好.)

[结果评估]我无法标记单个答案,因为多种语言有多个正确答案.将一个答案换成另一个答案是不公平的.请用投票选出最佳答案.

programming-languages code-golf

41
推荐指数
16
解决办法
1万
查看次数

代码高尔夫:Mandelbrot套装

代码高尔夫的常用规则.这是python中的一个实现作为示例

from PIL import Image

im = Image.new("RGB", (300,300))
for i in xrange(300):
    print "i = ",i
    for j in xrange(300):
        x0 = float( 4.0*float(i-150)/300.0 -1.0)
        y0 = float( 4.0*float(j-150)/300.0 +0.0)
        x=0.0
        y=0.0
        iteration = 0
        max_iteration = 1000
        while (x*x + y*y <= 4.0 and iteration < max_iteration):
            xtemp = x*x - y*y + x0
            y = 2.0*x*y+y0
            x = xtemp
            iteration += 1
        if iteration == max_iteration:
            value = 255 
        else:
            value = iteration*10 % 255
        print value …
Run Code Online (Sandbox Code Playgroud)

code-golf fractals mandelbrot rosetta-stone

40
推荐指数
13
解决办法
3810
查看次数

代码高尔夫:数字到单词

代码高尔夫系列似乎相当受欢迎.我遇到了一些将数字转换为单词表示的代码.一些例子是(编程乐趣的2的权力):

  • 2 - >两个
  • 1024 - >一千二十四
  • 1048576 - >百万四万八千七百六十六

我的同事出现的算法差不多有两百行.似乎会有更简洁的方法来做到这一点.

现行指南:

  • 以任何编程语言欢迎提交的内容(我向PhiLho道歉,因为最初对此不太清楚)
  • 最大输入为2 ^ 64(请参阅以下链接,感谢mmeyers)
  • 英语输出的缩放比例较低,但欢迎使用任何算法.只需对编程语言一起评论所使用的方法.

language-agnostic nlp code-golf rosetta-stone

39
推荐指数
13
解决办法
1万
查看次数

Code-golf:生成pascal的三角形

生成一个列表列表(或打印,我不介意)一个大小为N 的Pascal三角形,代码可能最少!

这是我的尝试(使用技巧python 2.6中的 118个字符):

c,z,k=locals,[0],'_[1]'
p=lambda n:[len(c()[k])and map(sum,zip(z+c()[k][-1],c()[k][-1]+z))or[1]for _ in range(n)]
Run Code Online (Sandbox Code Playgroud)

说明:

  • 列表理解的第一个元素(当长度为0时)是 [1]
  • 下一个元素是通过以下方式获得的:
  • 取前面的列表并制作两个列表,一个在开头填充0,在结尾填充另一个.
    • 例如,对于第二步,我们采取[1]并制造[0,1][1,0]
  • 按元素对两个新列表求和
    • 例如,我们制作一个新的列表[(0,1),(1,0)]并用sum来映射.
  • 重复n次,就是这样.

用法(漂亮的打印,实际上是代码-golf xD):

result = p(10)
lines = [" ".join(map(str, x)) for x in result]
for i in lines:
    print i.center(max(map(len, lines)))
Run Code Online (Sandbox Code Playgroud)

输出:

             1             
            1 1            
           1 2 1           
          1 3 3 1          
         1 4 6 4 1         
       1 5 10 10 5 1       
      1 6 15 20 …
Run Code Online (Sandbox Code Playgroud)

algorithm code-golf combinatorics discrete-mathematics pascals-triangle

37
推荐指数
6
解决办法
7103
查看次数

Code Golf:Sierpinski的三角形

挑战

最短的代码,按字符计数输出由以下ASCII三角形构成的Sierpinski三次N次迭代的ASCII表示:

 /\
/__\
Run Code Online (Sandbox Code Playgroud)

输入是一个正数.

测试用例

Input:
    2
Output:
       /\
      /__\
     /\  /\
    /__\/__\
Run Code Online (Sandbox Code Playgroud)
Input:
    3
Output:
           /\
          /__\
         /\  /\
        /__\/__\
       /\      /\
      /__\    /__\
     /\  /\  /\  /\
    /__\/__\/__\/__\
Run Code Online (Sandbox Code Playgroud)
Input:
    5
Output:
                                   /\
                                  /__\
                                 /\  /\
                                /__\/__\
                               /\      /\
                              /__\    /__\
                             /\  /\  /\  /\
                            /__\/__\/__\/__\
                           /\              /\
                          /__\            /__\
                         /\  /\          /\  /\
                        /__\/__\        /__\/__\
                       /\      /\      /\      /\
                      /__\    /__\    /__\    /__\
                     /\  /\  /\  /\  /\  /\  /\  /\
                    /__\/__\/__\/__\/__\/__\/__\/__\
                   /\                              /\
                  /__\                            /__\
                 /\ …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

37
推荐指数
9
解决办法
4158
查看次数

Code Golf:XOR加密

来自:加密公司
收件人:x $*sj4(就是你)

如果您选择接受它,您的任务就是用最短的击键次数创建一个程序

  • 采用两个文件名参数(命令行或标准输入),第一个是包含密钥的文件,第二个是一些消息.这两个文件都是纯文本.

  • 使用XOR加密将密钥应用于邮件,覆盖文件.

例:

输入文件:

StackOverflow很酷

键:

Code Golf

加密输出文件的十六进制转储:

0000000: 101b 0506 4b08 1909 1425 030b 1200 2e1c  ....K....%......
0000010: 4c25 2c00 080d 0a                        L%,....
Run Code Online (Sandbox Code Playgroud)

为简单起见,假设文件可以适合内存


此消息将在5 ... 4 ... 3 ... 2 ... 1中自加密...

     #####
    #### _\_  ________
    ##=-[.].]| \      \
    #(    _\ |  |------|
     #   __| |  ||||||||
      \  _/  |  ||||||||
   .--'--'-. |  | ____ |
  / __      `|__|[o__o]|
_(____nm_______ /____\____ 
Run Code Online (Sandbox Code Playgroud)

如果密钥的大小大于或等于消息的大小并且密钥是由无偏的随机过程生成的,则XOR加密是不可能破解的.见:一次性垫.所以这里没有"糟糕的加密".

encryption code-golf xor

37
推荐指数
8
解决办法
6247
查看次数