标签: code-golf

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: Seven Segments

The challenge

The shortest code by character count to generate seven segment display representation of a given hex number.

Input

Input is made out of digits [0-9] and hex characters in both lower and upper case [a-fA-F] only. There is no need to handle special cases.

Output

输出将是输入的七段表示,使用这些ASCII面:

  _       _   _       _   _   _   _   _   _       _       _   _  
 | |   |  _|  _| |_| |_  |_    | |_| |_| |_| |_  |    _| |_  |_  
 |_| …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

36
推荐指数
9
解决办法
4698
查看次数

Code Golf:音符

挑战

按字符数计算的最短代码,将根据用户输入输出乐谱.

输入将由一系列字母和数字组成 - 字母将代表注释的名称,数字将代表注释的长度.注释由4个垂直列组成.音符的头部将是一个大写字O杆,如果存在的话将是3行高,由管道字符制成|,并且旗帜将由反斜线制成\.

有效音符长度为无,音符的1/4,音符的1/8,音符的1/16和音符的1/32.

       |    |\    |\    |\
       |    |     |\    |\
       |    |     |     |\
 O    O    O     O     O
 1   1/4  1/8  1/16   1/32
Run Code Online (Sandbox Code Playgroud)

根据他们的笔记名称,笔记是工作人员的地方:

  ----

D ----
C     
B ----
A     
G ----
F     
E ----
Run Code Online (Sandbox Code Playgroud)

可以假设所有输入都是有效且没有错误 - 每个音符在一行上用空格分隔,至少有一个有效音符.

测试用例

Input:
    B B/4 B/8 B/16 B/32 G/4 D/8 C/16 D B/16
Output:
                              |\               
    --------------------------|---|\--------
          |   |\  |\  |\      |   |\      |\
    ------|---|---|\--|\-----O----|--O----|\
          |   |   |   |\  |      O        | …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

36
推荐指数
8
解决办法
3017
查看次数

Code Golf:蜘蛛网

挑战

按字符排序的最短代码输出一个蜘蛛网,其环等于用户的输入.

通过重建中心环启动蜘蛛网:

   \_|_/
  _/   \_
   \___/
   / | \
Run Code Online (Sandbox Code Playgroud)

然后添加等于用户输入的数量的环.环是由由"蜘蛛圈"的另一个水平\ / |_,并包装中心圆.

输入始终保证为单个正整数.

测试用例

Input
    1
Output
      \__|__/
      /\_|_/\
    _/_/   \_\_
     \ \___/ /
      \/_|_\/
      /  |  \
Run Code Online (Sandbox Code Playgroud)
Input
    4
Output
         \_____|_____/
         /\____|____/\
        / /\___|___/\ \
       / / /\__|__/\ \ \
      / / / /\_|_/\ \ \ \
    _/_/_/_/_/   \_\_\_\_\_
     \ \ \ \ \___/ / / / / 
      \ \ \ \/_|_\/ / / /
       \ \ \/__|__\/ / /
        \ \/___|___\/ /
         \/____|____\/ …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

36
推荐指数
4
解决办法
2388
查看次数

Code Golf:倒数游戏

挑战

这是一项任务,灵感来自着名的英国电视游戏节目Countdown.即使不了解游戏,挑战也应该非常明确,但随时可以要求澄清.

如果你想看到这款游戏的动态片段,请查看此YouTube视频片段.它拥有1997年美妙的已故理查德怀特利.

您将获得6个数字,从集{1,2,3,4,5,6,8,9,10,25,50,75,100}中随机选择,以及100到999之间的随机目标数.目的是使用六个给定的数字和四个常用的算术运算(加法,减法,乘法,除法;遍及有理数)来生成目标 - 或尽可能接近任一侧.每个数字最多只能使用一次,而每个算术运算符可以使用任意次数(包括零).请注意,使用多少个数并不重要.

编写一个函数,它接受目标数和6个数字的集合(可以表示为列表/集合/数组/序列),并以任何标准数字符号(例如中缀,前缀,后缀)返回解决方案.该函数必须始终将最接近的结果返回给目标,并且必须在标准PC上运行最多1分钟.请注意,在存在多个解决方案的情况下,任何单个解决方案就足够了.

例子:

  • {50,100,4,2,2,4},目标203,
    例如100*2 + 2 +(4/4)(精确),
    例如(100 + 50)*4*2 /(4 + 2)(精确)

  • {25,4,9,2,3,10},目标465
    例如(25 + 10 - 4)*(9*2-3)(确切)

  • {9,8,10,5,9,7},目标241
    例如((10 + 9)*9*7)+ 8)/ 5 (确切)

  • {3,7,6,2,1,7},目标824
    例如((7*3)-1)*6-2)*7 (= 826;偏2)

规则

除了在问题陈述中提到的,没有进一步的限制.您可以使用任何标准语言编写函数(不需要标准I/O).一如既往的目标是用最少数量的代码来解决任务.

说,我可能不会简单地用最短的代码接受答案.我还将关注代码的优雅和算法的时间复杂度!

我的解决方案

当我找到空闲时间时,我正在尝试使用F#解决方案 - 当我有东西时会将它发布在这里!


格式

请以下列格式发布所有答案,以便于比较:

语言

字符数:???

完全混淆的功能:

(code here)
Run Code Online (Sandbox Code Playgroud)

清除(理想评论)功能:

(code here)
Run Code Online (Sandbox Code Playgroud)

关于算法/聪明的快捷方式的任何注释.


algorithm math code-golf permutation

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

Code Golf:有限状态机!

有限状态机

确定性有限状态机是一种简单的计算模型,广泛用作基础CS课程中自动机理论的介绍.它是一个简单的模型,相当于正则表达式,它确定某个输入字符串是Accepted还是Rejected.抛开一些手续,有限状态机的运行包括:

  1. 字母表,一组字符.
  2. 状态,通常可视化为圆圈.其中一个州必须是开始状态.一些州可能会接受,通常可视化为双圈.
  3. 过渡,通常可视化为状态之间的定向拱,是与字母相关联的状态之间的有向链接.
  4. 输入字符串,字母字符列表.

一个运行在机器上开始处于起步状态.读取输入字符串的每个字母; 如果当前状态与对应于该字母的另一个状态之间存在转换,则当前状态将更改为新状态.在读取最后一个字母后,如果当前状态是接受状态,则接受输入字符串.如果最后一个状态不是接受状态,或者一个字母在运行期间没有来自状态的相应拱门,则拒绝输入字符串.

注意:这种短暂的破坏远不是FSM的完整,正式的定义; 维基百科的精彩文章是对该主题的精彩介绍.

例如,以下机器告知从左到右读取的二进制数是否具有偶数个0s:

http://en.wikipedia.org/wiki/Finite-state_machine

  1. 字母表是集合{0,1}.
  2. 状态是S1和S2.
  3. 该转变是(S1, 0) -> S2,(S1, 1) -> S1,(S2, 0) -> S1(S2, 1) -> S2.
  4. 输入字符串是任何二进制数,包括空字符串.

规则:

使用您选择的语言实施FSM.

输入

FSM应接受以下输入:

<States>       List of state, separated by space mark.
               The first state in the list is the start …
Run Code Online (Sandbox Code Playgroud)

python language-agnostic code-golf state-machine

35
推荐指数
5
解决办法
7848
查看次数

Code Golf:Pi的Leibniz公式

我最近在" 你更有争议的编程意见什么 "中发布了我最喜欢的采访白板编码问题之一,即编写一个使用Leibniz公式计算Pi的函数.

它可以通过多种不同的方式进行处理,退出条件需要一些思考,所以我认为它可能会成为一个有趣的代码高尔夫问题.最短的代码获胜!

假设Pi可以使用函数4*(1 - 1/3 + 1/5 - 1/7 + ...)估算,更多项更精确,可以编写一个函数来计算Pi到0.00001以内.

编辑:2008年1月3日

正如评论中所建议的那样,我将退出条件更改为0.00001,因为这就是我的真实含义(由于四舍五入,精确度小数点后五位更难,所以我不想在面试中问这个,而在0.00001以内是更容易理解和实现退出条件).

另外,为了回答评论,我想我的意图是解决方案应该计算迭代次数,或检查它何时做得足够多,但没有什么可以阻止你预先计算迭代次数并使用该数字.我真的有兴趣问这个问题,看看人们会想出什么.

code-golf rosetta-stone

31
推荐指数
14
解决办法
1万
查看次数

Code Golf:蜂巢

挑战

按字符数排序的最短代码,将根据用户输入生成蜂窝.

蜂窝被定义为由用户输入的大小的六边形网格,作为两个大于零的正数(不需要验证输入).第一个数字(W)代表蜂箱的宽度 - 或 - 每行有多少个六边形.第二个数字(H)表示蜂箱的高度 - 或 - 每列上有多少个六边形.

:一个六边形由三个ASCII字符制成_,/并且\,和三线:

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

六边形相互完成:蜂巢的第一列将为"低",第二列将为高 - 交替并以相同的图案重复形成W六边形.这将重复H次以形成总共WxH六边形.

测试用例:

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

language-agnostic code-golf rosetta-stone

31
推荐指数
6
解决办法
2266
查看次数

代码高尔夫:所有+ - */3个整数的组合

编写一个程序,该程序采用由空格分隔的3个整数,并执行加法,减法,乘法和除法运算的每一个组合,并使用所使用的运算组合显示结果.

例:

$./solution 1 2 3

结果如下输出

1+2+3 = 6

1-2-3 = -4

1*2*3 = 6

1/2/3 = 0 (仅整数答案,在.5处向上舍入)

1*2-3 = -1

3*1+2 = 5

等等...

操作规则的顺序适用,假设没有使用括号,即(3-1)*2 = 4不是组合,尽管你可以实现这个"额外信用"

对于除以0的结果,只需返回NaN

编辑:输入是必需的,即,如果输入是1 2 3,则3*1*2是有效组合.

math code-golf

31
推荐指数
7
解决办法
3329
查看次数

创建最短的图灵完整解释器

我刚刚尝试创建最小的语言解释器.你想加入并尝试吗?

游戏规则:

  • 您应该指定您正在解释的编程语言.如果它是您发明的语言,它应该在评论中附带一个命令列表.
  • 您的代码应该从分配给代码和数据变量的示例程序和数据开始.
  • 您的代码应以结果的输出结束.每个中间步骤最好有调试语句.
  • 您的代码应该像编写的那样运行.
  • 您可以假设数据为0和1(int,string或boolean,您的选择)和输出是一位.
  • 对于在标准模型上编写的任何算法,例如图灵机,马尔可夫链或您选择的类似算法,语言应该是图灵完备的,如果编写一个程序后,如何编写一个程序是相当明显的(或解释)由您的口译员执行算法.
  • 代码的长度定义为删除输入部分,输出部分,调试语句和非必要的空格后代码的长度.请将结果代码及其长度添加到帖子中.
  • 您不能使用使编译器为您执行代码的函数,例如eval(),exec()或类似的函数.

这是一个社区维基,这意味着问题和答案都不会从投票中获得声誉点.但无论如何投票!

computer-science code-golf turing-complete

30
推荐指数
5
解决办法
6713
查看次数