Kasyno korzysta z następującej talii kart. ( *
To jeden z kombinezony karty D
, S
, C
lub H
).
_________ _________ _________ _________ _________
| | | | | | | | | |
| | | | | * | | * * | | * * |
| | | * | | | | | | |
| * | | | | * | | | | * |
| | | * | | | | | | |
| | | | | * | | * * | | * * |
|_________| |_________| |_________| |_________| |_________|
_________ _________ _________ _________ _________
| | | | | | | | | |
| * * | | * * | | * * | | * * | | * * |
| | | | | * * | | * * | | * * |
| * * | | * * * | | | | * | | * * |
| | | | | * * | | * * | | * * |
| * * | | * * | | * * | | * * | | * * |
|_________| |_________| |_________| |_________| |_________|
_________ _________ _________
| | | | | |
| * * | | * * | | * * * |
| * * | | * * * | | * * |
| * * * | | * * | | * * * |
| * * | | * * * | | * * |
| * * | | * * | | * * * |
|_________| |_________| |_________|
Po każdej nocy stare talie są odrzucane i krojone na pół, aby uniknąć ponownego użycia. W rezultacie kasyno ma duży pokój pełen ciętych połówek kart.
Niestety gospodarka jest zła, a kasyno ma kłopoty finansowe. Najbardziej rozsądną rzeczą, by zaoszczędzić pieniądze, jest recykling, więc właściciele kasyn decydują się skleić stare karty razem. Zatrudniają zespół, aby zbudował maszynę, która to zrobi.
Jesteś częścią zespołu, a Twoim zadaniem jest pomoc w identyfikacji karty.
Napisz program lub funkcję, która weźmie obraz ASCII karty w połowie w postaci łańcucha i zwróci ciąg tej karty.
Dane wejściowe to ciąg znaków 11 x 5 plus znaki podziału linii (CR, LF lub CRLF, wystarczy tylko jeden). W razie potrzeby możesz założyć końcowe białe znaki na końcu każdej linii wprowadzania. Dane wejściowe nie będą zawierały żadnych nieprawidłowych znaków (żadnych innych niż _|-HSCD
spacja i podział wiersza).
Połowa karty będzie wyglądać następująco:
_________
| |
| H H |
| H H H |
---H---H---
które powinny zostać określone jako Królowa Kier:
H12
Kasyno ma ograniczony budżet, więc jest to golf golfowy: wygrywa najkrótszy program.
źródło
H 12
?Odpowiedzi:
CJam,
16151312 bajtówSprawdź to tutaj.
Wyjaśnienie
Podstawową ideą jest takie manipulowanie łańcuchem, abyśmy mogli sprawić, że wbudowane w CJam kodowanie długości pracy będzie dla nas działać.
Przejdźmy przez przykład (ten z pytania). Łańcuch wejściowy to
Powtarzamy to dwa razy:
I usuń ostatni wiersz:
Następnie sortujemy ten ciąg. Na początku będzie zawierał kilka nowych linii, a następnie to (skrócone o kilka spacji, aby uniknąć poziomego paska przewijania):
Podczas gdy znak koloru będzie się różnić, zawsze będzie to duża litera, znaleziona w czwartym przebiegu posortowanego łańcucha (uwzględniającego nowy wiersz). Kiedy to zakodujemy, otrzymujemy
Więc wszystko, co musimy zrobić, to wybrać czwarty element i odwrócić go.
Oto podział rzeczywistego kodu:
źródło
Pyth (najnowsza wersja), 16 bajtów
Wypróbuj online: Pyth Compiler / Executor
Wyjaśnienie:
Pyth 4.0, 13 bajtów
Pyth miał wbudowane kodowanie długości przebiegu. Ale tylko przez krótki czas. Jeśli ktoś chce tego spróbować: Sklonuj repozytorium Pyth i sprawdź zatwierdzenie 6a6dccd.
Ten program działa prawie tak samo, jak rozwiązanie Martina CJam.
źródło
CJam, 22 bajty
Patrząc na więcej opcji golfa tutaj. Oto jak to działa:
Wypróbuj online tutaj
źródło
Python 2,
806866 bajtówWypróbuj tutaj
Zduplikuj dane wejściowe, znajdź wszystkie litery we wszystkich oprócz ostatniego wiersza (pierwsza para znaków w ostatnim wierszu nie może być literami), a następnie wydrukuj pierwszą literę i liczbę.
Wejście :
' _________\n| |\n| H H |\n| H H H |\n---H---H---'
Wyjście :
H12
Poprzednia wersja korzystająca z wyrażenia regularnego (68):
Dzięki Sp3000 za pomoc w golfie.
źródło
i=input()*2;s="CDSH";r=[i[:-9].count(x)for x in s];n=sum(r);print s[r.index(n)]+`n`
APL, 39 bajtów
Jestem pewien, że można to znacznie skrócić, ale to dopiero początek.
Tworzy to nazwaną funkcję monadyczną, która akceptuje ciąg wejściowy i zwraca ciąg zawierający kolor i wartość karty. Możesz spróbować online !
Wyjaśnienie:
Sugestie są jak zawsze mile widziane!
źródło
(⊃,≢)'HDCS'∩⍨¯11↓,⍨
?5⌷{⍺,≢⍵}⌸¯11↓,⍨⍞
J, 26 bajtów
Stosowanie:
Czytanie kodu od lewej do prawej:
4{~.
).+/
) liczba, jaką ten znak występuje łącznie w input ([
) i wejściu bez ostatnich 9 znaków (_9}.[
).]
) z reprezentacją ciągu wynikowej sumy (":
).źródło
Perl, 75 bajtów
Wersja bez golfa
źródło
Julia, 58 bajtów
Tworzy to nienazwaną funkcję, która pobiera ciąg znaków jako dane wejściowe i zwraca kolor karty oraz jej wartość. Aby to nazwać, nadaj mu nazwę, np
f=s->(...)
.Niegolfowane + wyjaśnienie:
Sugestie są jak zawsze mile widziane!
źródło
Bash + coreutils, 73
źródło