Rozważ 15 wzorców kart do gry ASCII (as od Jokera i odwrotna strona), gdzie X
jest symbol zastępczy symbolu koloru : (wyglądają lepiej przy mniejszych odstępach między wierszami)
------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- -------------
|AX | |2X | |3X | |4X | |5X | |6X | |7X | |8X | |9X | |10X | |JX | |QX | |KX | |J | |* * * * * * *|
| ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | |O ------- | | * * * * * * |
| | | | | | | | | | | | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X | | | |X | | | |X | | |K | | | |* * * * * * *|
| | | | | | X | | | | X | | | | | | | | | | | | | | | | X | | | | X | | | | | | | | X | | | | | | | | | | | | | | |E | J | | | * * * * * * |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |X X| | | |X X| | | | | | | | | | | | | | |R | O | | |* * * * * * *|
| | X | | | | | | | | X | | | | | | | | X | | | |X X| | | |X X| | | |X X| | | | X | | | | | | | | J | | | | Q | | | | K | | | | K | | | * * * * * * |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |X X| | | |X X| | | | | | | | | | | | | | | | E | J| |* * * * * * *|
| | | | | | X | | | | X | | | | | | | | | | | | | | | | | | | | X | | | | | | | | X | | | | | | | | | | | | | | | | R | O| | * * * * * * |
| | | | | | | | | | | | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | | X| | | | X| | | | X| | | | | K| |* * * * * * *|
| ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- E| | * * * * * * |
| XA| | X2| | X3| | X4| | X5| | X6| | X7| | X8| | X9| | X10| | XJ| | XQ| | XK| | R| |* * * * * * *|
------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- -------------
Napisz program, który pobiera ciąg znaków oznaczający rozdzieloną spacjami sekwencję kart, używając ...
A 2 3 4 5 6 7 8 9 10 J Q K
a następnie jeden zC D H S
(dla trefl, karo, kier i pik) dla 52 standardowych kart.- Pojedynczy
R
dla Jokera. - Singiel
B
na odwrocie (karta zakryta).
Więc ciąg B AS KH 10C R JD
oznacza zakrytą kartę, a następnie as pik, a następnie króla kier, następnie dziesiątkę trefl, a następnie Jokera, a następnie walet karo.
Twój program musi wydrukować odpowiednie karty do gry ASCII na standardowe wyjście, zastępując jeX
odpowiedni symbol koloru.
Na przykład wynikiem B AS KH 10C R JD
byłoby
------------- ------------- ------------- ------------- ------------- -------------
|* * * * * * *| |AS | |KH | |10C | |J | |JD |
| * * * * * * | | ------- | | ------- | | ------- | |O ------- | | ------- |
|* * * * * * *| | | | | | |H | | | |C C| | |K | | | | |D | |
| * * * * * * | | | | | | | | | | | C | | |E | J | | | | | |
|* * * * * * *| | | | | | | | | | |C C| | |R | O | | | | | |
| * * * * * * | | | S | | | | K | | | | | | | | K | | | | J | |
|* * * * * * *| | | | | | | | | | |C C| | | | E | J| | | | |
| * * * * * * | | | | | | | | | | | C | | | | R | O| | | | |
|* * * * * * *| | | | | | | H| | | |C C| | | | | K| | | D| |
| * * * * * * | | ------- | | ------- | | ------- | | ------- E| | ------- |
|* * * * * * *| | SA| | HK| | C10| | R| | DJ|
------------- ------------- ------------- ------------- ------------- -------------
Możesz pobrać dane wejściowe ze standardowego wejścia lub napisać funkcję, która pobiera ciąg znaków.
Zgłoszenie z najmniejszą liczbą znaków wygrywa.
Premia: Odejmij 30 od liczby postaci, jeśli użyjesz czarnych symboli koloru Unicode ♣ ♦ ♥ ♠
zamiast C D H S
na wyjściu. (Dane wejściowe zawsze są używaneC D H S
.)
Notatki
- W ciągu wejściowym może znajdować się więcej niż 54 karty i mogą być duplikaty dowolnej karty.
- Jeśli dane wejściowe to pusty ciąg, nie powinno być żadnych danych wyjściowych.
- Nie powinno być żadnych końcowych spacji poza (opcjonalnie) dwoma, które tworzą prawe rogi ostatniej karty.
- Możesz założyć, że dane wejściowe są prawidłowe.
- Aktualizacja: Prawa dolna etykieta na standardowych kartach została odwrócona, więc wartość znajduje się w rogu. Etykieta w prawym dolnym rogu Jokera się nie zmieniła.
źródło
Odpowiedzi:
JavaScript (E6) 542 (572 - bonus 30)
553 564 5763 rodzaje kształtów:
The
z
String (skompresowany) zawiera podstawowe cegiełki dlaBonus pamiętać Kod wygranej premię 30 punktów wynosi 29 znaków.
Testuj w konsoli FireFox / FireBug
Wynik
Kod nie golfowy
źródło
C # - 906
Raczej duży i prosty program w języku C #, który przenosi wejścia i wyjścia wiersza poleceń na standardowe wyjście. Prawdopodobnie jest wiele rzeczy do gry w golfa, zauważyłem kilka nudnych bajtów podczas pisania tego, ale to będzie musiało poczekać. Nie sądzę, że wybiorę premię za postać w kolorze Unicode.
Kod do gry w golfa:
Przykładowe dane wyjściowe dla
cardGolf.exe 7H QH 3S B R
Większość renderowania odbywa się za pomocą
P
anonimowej metody, która przyjmuje pozycję, długość, ciąg znaków i szerokość i renderuje prostokąt końca łańcucha na końcu. Na przykład tył karty jest właśnie"* "
powtarzany. MetodaT
anonimowa to zmodyfikowana wersja tego, którego użyłem w poprzednim zadaniu, która renderuje wiele prostokątów. Jest to jednak dość nieporęczne i pozwoliłoby mi renderować granice i tło w mniejszej liczbie bajtów, co prawdopodobnie nie jest tego warte. Rozłożona wersja usunięta dla liczby bajtów, zostawiam ją, ponieważ mogę go użyć i używam ich do testowania.T
IsW
która czyni komórki zamiast prostokątów, a także nie jest używany, ale inlined wersja służy do renderowania karty o wartości 2 przez 10. Należy zauważyć, że niewykorzystane kod byłProgram po prostu zapętla każdą linię wyjścia (13 z nich), a następnie renderuje kolejno każdą kartę, a następnie wyodrębnia z niej 1 plasterek, dzięki czemu każda karta jest renderowana w całości 13 razy. W celu ich rozmieszczenia każda karta jest traktowana jako blok 16 na 13 i przycinam każdą linię wyjścia, aby usunąć końcowe spacje (spacje narożne są usuwane).
Sformatowany kod z komentarzami i kodem koncepcyjnym / testowym:
źródło
PowerShell , wynik 442 = (
509495472 bajtów = (156 skrypt + archiwum 316) - 30 premii)Wypróbuj online!
Rozwinięty:
Skrypt PowerShell do utworzenia archiwum tar
t
(patrz TIO):źródło