首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帮我关上盒子

帮我关上盒子
EN

Code Golf用户
提问于 2016-01-31 21:22:03
回答 1查看 2.6K关注 0票数 13

这一挑战的灵感在发帖时应该是非常明显的。

任务

您必须创建一个关闭的Box样式的程序(不是函数,程序)。关闭盒子的基本方法是:

玩家试图通过转动一组标有1-9的杠杆来关闭盒子.他们必须通过翻转杠杆来做到这一点。每个回合的事件顺序如下:

  1. 显示了杠杆的当前位置。
    • 在新游戏中,杠杆的位置应该显示为123456789
    • 在有关闭杠杆的游戏中,所有关闭杠杆都显示为-。例如,在关闭1、5和9的游戏中,输出将是-234-678-

  2. di(c)e (is\x)是滚动的。
    • 如果第7、8和9杆全部关闭,则只会抛出一个六面死亡。否则,将掷出两个六面骰子.

  3. 提示玩家选择他们希望翻转的杠杆数。
    • 如果玩家选择一个数字>9或<0,游戏就结束了。
    • 如果玩家选择一个已经关闭的杠杆,游戏就结束了。

  4. 玩家选择这么多的杠杆。
    • 如果杠杆之和不等于抛出的di(c)e的值,则游戏结束。

  5. 如果所有的杠杆都关了恭喜你赢了。否则,返回到步骤1。

程序

规则

  • 在每一回合,你应该输出当前位置的杠杆。
  • 您必须用短语You rolled: (注意空格)输出滚的值。
  • 您必须提示(并等待)使用短语How many levers to flip: (注意空格)切换杠杆的数量。
  • 您必须提示(并等待)尽可能多的杠杆与球员指定的短语Which lever to flip: (注意空格)。
  • 你必须翻转指定的杠杆。
  • 如果游戏结束时,您必须输出Game Over
  • 如果玩家在没有打开杠杆的情况下完成转弯,则必须输出You win!

示例游戏

代码语言:javascript
复制
123456789
You rolled: 5
How many levers to flip: 5
Which lever to flip: 1
Which lever to flip: 2
Which lever to flip: 3
Which lever to flip: 4
Which lever to flip: 5
Game Over
代码语言:javascript
复制
123456789
You rolled: 5
How many levers to flip: 3
Which lever to flip: 2
Which lever to flip: 2
Which lever to flip: 1
Game Over
代码语言:javascript
复制
123456789
You rolled: 12
How many levers to flip: 2
Which lever to flip: 3
Which lever to flip: 9
12-45678-
You rolled: 6
How many levers to flip: 2
Which lever to flip: 2
Which lever to flip: 4
1---5678-
You rolled: 11
How many levers to flip: 2
Which lever to flip: 5
Which lever to flip: 6
1-----78-
You rolled: 8
How many levers to flip: 1
Which lever to flip: 8
1-----7--
You rolled: 8
How many levers to flip: 2
Which lever to flip: 1
Which lever to flip: 7
---------
You win!
EN

回答 1

Code Golf用户

发布于 2016-02-01 19:01:04

Python 3,348

由于保存了5个字节。

由于DSM保存了7个字节。

噢,这是一个很长的时间。我也讨厌没有一个好的方法来做测试用例。

代码语言:javascript
复制
from random import*
*l,='123456789'
q=['-']*9
r=randint
p=print
f=' to flip: '
while l!=q:
 p(*l,sep='');t=r(1,6)+r(1,6)*(l[6:]!=q[6:]);p('You rolled: %s'%t);d={int(input('Which lever'+f))for _ in' '*int(input('How many levers'+f))}
 if len(set(d))-len(d)+1-all(str(x)in l for x in d)+t-sum(d):exit('Game Over')
 for x in d:l[x-1]='-'
p('You win!')
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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