Tamagotchi và Giga Thú cưng là những thiết bị điện tử nhỏ mô phỏng một thú cưng ảo nhỏ. Thú cưng này có một số chỉ số, như sức khỏe, đói, v.v.
Gần đây tôi đã viết ví dụ này:
import msvcrt,os,sys;d=m=100;h=s=t=p=0;f=10
while 1:
os.system('cls'if os.name=='nt'else'clear');print("health:",d,"\nhunger:",h,"\nsleep:",s,"\nfood:",f,"\npotions:",p,"\nmoney:",m);t+=1
if msvcrt.kbhit():
k=ord(msvcrt.getch())
if k==102 and h>8 and f:f-=1;h-=9
if k==115:s=0
if k==112 and p:p-=1;d+=9
if k==98 and m>8:m-=9;p+=1
if k==116 and m>8:m-=9;f+=1
if t>99:
t=0;h+=1;s+=1
if s>80:s=0;h+=9
if h>80:d-=1
if d<1:sys.exit(0)
if d>79:m+=1
Đây là một thú cưng ảo xương trần trong 467 byte! Sau đó tôi tự hỏi làm thế nào các chuyên gia golf mã có thể làm tốt, vì vậy bây giờ, thách thức.
Các thách thức
Tạo một chương trình theo dõi 6 số liệu thống kê của thú cưng ảo và cập nhật chúng theo thời gian và đáp ứng với đầu vào của người dùng. Các số liệu thống kê là: sức khỏe và tiền bạc (bắt đầu từ 100), thực phẩm (bắt đầu từ 10), và đói, ngủ và thuốc (bắt đầu từ 0).
Chương trình sẽ cập nhật các giá trị để đáp ứng với các sự kiện sau:
Mặc dù chương trình không nhận được đầu vào, nhưng nó sẽ thực hiện cập nhật theo các khoảng thời gian đều đặn (khoảng thời gian giữa các lần cập nhật không được ngắn hơn nửa giây cũng không dài hơn một giây). Mỗi bản cập nhật thực hiện như sau:
- Đói và ngủ mỗi lần tăng thêm 1.
- Nếu Hunger từ 80 trở lên, Sức khỏe giảm 1.
- Nếu Ngủ từ 80 trở lên, nó được đặt lại về 0 và Hunger tăng thêm 9.
- Nếu Sức khỏe từ 80 trở lên, Tiền tăng 1.
- Nếu Sức khỏe là 0, chương trình sẽ thoát.
Chương trình cũng phải phản hồi ngay lập tức khi người dùng nhấn phím sau (điều này có nghĩa là bạn sẽ cần sử dụng một tính năng ngôn ngữ hoặc thư viện có thể phát hiện một phím được nhấn và trả lời ngay lập tức, thay vì chỉ đọc từ đầu vào tiêu chuẩn), thực hiện các hành động sau:
f: Nếu Hunger lớn hơn 8 và Thực phẩm là khác không, thì Thực phẩm giảm 1 và Hunger giảm 9.s: Ngủ được đặt lại về 0.p: Nếu Độc dược lớn hơn 0, Độc dược giảm 1 và Sức khỏe tăng 9.b: Nếu Tiền lớn hơn 8, thì Tiền giảm 9 và Độc dược tăng thêm 1.t: Nếu Tiền lớn hơn 8, thì Tiền giảm 9 và Thực phẩm tăng thêm 1.
Bất cứ khi nào giá trị của các số liệu thống kê thay đổi, chúng phải được hiển thị trên màn hình trong biểu mẫu . Tất cả sáu số liệu thống kê phải được hiển thị bất cứ khi nào chúng thay đổi; và các số liệu thống kê trong màn hình phải được phân tách bằng dấu phẩy hoặc dòng mới.Stat: value
Thử thách này tuân theo các quy tắc golf-code thông thường : chương trình ngắn nhất tuân thủ các đặc điểm kỹ thuật ở trên sẽ thắng. (Lưu ý rằng như thường lệ, nếu ngôn ngữ mới hơn so với đối thủ, bài nộp phải được đánh dấu là không cạnh tranh.)
