Giấc mơ Solitaire - Tạo ra một ván bài bắt đầu có thể thắng


13

Tôi đây. Hang Johnson.

Đó là ngày 21 tháng 5. Bạn đang làm việc tại Aperture Science, công ty tốt nhất trên Trái đất và ngày mai chúng tôi sẽ phát hành Phiên bản 3.0 của hệ thống cửa sổ hàng đầu của chúng tôi (hoặc WindowS ): CavOS. Thật không may, sáng mai, đối thủ cạnh tranh chính của chúng tôi cũng sẽ phát hành Phiên bản 3.0 của WindowS của họ !

Cave Johnson, CEO của tôi đã bị rò rỉ rằng WindowS cạnh tranh có một tính năng mà CavOS thiếu: Trò chơi Klondike Solitaire. Tôi, Cave Johnson, lo ngại rằng thiếu sót này sẽ dẫn đến doanh số thấp hơn đáng kể. Như vậy, tôi, Cave Johnson, đã nghĩ ra một cuộc cạnh tranh giữa các thực tập viên lập trình để tạo ra một trò chơi Solitaire. Lập trình viên có mục được chọn sẽ có cơ hội tham gia dự án GlaDOS AI thú vị.

Tôi, Cave Johnson, có một vài yêu cầu:

  • Do phần mềm phải xuất xưởng vào ngày mai, chương trình ngắn nhất sẽ được chọn sao cho phù hợp với các lĩnh vực dự phòng của các đĩa mềm đã được in, được in.
  • Đừng lo lắng về lối chơi. Khách hàng của chúng tôi có máy in không? Tất cả những gì tôi cần là cho chương trình của bạn tạo ra một danh sách hiển thị: Thứ tự các thẻ trong bộ bài và nội dung của mỗi trong số 7 cọc. Bộ bài sẽ được xử lý từ đầu. Các cọc sẽ được nhìn thấy từ phía dưới. Sử dụng các chữ viết tắt H, D, C, S cho Trái tim, Kim cương, Câu lạc bộ và Spades. Sử dụng các chữ viết tắt K, Q, J, A cho King, Queen, Jack và Ace. Mỗi thẻ nên được phân cách bằng một khoảng trắng. Dòng đầu tiên sẽ hiển thị bộ bài, thẻ thứ hai của cọc thứ nhất và nhỏ nhất, thẻ thứ ba của cọc thứ hai, v.v. Bạn có thể sử dụng T thay vì 10 nếu bạn muốn.

  • Chúng tôi đang làm nước chanh ở đây - không hút chanh. Tôi, Cave Johnson, không thích thua cuộc, và khách hàng của chúng tôi cũng vậy. Mỗi trò chơi phải có thể thắng được

  • Trò chơi phải được chọn ngẫu nhiên. Không cố mã hóa một trò chơi duy nhất. Có 7000 nghìn tỷ tay Klondike có thể, và khoảng 90% trong số đó là có thể thắng được. Tôi rất vui với một chương trình có thể tạo ra 256 bàn tay khác nhau. Nếu ngôn ngữ của bạn thiếu cách lấy số ngẫu nhiên (từ đồng hồ bấm giờ hoặc tương tự), thì giả sử rằng bạn có thể lấy hạt giống theo cách phù hợp với ngôn ngữ của mình.

  • Khách hàng của chúng tôi là hợp lý thông minh. Giả sử khả năng thắng được khi họ chơi Draw 3, không giới hạn thời gian qua bộ bài

Thay mặt mọi người (và tất cả mọi thứ) tại Aperture, tôi chúc bạn may mắn. Chúng tôi đang tin tưởng vào bạn.

" Caroline? Làm thế nào để tôi tắt thứ chết tiệt này đi? "


Hết nhân vật: giả sử các quy tắc của Windows, Draw 3, Not-vegas solitaire. Tôi đã cố gắng vượt qua mọi t và chấm mỗi i, nhưng hỏi xem bạn có câu hỏi nào không. Chúc may mắn.

Ví dụ đầu ra:

5H AS 7C 8S QH ...    
AH    
JS 10S    
JC JH 7C    
9D AC 8D 7C     
.    
.    
.

Chúng tôi có thể sử dụng 'T' cho 10, vì vậy mỗi thẻ có 2 ký tự không?
captncraig

Tôi nghĩ rằng khách hàng của chúng tôi đủ thông minh để đi cho điều đó. Tôi sẽ thêm nó vào mô tả.
lochok

Câu trả lời:


10

Brainfuck - 1575 1365

Tôi đang lạm dụng khủng khiếp số lượng tối thiểu của các giao dịch độc đáo. Điều này sẽ tạo ra chính xác 256 đầu ra khác biệt. Nó chấp nhận một byte đầu vào là hạt giống ngẫu nhiên của nó.

,>++++[>++++++<-]<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>>[<+<<+>>>-]>[-]<
<-[>+<-]<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>[-]>[-]>[<<<+>>>-]>[-]+[>+<
+++++]>+++++[>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>
>+>>+>>+>>+>>+[<<]>-]>>>>>>>>>+>>+>>+>>+>++++++[>++++>>++++>>++++>>+++
+>>+++>>+++>>+++>>+++>>++++>>++++>>++++>>++++>>+++>>+++>>+++>>+++<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<-]>++++>>++++>>++++>>++++>>>>>>>>>>+>>+>>+>>
+>>+>>+>>+>>+[<<]>>[>+<-<+>]>[<+>-]<<+++++++++++[>>+>>+>>+>>+>>+>>+>>+
>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+[<<]>>-]>>>>+>>++++
+>>++++++++++++++++>>>>+>>+++++>>++++++++++++++++>>>>+>>+++++>>+++++++
+++++++++>>>>+>>+++++>>++++++++++++++++>>>>+>>+++++>>++++++++++++++++>
>>>+>>+++++>>++++++++++++++++[<<]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[>[<<+>>-
]<[>+<-]>>[<<+>>-]<-[>+<-]>]>.[-]>.[-]>[[<<<<+>>>>-]>]<<<<<[<<]<++++[>
++++++++<-]>.[-]<<<[>>>+<<<-]>>>[>[<<+>>-]<[>+<-]>>[<<+>>-]<-[>+<-]>]>
.[-]>.[-]>[[<<<<+>>>>-]>]<<++++[>++++++++<-]>.[<<<+>>>-]<<<<<[.[-]>.[-
]>.[<<+>>-]<<<<]>>[>+>++>++<<<-]++++++++++.>>+>+++<.>.<<<.>>----------
-----.+>.<<.>.+>.<<<.>>.+>.<<.>.+>.<<.>.+>.<<<.>>.>.<<.>++++++++++.>+.
<<.>---------------.+>.<<.>.+>.<<<.>>.+>.<<.>.+>.<<.>.+>.<<.>.+>.<<.>+
++++++++.>++++.<<<.>>---------------.+>.<<.>.+>.<<.>.+>.<<.>.+>.<<.>.+
>.<<.>.+>.<<<.>>+++++++++.>+++++++++++.<<.>---------------.+>.<<.>.+>.
<<.>.+>.<<.>.+>.<<.>.+>.<<.>.+>.<<.

Chắc chắn có thể được cô đọng nhiều hơn, nhưng đó là bản chất của ngôn ngữ. Điều này là nhanh chóng và bẩn, và nó hoạt động.

Ví dụ đầu ra (đầu vào = 98):

8H 9S KS KH KD KC QS QH QD QC JS JH JD JC TS TH TD TC 9H 9D 9C 8S 8D 8C 
AC
2C 3C
4C 5C 6C
7C AD 2D 3D
4D 5D 6D 7D AH
2H 3H 4H 5H 6H 7H
AS 2S 3S 4S 5S 6S 7S 

Nó khá trực quan rằng tất cả các sàn của định dạng này có thể giành chiến thắng.


2
Codegolf tuyệt vời giải pháp uốn quy tắc điển hình. Và nó thậm chí là Brainfuck - cũng được thực hiện!
schnaader
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.