Prawdopodobnie każdy, kto korzystał z Twittera kilka miesięcy temu, wiedziałby o „Howdy! Jestem memem szeryfa X ". Tam gdzie prosty rysunek szeryfa jest rysowany za pomocą emoji i zmienia się, aby pasować do tematu. Pomyślałem więc, że nadszedł czas na szeryfa z Code Golf. Oto on:
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
Ten w szczególności ma „piksele” o szerokości jednego znaku i wysokości jednego znaku. Aby go wygenerować, argumentami będą 1 i 1.
Co jeśli ma być szerszy niż wysoki?
######
##########
######
######
######
##
##########
## ## ##
## ## ##
## ## ##
##
######
## ##
## ##
## ##
## ##
Ma wysokość 1, ale szerokość 2.
Zasady:
- Wyzwanie polega na napisaniu kodu w celu narysowania własnego szeryfa Code Golf, przy użyciu jak najmniejszej liczby postaci.
- Używaj dowolnego języka programowania, jakiego pragnie twoje serce.
- Twój kod powinien przyjmować dwa argumenty, z których oba są liczbami całkowitymi, dla wysokości i szerokości szeryfa.
- Wynik powinien składać się z pojedynczych białych spacji dla tła i każdej innej postaci, którą wybierzesz dla szeryfa. (Użyłem skrótów dla przypadków testowych, ale nie ma znaczenia, z czego korzystasz).
- Wysokość powinna być ujemną liczbą całkowitą, która odwraca obraz.
- Szerokość może być ujemną liczbą całkowitą, ale ponieważ obraz jest symetryczny, będzie identyczny z wartością dodatnią.
- Końcowe białe znaki są nieistotne.
- Jeśli jeden z argumentów wynosi 0, wymiar ten jest „spłaszczany” do pojedynczego wiersza lub kolumny. Długość tej linii jest drugim argumentem pomnożonym odpowiednio przez wysokość lub szerokość szeryfa.
- Jeśli oba argumenty mają wartość 0, obie linie są „spłaszczone”, pozostawiając pojedynczy znak dodatni.
- Nie jest to konieczne, ale proszę dołączyć link do tłumacza online, takiego jak tio.run
- Dane wyjściowe powinny być ciągiem złożonym z wielu wierszy lub wyjściem do konsoli.
Przypadki testowe
1 wysoka, 1 szeroka
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
2 wysokie, 1 szeroki
###
###
#####
#####
###
###
###
###
###
###
#
#
#####
#####
# # #
# # #
# # #
# # #
# # #
# # #
#
#
###
###
# #
# #
# #
# #
# #
# #
# #
# #
1 wysoka, 2 szerokie
######
##########
######
######
######
##
##########
## ## ##
## ## ##
## ## ##
##
######
## ##
## ##
## ##
## ##
2 wysokie, 2 szerokie
######
######
##########
##########
######
######
######
######
######
######
##
##
##########
##########
## ## ##
## ## ##
## ## ##
## ## ##
## ## ##
## ## ##
##
##
######
######
## ##
## ##
## ##
## ##
## ##
## ##
## ##
## ##
-1 wysoka, 1 szeroka
# #
# #
# #
# #
###
#
# # #
# # #
# # #
#####
#
###
###
###
#####
###
1 wysoka, -1 szeroka
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
0 wysoka, 0 szeroka
#
1 wysoka, 0 szeroka
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
0 wysoka, 2 szerokie
##################
Bawcie się dobrze!
Odpowiedzi:
JavaScript (ES6), 171 bajtów
Pobiera dane wejściowe w składni curry
(width)(height)
. Zwraca tablicę ciągów.Wypróbuj online!
W jaki sposób?
Tylko lewa połowa szeryfa jest zakodowana jako binarne maski bitowe, w tym środkowa kolumna:
Ponieważ istnieją tylko dwie wartości większe niż i obie są równe , możemy zastąpić je , aby mieć jeden znak na wiersz i nadal mieć dość prosty proces dekodowania. Stąd pakowany ciąg:17 09 17 0
Dla i „piksel” w jest określony przez:0 ≤ y ≤ 15 ( x , y )0≤x≤8 0≤y≤15 (x,y)
źródło
Python 2 ,
228218202189173 bajtówWypróbuj online!
Alternatywy:
Python 2 , 173 bajtów
źródło
Perl 5 ,
169166157 bajtówWypróbuj online!
Być może więcej można by zyskać na grzebieniach.
źródło
split
, używam tego teraz i zapisałem dwa bajty. Ogoliłem także jednego, tracąc'
s wokół indeksów. Nie mogłem jednak zabrać sięsay
do pracy.-a
straciłem jeszcze 9 bajtów.say
pomocą-M5.010
, ale nie wszystkim się to podoba, możesz użyć-l
zamiast tego i zachowaćprint
, ale jeśli nie, możesz użyć dosłownego nowego wiersza lub$_.$/
dla -1. Miło widzieć kolejnego golfisty Perla!say
nie działał, ponieważ nowy wiersz został dołączony do,map
więc użycie go wymaga nieco innego wywołania. Uświadomiłem sobie również, że kiedy Twój kod kończy się na zmienną i używasz-p
lub możesz użyć,@;
ponieważ zawiera: Wypróbuj online! Mam nadzieję, że nie masz nic przeciwko moim komentarzom!Węgiel drzewny , 61 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wprowadź wymiary.
Jeśli wysokość jest różna od zera, należy owinąć prawą połowę szeryfa ...
... powtarzając absolutną liczbę razy ...
... jeśli szerokość jest różna od zera, to powtarzaj każdy znak bezwzględną liczbę razy, w przeciwnym razie a
#
.Ale jeśli wysokość wynosi zero, powtórz
#
5 razy szerokość bezwzględną, ale co najmniej 1#
.Zastanów się nad produkcją lewej połowy szeryfa.
Jeśli wysokość jest ujemna, odwróć szeryfa.
źródło
Python 2 ,
217216 bajtówWypróbuj online!
Pytoniczny riff o podejściu Arnaulda .
Ugh! Teraz działa dla wszystkich warunków brzegowych ...
źródło
Czysty ,
299275272 bajtówWypróbuj online!
źródło
PowerShell,
174170 bajtówZainspirowany Javascriptem Arnaulda
Nieskluczone, wyjaśnione i przetestowane skrypty:
źródło