Cribbage to interesująca gra, ponieważ potrzebujesz specjalnej planszy, aby zdobyć punkty. Tablica cribbage wygląda następująco:
Zauważ, jak pierwsza kolumna jest po lewej stronie, gdy idzie w górę, następnie po prawej, gdy idzie w dół, a następnie z powrotem po lewej, gdy znów idzie w górę.
A oto, jak wygląda kiepsko narysowana grafika ASCII deski do żłobienia:
* * *
----------- -------
/ * \ |*|*|*|
/* * *\ |*|*|*|
/ * * * \ |*|*|*|
| * * | |*|*|*|
|* * * * * *| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
* * * |* * * * * *|
| * * |
\ * * * /
\* * */
\ * /
-----------
Oto twoje wyzwanie:
Krok 1: Narysuj tę sztukę ASCII z deski do żłobienia. Końcowy biały znak jest OK, pod warunkiem, że nie ma widocznej różnicy.
Krok 2: Biorąc pod uwagę trzy liczby całkowite jako dane wejściowe, wyświetl każdy kołek we właściwym otworze. Kołki mogą być indeksowane 0 lub indeksowane 1. Dane wejściowe zostaną [0-121]
uwzględnione. Możesz wziąć te dane wejściowe w dowolny rozsądny sposób, na przykład 3 osobne dane wejściowe, tablicę, argumenty wiersza poleceń itp. Oto przykład danych wejściowych (0, 37, 100)
(indeksowany 1):
* * *
----------- -------
/ * \ |*|*|*|
/* * *\ |*|*|*|
/ 2 * * \ |*|*|*|
| * * | |*|*|*|
|* * * * * *| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|3|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
1 * * |* * * * * *|
| * * |
\ * * * /
\* * */
\ * /
-----------
Krok 3: Wydrukuj całość.
Test IO:
Ponieważ każdy z nich jest dość pionowo wysoki, uwzględnię tylko 2, ale możesz zobaczyć więcej na tym githubie .
#Input: (56, 56, 56)
#Output:
* * *
----------- -------
/ * \ |*|*|*|
/* * *\ |*|*|*|
/ * * * \ |*|*|*|
| * * | |*|*|*|
|* * * * * *| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |3|2|1| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
* * * |* * * * * *|
| * * |
\ * * * /
\* * */
\ * /
-----------
#Input: (120, 89, 23)
#Output:
* * *
----------- -------
/ * \ |1|*|*|
/* * *\ |*|*|*|
/ * * * \ |*|*|*|
| * * | |*|*|*|
|* * * * * *| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|3| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|2|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
|*|*|*| |*|*|*| |*|*|*|
------- ------- -------
* * * |* * * * * *|
| * * |
\ * * * /
\* * */
\ * /
-----------
Obowiązują standardowe luki, a najkrótsza odpowiedź w bajtach wygrywa!
Odpowiedzi:
Python 3, 496 bajtów
Uruchomiony (lub importu) kod tworzy funkcję, która jest wywoływana z trzech graczy punktacji:
f(5, 38, 53)
.Wersja nieco nie golfowa
z
jest zakodowaną / skompresowaną wersją pustej tablicy cribbage.subs
zawiera rozdzieloną przecinkami listę podstawień do dekodowania / dekompresjiz
. W każdej zamianie pierwsza litera jest podciągiem do zamiany, a pozostała część ciągu to zamiana.for y in subs.split(','):
Pętla ma podstawienia. Na przykładZ|*|*|*|
powoduje zastąpienie wszystkich liter „Z”|*|*|*|
. Metodę kompresji zastosowano ze względu na jej prostotę i skuteczność (jest lepsza niż stdlib). Ale prawdopodobnie można by to poprawić lub zastąpić czymś lepszym.Ponieważ ciągi w języku Python są niezmienne,
b
jest to lista postaci na planszy.R
to lista mapująca gracza i zdobywająca punkty do rzędu na planszy ascii. Używa „L”, czyli listy lub numerów wierszy, z których usunięto numery wierszy odpowiadające wierszom „-------”.Podobnie
C
mapuje gracza i zdobywa punkty do kolumny na planszy ascii.Używając
R
iC
, właściwy otwór na kołek na planszy można ustawić na numer gracza.Na koniec
print(*b,sep='')
drukuje każdy znakb
bez wstawiania spacji między sąsiednimi znakami. (Oszczędza kilka bajtów przy użyciu „.join)źródło
Matricks ,
1441980 bajtówBrawo dla esolangów!
Edycja: skompresowane sprawdzanie każdej liczby w pętli, aby zaoszczędzić tonę bajtów. Również dolna część „kopiuje” górę (potrzebuję funkcji odwrotnej). Zastąpiłem także większość postaci ascii ich surowymi wartościami, aby zaoszczędzić jeszcze kilka. Naprawiłem również błąd w tłumaczu, w którym wprowadzanie liczb nie działało poprawnie.
Pobiera dane z wiersza poleceń:
python matricks.py <filename> [[]] <num1>,<num2>,<num3> --asciiprint
Matricks to język mojego własnego dzieła. Dokumentacja znajduje się na stronie Github. Ostatnia aktualizacja była poprawką, nie dodano żadnych nowych funkcji ani nic.
Podział tego rozwiązania:
źródło
Python 2, 615 bajtów
Funkcja jest wywoływana przez przekazanie słownika zawierającego wyniki. Na przykład:
Liczba bajtów odzwierciedla wcięcie pętli „for x” za pomocą tabulatorów zamiast spacji.
Wyjaśnienie
Pierwsza pętla buduje płytę poziomo w łańcuch 57x27, z numerami ścieżek zamiast „dziur”.
Druga pętla kopiuje ciąg, zastępując cyfry gwiazdkami, z wyjątkiem miejsc, w których zapisywane są punkty. Lokalizacje kołków w linii prostej na środku toru wychodzą do tyłu.
Trzecia pętla zmienia orientację na pionową, poprawiając kołki na środkowej ścieżce i dodając znaki nowej linii.
Wypróbuj tutaj
źródło
Partia,
1302109910961079 bajtówNie golfowany:
źródło
Java,
10591035 bajtówNie golfowany:
Nadużywa formatów (printfs) jak szalony, i prawdopodobnie dlatego nie jest tak mały, jak mógłby być.
źródło