finish extra/dont-get-volunteered
Submitting solution... Submission: SUCCESSFUL. Completed in: 2 hrs, 56 mins, 6 secs.
This commit is contained in:
parent
7ff98387b8
commit
3bbc57e4ae
@ -99,3 +99,6 @@ CFcSBwgCCBoHRhkKU1cGAA4AGU5YQR5THBwNFwoGGAxTQQMQVBUSBg4EAAwQRhUQVBUHFAQTGRpT QQM
|
||||
|
||||
### gearing-up-for-destruction
|
||||
* Completed in: 1 hr, 19 mins, 28 secs.
|
||||
|
||||
### dont-get-volunteered
|
||||
* Completed in: 2 hrs, 56 mins, 6 secs.
|
||||
|
||||
46
extra/dont-get-volunteered/solution.py
Normal file
46
extra/dont-get-volunteered/solution.py
Normal file
@ -0,0 +1,46 @@
|
||||
def solution(src, dest):
|
||||
unvisited = [i for i in range(64)]
|
||||
curr_stage = set([src])
|
||||
moves = 0
|
||||
while dest not in curr_stage:
|
||||
next_stage = set()
|
||||
for curr in curr_stage:
|
||||
next_stage.update(possible_next_position(curr))
|
||||
moves += 1
|
||||
curr_stage = next_stage
|
||||
return moves
|
||||
|
||||
def possible_next_position(curr):
|
||||
result = []
|
||||
if curr % 8 >= 1:
|
||||
if curr / 8 >= 2:
|
||||
result += [curr-17]
|
||||
if curr / 8 <= 5:
|
||||
result += [curr+15]
|
||||
if curr % 8 >= 2:
|
||||
if curr / 8 >= 1:
|
||||
result += [curr-10]
|
||||
if curr / 8 <= 6:
|
||||
result += [curr+6]
|
||||
if curr % 8 <= 5:
|
||||
if curr / 8 >= 1:
|
||||
result += [curr-6]
|
||||
if curr / 8 <= 6:
|
||||
result += [curr+10]
|
||||
if curr % 8 <= 6:
|
||||
if curr / 8 >= 2:
|
||||
result += [curr-15]
|
||||
if curr / 8 <= 5:
|
||||
result += [curr+17]
|
||||
return set(result)
|
||||
|
||||
|
||||
tests = [
|
||||
([0, 1], 3),
|
||||
([19, 36], 1),
|
||||
([0, 0], 0),
|
||||
]
|
||||
|
||||
for i, o in tests:
|
||||
result = solution(*i)
|
||||
print(i, result == o, result, o)
|
||||
Loading…
x
Reference in New Issue
Block a user