首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打高尔夫球的比赛

打高尔夫球的比赛
EN

Code Golf用户
提问于 2014-03-15 15:08:49
回答 2查看 957关注 0票数 5

你必须按以下规格制作一款高尔夫球:

  1. 该字段为10×10字符,没有空格。
  2. 自由地用.表示
  3. 一个随机产生的洞(不是在0,0)用O (它的字母表而不是零)表示。
  4. 球从0,0开始,由X代表。
  5. 你可以用输入d4来击球(意思是指向底部的方向,球的大小为4个字符,更像是物理中的向量)。例子:X..................O得分:0b4,但是,由于你不太擅长打高尔夫球,所以你认为施加的力量往往只接近实际施加的力量!(如果x的偏移量为-2
  6. 你必须告诉所施加的真实力,并显示球像这样移动到真实力:-假设球实际移动了3。...X...............O评分:1外力:4实力:3四个方向为U (up), D (down), l (left), r (right),力的大小应在0~ 10之间(不包括0和10)。
  7. 球不应该从边缘弹出,如果力达到这个程度,球就会在边界的最后一点停止。R9............X .......................O评分:2外力:9实测力: 11
  8. 最后,当游戏结束时,您必须显示Par in <n> shots! (其中n是得分)。

编码:

  1. 你必须设计一个工作程序,显示准确的输出。
  2. golfedungolfed版本中发布代码。
  3. 还发布了一个成功的测试运行(如果可能的话,图片)。
  4. 没有使用函数或语言对此任务过于专门化(我不知道它们是否真的存在!)

获胜者:

获奖者将于一周后获选。胜利者是最少字符的投稿。

和,最重要的是

祝你好运:)

EN

回答 2

Code Golf用户

发布于 2014-03-18 00:25:25

Scala,605

高尔夫球:

代码语言:javascript
复制
import scala.util.Random;object G extends App{var b,h=(0,0);while(b==h)h =(Random.nextInt(10),Random.nextInt(10));var s=0;def f{for(y<- 0 to 9){for(x<- 0 to 9)print(if(b==(x,y))"X"else if(h==(x,y))"O"else ".");println};println("score : "+s)};f;while(b!=h){val i=readLine.split(" ");val x=i(1).toInt.ensuring(a=>a>0&&a<10)-1+Random.nextInt(3);b=i(0).toLowerCase match{case "d"=>(b._1,b._2+x) case "u"=>(b._1,b._2-x) case "r"=>(b._1+x,b._2) case "l"=>(b._1-x,b._2)};b=(b._1.min(9).max(0),b._2.min(9).max(0));s+=1;f;println("applied force : "+i(1));println("real force : "+x)};println("Par in "+s+" shots!")}

只是一个直接实施的破冰船。输入是从标准输入逐行读取和电源低于1或更高的9将导致AssertionError符合规格。

我很确定有较短的程序,但让我们看看我们有多远;-)

未高尔夫球:

代码语言:javascript
复制
import scala.util.Random

object Golf extends App {
  var b, h = (0, 0)
  while (b == h) h = (Random.nextInt(10), Random.nextInt(10))
  var s = 0

  def field {
    for (y <- 0 to 9) {
      for (x <- 0 to 9)
        print(if (b ==(x, y)) "X" else if (h ==(x, y)) "O" else ".")
      println
    }
    println("score : " + s)
  }
  field
  while (b != h) {
    val i = readLine.split(" ")
    val x = i(1).toInt.ensuring(a => a > 0 && a < 10) - 1 + Random.nextInt(3)
    b = i(0).toLowerCase match {
      case "d" => (b._1, b._2 + x)
      case "u" => (b._1, b._2 - x)
      case "r" => (b._1 + x, b._2)
      case "l" => (b._1 - x, b._2)
    }
    b = (b._1.min(9).max(0), b._2.min(9).max(0))
    s += 1
    field
    println("applied force : " + i(1))
    println("real force : " + x)
  }
  println("Par in " + s + " shots!")
}

随机示例运行:

X.O.........得分:0r8 .......OX.........得分:1外力:8实际力:8 L 1 .......OX.........得分:2外力:1实力:0 L 1 .......X.........得分:3加力:1真力:1杆3杆!

票数 2
EN

Code Golf用户

发布于 2014-03-19 02:56:43

Julia,427

从整体上讲,这是相当简单的。朱莉娅的设计并不是为了处理大量的I/O问题,因为她的目的是进行大规模的科学计算。但为了我们在这里的有限目的,她主动接受了一些斯迪奥,并和我们一起打了一场高尔夫球。

编辑:给自己增加两个字符,因为我省略了冒号后面的空格,以表示作用力和实际力量。

代码语言:javascript
复制
a=fill(".",10,10)
x,y,s,b,c=1,1,0,iceil(10rand()),iceil(10rand())
a[x,y],a[b,c]="X","O"
while(x,y)!=(b,c)
print(a)
m=readline(STDIN)
d,f=m[1],m[2]
o=(d in"Ul"?-1:d in "Dr"?1:0)
g=clamp(round((f-48)+4rand()-2),1,9)*o
a[x,y]="."
x,y=(d in "UD"?clamp(x+g,1,10):x),(d in "lr"?clamp(y+g,1,10):y)
a[x,y]="X"
s+=1
print("score : ",s,"\napplied force : ",f,"\nreal force    : ",abs(g),"\n")
end        
print(a,"\nPar in ",s," shots!")

这是一场典型的比赛,在这场比赛中,对我们的高尔夫球手来说,最后的推杆变成了一个越来越艰难的局面。

(请注意,我们的Ints偶尔会被转换为fly...ah上的浮动,这是动态类型的变幻莫测。)

代码语言:javascript
复制
X . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . O . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
STDIN> r5
score : 1
applied force : 5
real force    : 7.0
. . . . . . . X . .
. . . . . . . . . .
. . . . . . . . . .
. . . . O . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
STDIN> D3
score : 2
applied force : 3
real force    : 2.0
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . X . .
. . . . O . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
STDIN> l3
score : 3
applied force : 3
real force    : 3.0
. . . . . . . . . .
. . . . . . . . . .
. . . . X . . . . .
. . . . O . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
STDIN> D1
score : 4
applied force : 1
real force    : 2.0
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . O . . . . .
. . . . X . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
STDIN> U1
score : 5
applied force : 1
real force    : 2.0
. . . . . . . . . .
. . . . . . . . . .
. . . . X . . . . .
. . . . O . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
STDIN> D1
score : 6
applied force : 1
real force    : 1
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . X . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .

Par in 6 shots!
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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