Cuộc phiêu lưu của Golfer
Đây là thử thách đầu tiên! Sẽ có nhiều thử thách sau này sẽ yêu cầu dữ liệu từ thử thách trước đó :)
Chương 1: Chiếc bình
Hãy tưởng tượng một phút .. Bạn là một vị thần mạnh mẽ, sức mạnh của bạn là vô hạn nhưng đòi hỏi một điều: Linh hồn. Mỗi linh hồn ở đây được đại diện bởi một byte, mỗi byte bạn sử dụng sẽ hy sinh một linh hồn. Vì vậy, mục tiêu rõ ràng là cứu được số lượng người lớn nhất trong khi hy sinh ít linh hồn nhất.
Thử thách đầu tiên của bạn là cứu một ngôi làng nhỏ, ma quỷ sẵn sàng không phá hủy toàn bộ ngôi làng nếu bạn giải quyết thử thách của mình.
Các thách thức :
Bạn có một bình hoa thẳng đứng có thể chứa chính xác 10 thứ (Bao gồm không khí). Nếu bạn đặt một vật trong chiếc bình đó, lực hấp dẫn sẽ khiến vật đó rơi xuống đáy. Nếu chiếc bình đã đầy (và nó luôn đầy nếu bạn coi nó là "đầy không khí"), đầu vào sẽ thay thế phần tử ở trên cùng của chiếc bình.
Đây là tập hợp những thứ được phép:
- Không khí
0 / - Một hòn đá
1 / - - Một chiếc lá
2 / ~ - Một quả bom
3 / x
Nếu có một hòn đá hoặc một chiếc lá trên đỉnh "Bom", nó sẽ phát nổ và phá hủy thứ trên đỉnh của nó.
Đầu vào là danh sách những thứ bạn sẽ đặt trong chiếc bình mỗi lượt.
Ví dụ: 11231: Bạn sẽ đặt 2 hòn đá, rồi một chiếc lá, rồi một quả bom và cuối cùng là hòn đá cuối cùng.
Khi bình tĩnh, bạn có thể bắt đầu đếm theo quy tắc sau:
- Rock thêm 1 đơn vị vào bộ tích lũy
- Lá nhân số nhân với 2
- Bom giảm tích lũy bằng 1
- Không khí không làm gì cả
(Bạn cần bắt đầu đếm từ đỉnh của chiếc bình)
Đây là mô phỏng chúng tôi nhận được bằng cách sử dụng "11231" làm đầu vào:
|-| |-| |~| |x| |-| | | | | | | | | | | | |
| | |-| |-| |~| |x| |-| | | | | | | | | | |
| | | | |-| |-| |~| |x| |-| | | | | | | | |
| | | | | | |-| |-| |~| |x| |-| | | | | | |
| | | | | | | | |-| |-| |~| |x| |-| | | | |
| | | | | | | | | | |-| |-| |~| |x| |-| | |
| | | | | | | | | | | | |-| |-| |~| |x| | |
| | | | | | | | | | | | | | |-| |-| |~| |~|
| | | | | | | | | | | | | | | | |-| |-| |-|
| | | | | | | | | | | | | | | | | | |-| |-|
Và đầu ra sẽ là 2 (tính như ((0 x 2) + 1) + 1) Không cần in tất cả các trạng thái của chiếc bình!
Chương trình cơ sở (Python3)
Bạn có thể thực hiện nó để hiểu làm thế nào nó hoạt động.
def printVase(vase):
for i in vase:
if i == 1:
print("|-|")
elif i == 2:
print("|~|")
elif i == 3:
print("|x|")
else:
print("| |")
def updateVase(vase):
changed = False
for i in range(len(vase), -1, -1):
if i < len(vase) - 1:
if vase[i+1] == 3 and vase[i] in [1,2]:
vase[i], vase[i+1] = 0, 0
changed = True
if not vase[i+1] and vase[i] in [1, 2, 3]:
vase[i], vase[i+1] = vase[i+1], vase[i]
changed = True
return changed
userInput = input("Vase : ")
vase = [0 for i in range(0, 10)]
oldVase = vase
while updateVase(vase) or userInput != "":
if userInput != "":
vase[0] = int(userInput[0])
userInput = userInput[1::]
printVase(vase)
input()
accumulator = 0
for i in vase:
if i == 1:
accumulator += 1
if i == 2:
accumulator *= 2
if i == 3:
accumulator -= 1
print(accumulator)
Phiên bản được chơi gôn (Python3, không hiển thị bình hoa): 360 byte = 360 điểm
def u(v):
c=0
for i in range(len(v),-1,-1):
if i<len(v)-1:
if v[i+1]==3 and v[i]in[1,2]:v[i],v[i+1],c=0,0,1
if not v[i+1]and v[i]in[1,2,3]:v[i],v[i+1],c=v[i+1],v[i],1
return c
l,v=input(),[0 for i in range(0, 10)]
while u(v)or l!="":
if l!="":v[0],l=int(l[0]),l[1::]
a=0
for i in v:
if i==1:a+=1
if i==2:a*=2
if i==3:a-=1
print(a)
Nếu bạn muốn kiểm tra xem chương trình của bạn có hoạt động chính xác không, bạn có thể kiểm tra đầu vào này: 12122111131
Câu trả lời đúng là 43 :) (Cảm ơn Emigna)
Bây giờ cho các điểm:
- (x) điểm trong đó: x là lượng byte cần thiết để viết chương trình của bạn. Nếu bạn trả lời sau khi thử thách tiếp theo được đăng, điểm cho thử thách này sẽ không được thêm vào tổng số điểm của bạn.
Mục tiêu là giữ một số điểm tối thiểu trong toàn bộ thử thách :) Nếu bạn bỏ qua một trong những phần của thử thách, bạn sẽ có (wx + 1) điểm theo mặc định cho phần bị bỏ qua (trong đó wx là điểm kém nhất cho thử thách đó).
Dữ liệu sẽ được yêu cầu cho thử thách tiếp theo:
Đầu ra khi đầu vào = 10100000200 310310113030200221013111213110130332101
Quán quân hiện tại: Emigna
Chúc mọi người may mắn !
333xây dựng một chiếc bình [0, 0, 0, 0, 0, 0, 0, 3, 3, 3]trong thuật toán chơi gôn của bạn và do đó là một số điểm -3, nhưng không nên [0, 0, 0, 0, 0, 0, 0, 0, 0, 3]và sau đó là một điểm -1theo đặc điểm kỹ thuật của bạn?