这个挑战的目标是编写程序或函数,返回完成给定课程所需的最少数量的罢工。
-1 (或者您选择的任何其他不正确的值,而这些值不会被退还给一门不可战胜的课程)。在这个例子中,位置不是基于0的,X/Y,从左到右,自上而下,但是你可以使用任何你喜欢的格式,因为结果是完全独立于格式的。
输入:
###########
# ....#
# ...#
# ~ . #
# ~~~ . #
# ~~~~ #
# ~~~~ #
# ~~~~ o #
# ~~~~ #
#@~~~~ #
###########
Ball (Start-Position): 1/9
Hole (End-Position): 8/7输出:
8
该课程可包括以下几个领域:
'@'球-课程的开始'o'洞-课程目标'#'墙-当球撞到墙上时会停止。'~'水-必须避免'.'沙球会立即停在沙子上' '冰球会继续滑行,直到碰到什么东西。游戏的基本规则和限制:
课程1 (2次罢工)
####
# @#
#o~#
####课程2(不可能)
#####
#@ #
# o #
# #
#####课程3 (3次罢工)
~~~
~@~
~.~
~ ~
~ ~
~ ~
~ ~
~.~
~o~
~~~课程4 (2次罢工)
#########
#~~~~~~~#
#~~~@~~~#
## . ##
#~ ~ ~ ~#
#~. o .~#
#~~~ ~~~#
#~~~~~~~#
#########课程5(不可能)
~~~~~~~
~... ~
~.@.~.~
~... ~
~ ~ ~.~
~ . .o~
~~~~~~~发布于 2018-03-29 13:19:10
def p(g,c,d,k=0):
while 1>k:c+=d;k=g.get(c,9)
return-(k==2)or c-d*(k==3)
def f(g):
c={q for q in g if g.get(q,9)>4};I=0;s=[c]
while all(g.get(q,9)-4for q in c):
c={k for k in{p(g,k,1j**q)for k in c for q in range(4)}if-~k}
if c in s:return-1
s+=[c];I+=1
return I-41个字节,这要归功于ovs
-1字节,多亏了Jonathan Frech
https://codegolf.stackexchange.com/questions/160623
复制相似问题