To ja. Cave Johnson.
Jest 21 maja. Pracujesz w Aperture Science, najlepszej firmie na Ziemi, a jutro wypuszczamy wersję 3.0 naszego flagowego systemu okien (lub WindowS ): CavOS. Niestety, jutro rano nasz główny konkurent wypuszcza również wersję 3.0 swoich WindowS !
Cave Johnson, dyrektor generalny wyciekł do mnie, że konkurencyjny WindowS ma jedną cechę, której brakuje w CavOS: grę w Klondike Solitaire. Ja, Cave Johnson, obawiam się, że to pominięcie doprowadzi do drastycznie niższej sprzedaży. Jako taki, ja, Cave Johnson, opracowałem konkurs między stażystami programistycznymi, aby stworzyć grę w pasjansa. Programista, którego wpis zostanie wybrany, będzie mógł dołączyć do ekscytującego projektu AI GlaDOS.
Ja, Cave Johnson, mam kilka wymagań:
- Ze względu na fakt, że Oprogramowanie musi zostać wysłane jutro, zostanie wybrany najkrótszy program, który będzie pasował do wolnych sektorów już wydrukowanych, obrazowanych dyskietek.
Nie martw się o rozgrywkę. Nasi klienci mają drukarki, prawda? Wszystko czego potrzebuję, to twój program do stworzenia listy pokazującej: Kolejność kart w talii i zawartość każdego z 7 stosów. Talia zostanie rozdana z góry. Stosy będą widoczne od dołu. Używaj skrótów H, D, C, S dla kier, karo, trefl i pik. Używaj skrótów K, Q, J, A dla króla, królowej, waleta i asa. Każda karta powinna być oddzielona spacją. Pierwsza linia powinna pokazywać talię, druga karta pierwszego i najmniejszego stosu, trzecia karta drugiego stosu i tak dalej. Jeśli chcesz, możesz użyć T zamiast 10.
Robimy tutaj lemoniadę - nie ssiemy cytryn. Ja, Cave Johnson, nie lubię przegrywać, podobnie jak nasi klienci. Każda gra musi być możliwa do wygrania
Gra musi być losowa. Żadna próba zakodowania jednej gry. Możliwe jest 7000 bilionów możliwych rąk Klondike, a około 90% z nich można wygrać. Byłbym zadowolony z programu, który może wyprodukować 256 lub więcej różnych rąk. Jeśli twój język nie ma możliwości uzyskania losowych liczb (z timera lub podobnego), to załóż, że możesz otrzymać ziarno w sposób odpowiedni dla twojego języka.
Nasi klienci są dość sprytni. Załóżmy, że grają w Draw 3, bez ograniczeń czasowych w talii
W imieniu wszystkich (i wszystkiego) w Aperture życzę wszystkim powodzenia. Liczymy na ciebie.
„ Caroline? Jak mam zamknąć to cholerstwo? ”
Poza charakterem: przyjmij zasady Windows, Draw 3, Solitaire Not-vegas. Próbowałem przecinać każde t i kropkę co I, ale pytam, czy masz jakieś pytania. Powodzenia.
Przykładowe dane wyjściowe:
5H AS 7C 8S QH ...
AH
JS 10S
JC JH 7C
9D AC 8D 7C
.
.
.
Odpowiedzi:
Brainfuck -
15751365Okropnie nadużywam minimalnej liczby unikalnych ofert. To da dokładnie 256 różnych wyników. Akceptuje jeden bajt danych wejściowych jako losowe źródło.
Zdecydowanie można by go bardziej skondensować, ale taka jest natura tego języka. Jest to szybkie i brudne i działa.
Przykładowe dane wyjściowe (dane wejściowe = 98):
Jest całkiem intuicyjne, że wszystkie pokłady tego formatu można wygrać.
źródło