Kiểm tra tính nguyên thủy tại producoria


13

Lý lịch

Vendoria là một trò chơi về lập trình. Người chơi phải sử dụng một dạng ngôn ngữ lập trình hai chiều để hoàn thành các nhiệm vụ. Nếu bạn chưa bao giờ nghe về nó, cách dễ nhất để học là thử một vài cấp độ đầu tiên của trò chơi.

Thử thách

Thử thách của bạn là tạo ra một chương trình kiểm tra tính nguyên thủy của một số.

Đầu vào sẽ là một loạt N đánh dấu màu xanh trong hàng đợi. Nếu N là số nguyên tố, thì chương trình của bạn sẽ chấp nhận nó (di chuyển robot đến đích). Nếu N là hợp số, thì chương trình của bạn sẽ từ chối nó (thả nó xuống sàn ở đâu đó).

Tùy chọn gửi

Vì đây là một thử thách phức tạp hơn so với thử thách điển hình của Nhà sản xuất, tôi đã quyết định cho phép nhiều cách hơn để gửi câu trả lời của bạn.

Vanilla

Tôi đã tạo một mức tùy chỉnh 13x13 để xây dựng và kiểm tra đệ trình. Mức độ thử nghiệm tùy chỉnh như sau.

Mức tùy chỉnh 13x13

Trò chơi chỉ cho phép 8 trường hợp thử nghiệm ở cấp độ tùy chỉnh, nhưng về mặt lý thuyết, bạn có thể xử lý bất kỳ số tự nhiên N nào, chỉ giới hạn bởi bộ nhớ khả dụng. Đối với mục đích thông tin, các trường hợp thử nghiệm được cung cấp ở cấp độ tùy chỉnh như sau:

1 -> reject
2 -> accept
4 -> reject
5 -> accept
7 -> accept
9 -> reject
11-> accept
15-> reject

Lưới mở rộng

Một số người dùng có thể muốn nhiều phòng hơn lưới 13x13. Đây là liên kết đến cấp tùy chỉnh 15x15 trong trò chơi, được tạo bằng cách thay đổi số trong URL:

Mức tùy chỉnh 15x15

Đáng buồn thay, các mức tùy chỉnh lớn hơn không hoạt động, vì các ô bổ sung không thể truy cập được.

Nhà sản xuất Esolang

Đã có sự thích nghi của Vendoria thành ngôn ngữ dựa trên ASCII. Nếu bạn muốn một cách khác để thiết kế / kiểm tra sáng tạo của mình hoặc nếu bạn không thể phù hợp với giải pháp cuối cùng của mình trên bảng trò chơi, bạn có thể sử dụng esolang này. Bạn có thể tìm thấy thông tin về esolang này tại đây:

Xưởng sản xuất esolang

Có một vài điểm khác biệt giữa esolang và game thực tế. Ví dụ, băng chuyền được xử lý khác nhau. Cố gắng tránh lợi dụng những khác biệt này.

Một cách nhanh hơn để kiểm tra

Trò chơi rất chậm khi nói đến các chương trình cần vài nghìn bước để hoàn thành. Giải pháp bằng chứng về khái niệm của tôi đã mất 28042 bước để từ chối 15. Ngay cả ở tốc độ tăng tốc 50 lần trong trò chơi, việc đó chỉ mất quá nhiều thời gian.

Tôi tìm thấy trang web này rất hữu ích . Chỉ cần sao chép-dán liên kết đến câu trả lời của bạn và bạn có thể kiểm tra câu trả lời của mình bằng các đầu vào cụ thể. Quá trình 28042 bước diễn ra trong một giây.

Một điều cần lưu ý là nó thường sẽ nói một cái gì đó như "được chấp nhận không chính xác" ngay cả khi máy của bạn hoạt động tốt. Điều này là do trang web chỉ biết các trường hợp thử nghiệm. Ví dụ, nó sẽ nói rằng giải pháp của tôi "chấp nhận không chính xác" số 3, mặc dù máy của tôi thực sự đúng.

Làm thế nào để chiến thắng

Tiêu chí chấm điểm là số phần (ô chiếm). Đây là mã golf, vì vậy bài nộp với ít phần nhất sẽ thắng.

Đối với những người quan tâm, giải pháp điểm chuẩn của tôi có 96 phần và phù hợp với lưới 13x13. Tìm kiếm một thuật toán tốt hơn có thể dẫn đến những cải tiến khổng lồ, vì tôi biết tôi đã sử dụng một thuật toán tối ưu phụ.

Câu trả lời:


10

53 phần - lưới 11x11

Tôi mới học chơi Xưởng 2 ngày trước, nên có lẽ nó không được tối ưu hóa cho lắm, nhưng ít nhất nó cũng giải quyết được vấn đề. Nó thực hiện phân chia thử nghiệm tất nhiên, thông qua phép trừ lặp đi lặp lại. Tất cả các ước số từ 2 đến N-1 đều được kiểm tra. Độ phức tạp thời gian nên là O (N ^ 3), tôi tin.

Giải pháp 53 mảnh

Liên kết giải pháp

Tôi đã rất thất vọng khi phải sử dụng băng chuyền :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.