首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >9洞码高尔夫球-开球

9洞码高尔夫球-开球
EN

Code Golf用户
提问于 2014-10-12 23:02:09
回答 2查看 1.6K关注 0票数 12

已经有了一个9个洞挑战 (和另一个这里),但这是去年的结果。此外,只存在了2个月(虽然看起来是永远的)。这是很不一样的。

领导委员会:(请注意,洞的权重尚未确定)

代码语言:javascript
复制
+---------------+------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
|Competitor     | Language   | Hole 1 | Hole 2 | Hole 3 | Hole 4 | Hole 5 | Hole 6 | Hole 7 | Hole 8 | Hole 9 | Total  |
+----------------------------------------------------------------------------------------------------------------------+
|Dennis         |CJam        |        | 31     |        |        |        |        |        |        |        | 31     |
+----------------------------------------------------------------------------------------------------------------------+
|Optimizer      |CJam        |        | 35     |        |        |        |        |        |        |        | 35     |
+----------------------------------------------------------------------------------------------------------------------+
|Martin Büttner |Mathematica |        | 222    |        |        |        |        |        |        |        | 222    |
+----------------------------------------------------------------------------------------------------------------------+
|Cameron        |Python      | 878    |        |        |        |        |        |        |        |        | 878    |
+----------------------------------------------------------------------------------------------------------------------+
|bubalou        |Processing 2| 717    |        |        |        |        |        |        |        |        | 717    |
+----------------------------------------------------------------------------------------------------------------------+
|Doorknob       |Python 2    |        |        |0.079711|        |        |        |        |        |        |0.079711|
+----------------------------------------------------------------------------------------------------------------------+
|Vulcan         |Java        |        |        |0.6949  |        |        |        |        |        |        |0.6949  |
+----------------------------------------------------------------------------------------------------------------------+
|Eli            |C++         |        |        |1.42042 |        |        |        |        |        |        |1.42042 |
+---------------+------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+

其他漏洞:

最近我在这里很慢,所以我来这里是为了开始下一个9洞的高尔夫球场,其中包括我在这里(虽然有限)所看到的一切。这将需要:

  • Ascii艺术
  • 图形输出
  • 康威的生命游戏
  • 山之王
  • Kolmogorov复杂性
  • 奎因
  • 图像处理
  • 数学
  • 经典的高尔夫游戏。

我真的很期待看到你能做些什么!

竞赛规则

  • 您将为所有的漏洞选择1种语言(关于更多信息,您将参与in...see点4)。
  • 对于所有的漏洞-- 标准漏洞 (仍然)并不好笑。
  • 当我看到在合理的时间内有足够的意见书时,下一个挑战就会出现。例如,“山之王”要花更长的时间。
  • 你不必参加所有的洞。如果你发现一个洞特别有挑战性,没有时间去做,等等,你会得到2倍于最低分数的分数。请不要利用这一规则,留下一个高尔夫脚本回答12个字符,并以24个作为一个分数。

评分

  • 你的分数是基于所有洞的分数的最高值。
  • 最低得分(按实际高尔夫计算)
  • 主板将放置在此页的顶部。

我将尽我最大的努力确保没有问题是重复的,所有的问题都有客观的标准,写得很好,并且在整个比赛中它们都有(相对的)同等的重要性。

但是,当我失败的时候,请耐心点。

而且,不要再费心了,这是第一个挑战!

血浆

等离子球是每个人最喜欢的玩具:

你的工作就是画一个。

你必须画一个底座:

地球仪:

特斯拉的东西(?)

当然,还有很酷的等离子拍摄:

然而,当你把你的手靠近一个等离子球(或者像维基百科告诉我的那样,一个传导的物体),它吸引等离子体

你的地球仪应该能反映这一点。

从数量上说,你的地球仪最多有16张照片(见上图)。地球表面的“物体”(以弧度角度表示)将包含“传导功率”,即它所吸引的光束的数量。因此,一个功率为5的物体将吸引5束光束(一条厚度为5的单线),使11束均匀地分布在地球的其他地方:

请注意,

  1. 中间的黑圈保持在等离子体上方。

  1. 在这个例子中,角度是pi/2。

你可能有一个以上的导电物体,在这种情况下,它不要求芽是等距分开。然而,它们的距离相对较小。例如,对于2个对象来说,这是可以的,一个是π/4幂5,另一个是角5pi/3幂3:

你应该能够看到(等离子体)芽的每一个端点。

然而,如果一个物体(或物体之和)的功率大于16,地球将“破裂”:

Notes

  • 地球仪的直径是基座长度的1.5倍,底座是正方形
  • 当地球破裂时,地球就站在右边。它与基座的右侧以及地面相切。当等离子球被打破时,不应该有等离子体(为什么?)当然是安全特性!没有任何关于它最初是如何破裂的消息。)
  • 除了嫩枝之外,所有东西的颜色都必须是黑色的,并且有一个像素厚。等离子体的颜色为245 - 280色调,饱和/值为100。在"HSV“下使用,如果你不知道我在说什么。

输入

输入可以通过STDIN/命令行args/任何方式,也可以通过函数参数。

应该有两个输入--等离子体地球仪底部的长度(如果使用矢量图形,则包括一个轴),以及如下所示的对象数组:

代码语言:javascript
复制
[[angle,power],[angle,power],[angle,power]]

因此,对于没有对象(见第一张16行的图片),输入将是

代码语言:javascript
复制
100,[]

对于下一个对象(一个对象,电源5),它将是:

代码语言:javascript
复制
100,[[1.570796,5]]

最后一个例子是:

代码语言:javascript
复制
100,[[0.785398,5],[5.23598,3]]

这是代码-高尔夫,所以最短的代码单位字节获胜。

EN

回答 2

Code Golf用户

发布于 2014-10-20 21:53:50

处理2- 717字符

由于处理是为艺术家设计的一种语言,而且我是一个非常新手的程序员,所以我不希望在这些挑战中取得很好的成绩。话虽如此,我真的很喜欢在处理过程中画东西是多么简单,我一直想再玩一遍,所以这些挑战应该是有趣的。

代码语言:javascript
复制
int j,m,b,k,d,l;float w,c,h,x,y,z;float v[],p[],g[];void setup(){j=m=d=0;c=z=0;String i[]= loadStrings("f.txt");i[0]=i[0].replace("[","").replace("]","");String o[]=split(i[0],',');v=new float[o.length];p=new float[o.length-1];for(String s:o){if(!s.equals("")){v[j]=Float.parseFloat(s);}j++;}w=v[0];size((int)w*3,(int)w*3);h=w*.75;l=v.length;noLoop();}void draw(){translate(w/2,height);scale(1,-1);rect(0,0,w,w);if(l>2){while(m<j-1){m+=2;c+=v[m];}}if(c>16){ellipse(w+h,h,2*h,2*h);rect(w/2,w,1,h);}else{ellipse(w/2,w+h,2*h,2*h);rect(w/2,w,1,h);b=16;m=1;stroke(#1500ff);if(l>2){while(m<j){p[m-1]=cos(v[m])*h;p[m]=sin(v[m])*h;strokeWeight(v[m+1]);line(w/2,w+h,p[m-1]+w/2,p[m]+w+h);b-=v[m+1];m+=2;}}strokeWeight(1);c=(PI*2)/b;k=b;g=new float[b+b];while(b>0){g[d]=cos(z+c*b)*h;g[d+1]=sin(z+c*b)*h;m=0;if(l>2){while(m<j-1){if(abs(g[d]-p[m])<.1 && abs(g[d+1]-p[m+1])<.1){b=k+1;z=z+.1;d=-2;break;}m+=2;}}b--;d+=2;}d--;while(d>0){line(w/2,w+h,g[d]+w/2,g[d-1]+w+h);d-=2;}}stroke(#000000);fill(#000000);ellipse(w/2,w+h,w/9,w/9);}

我相信这会被大大降低,当我有更多的时间时,我可能会尝试这样做,但现在我对此很满意。

读取位于草图数据文件夹中的文件(f.txt)以获取其输入。我用Camerons的想法把自由光束移到它们不重叠为止。

代码语言:javascript
复制
int j,m,b,k,d,l;
float w,c,h,x,y,z;
float v[],p[],g[];
void setup(){
j=m=d=0;
c=z=0;
String i[]= loadStrings("f.txt");
i[0]=i[0].replace("[","").replace("]","");
String o[]=split(i[0],',');
v=new float[o.length];
p=new float[o.length-1];
for(String s:o){if(!s.equals("")){v[j]=Float.parseFloat(s);}j++;}
w=v[0];
size((int)w*3,(int)w*3);
h=w*.75;
l=v.length;
noLoop();
}

void draw()
{
  translate(w/2,height);
  scale(1,-1);
  rect(0,0,w,w);
  if(l>2) 
  {
    while(m<j-1)
    {
      m+=2;
      c+=v[m];
    }
  }
  if(c>16)
  {
    ellipse(w+h,h,2*h,2*h);
    rect(w/2,w,1,h);
  }
  else
  {
    ellipse(w/2,w+h,2*h,2*h);
    rect(w/2,w,1,h);
    b=16;m=1;
    stroke(#1500ff);
    if(l>2)
    { 
      while(m<j)
      {
        p[m-1] = cos(v[m]) * h;
        p[m] = sin(v[m]) * h;
        strokeWeight(v[m+1]);
        line(w/2,w+h,p[m-1]+w/2,p[m]+w+h);
        b-=v[m+1];
        m+=2;
      }
    }
    strokeWeight(1);
    c=(PI*2)/b;
    k=b;
    g=new float[b+b];
    while(b>0)
    {
      g[d] = cos(z+c*b) * h;
      g[d+1] = sin(z+c*b) * h;
      m=0;
      if(l>2)
      {
        while(m<j-1)
        {
          if(abs(g[d]-p[m])<.1 && abs(g[d+1]-p[m+1])<.1)
          {
            b=k+1;
            z=z+.1;
            d=-2;
            break;
          }
          m+=2;
        }
      }
      b--;
      d+=2;
    }
    d--;
    while(d>0)
    {
      line(w/2,w+h,g[d]+w/2,g[d-1]+w+h);
      d-=2;
    }
  }
    stroke(#000000);
    fill(#000000);
    ellipse(w/2,w+h,w/9,w/9);
}

示例:

100,[0.785398,3,5.23598 5]

100,[]

100,[1.72398 12,5.23598 5]

获取处理这里

票数 4
EN

Code Golf用户

发布于 2014-10-18 06:17:44

Python,878 chars

这球打得不好,但我想看看这个洞的答案。

代码语言:javascript
复制
import matplotlib.pyplot as P
from math import *
L=len
M=min
Y=P.plot
K=P.Circle
Z=P.gcf().gca().add_artist
f=sin
g=cos
k={'color':(0,0,0)}
j={'color':(.16,0,1)}
def Q(S,C):
    P.axis([-S,S*2.5,0,S*3.5],**k)
    Y([0,S,S,0,0],[0,0,S,S,0],**k)
    Y([S/2,S/2],[S,7*S/4],**k)
    Z(K([S/2,7*S/4],S/20,**k))

    k['fill']=False

    A,B=zip(*C)

    N=16-sum(B)
    if N<0:
        Z(K([7*S/4,3*S/4],3*S/4,**k))
        
    else:
        Z(K([S/2,7*S/4],3*S/4,**k))
        if L(C)==0:
            D(16,0,S)
        elif L(C)==1:
            D(N,A[0],S)
            Y([S/2,S/2+3*S*g(A[0])/4],[7*S/4,7*S/4+3*S*f(A[0])/4],linewidth=B[0],**j)
        else:
            for c in C:
                Y([S/2,S/2+3*S*g(c[0])/4],[7*S/4,7*S/4+3*S*f(c[0])/4],linewidth=c[1],**j)
            D(N,J(N,A),S)
    P.show()


def J(N,A):
    T=d=0
    t=2*pi/N
    while d<0.1:
        T+=0.1
        d=M(M(a-T-floor((a-T)/t)*t for a in A),\
            M(T+ceil((a-T)/t)*t-a for a in A))
    return T


def D(N,I,S):
    a=I
    for i in range(N):
        Y([S/2,S/2+3*S*g(a)/4],[7*S/4,7*S/4+3*S*f(a)/4],**j)
        a+=2*pi/N

和一些样本输出

代码语言:javascript
复制
Q(100,[[pi/4,6],[-4.2*pi/8,1]])
代码语言:javascript
复制
Q(100,[[0.785398,10],[5.23598,7]])
代码语言:javascript
复制
Q(100,[[pi/4,3],[pi/2,3],[3*pi/2,2],[5*pi/4,2]])
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/39748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档