To ma być wyzwanie golfowe na prostszym końcu spektrum. Uznałem jednak, że fajnie byłoby tutaj wprowadzić mikrooptymalizację.
Istnieją trzy podstawowe typy złączy DVI : DVI-A (analogowe), DVI-D (cyfrowe) i DVI-I (zintegrowane). Ponadto istnieją wersje z jednym i dwoma łączami DVI-D i DVI-I. Każde z tych pięciu różnych złączy wykorzystuje inny zestaw pinów.
Biorąc pod uwagę jeden A
, D1
, D2
, I1
, I2
jako identyfikator dla danego typu złącza, należy wydrukować odpowiednią reprezentację ASCII pinów złącza za:
A:
# # # # # # #
===== # # #
# # # # # #
D1:
# # # # # #
===== # # # # # #
# # # # # #
D2:
# # # # # # # #
===== # # # # # # # #
# # # # # # # #
I1:
# # # # # # # #
===== # # # # # #
# # # # # # # #
I2:
# # # # # # # # # #
===== # # # # # # # #
# # # # # # # # # #
( X:
Linie nie są częścią wyniku, powinieneś wydrukować tylko 3 linie.)
Możesz napisać program lub funkcję, przyjmując dane wejściowe przez STDIN, ARGV lub argument funkcji. Wyjście musi zostać wydrukowane do STDOUT, z opcjonalnym przesuwem linii końcowej.
W drugiej linii A
łącznika możesz, ale nie musi, wstawiać spacje . Nie wolno używać dodatkowych spacji wiodących lub końcowych nigdzie indziej.
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach).
źródło
"I1"
ZamiastI1
?Odpowiedzi:
CJam,
7970 bajtówInspirowany odpowiedzią nutki . Zapewnia to również, że nie ma końcowych białych spacji (z wyjątkiem drugiej linii)
Użyj tego linku, aby skopiować kod, ponieważ SE usuwa znaki niedrukowalne.
Istnieje 5 znaków w zakresie niedrukowalnym ASCII, ale mieszczącym się w bajcie (kod ASCII 255)
Jak to działa :
Wypróbuj online tutaj
źródło
Perl -
10091 (w tym 1 flaga)Wykorzystuje pomysły nutki dotyczące używania
-p
i zmniejszania podwójnych spacji. Uproszczono również eliminację spacji końcowych.Dane wejściowe pochodzą ze standardowego wejścia i muszą zawierać tylko typ złącza bez końca nowej linii.
Poprzedni:
Bierze argument wiersza polecenia. Nie golfowany:
źródło
$x=shift|" qb"
i zamieniając 3 wystąpienia podwójnej spacjib
w szablonie. Również zmiana przetwarzania danych wejściowych na „-p” daje 7 dodatkowych (minus flaga):$x=$_|""
i nie ma potrzeby końcowegosay
.x
do#
. Ale druga linia wciąż ma końcowe spacje we wszystkich przypadkach. BoA
przestrzeń rozciąga się poza finał#
pozostałych linii (co, jak sądzę, jest technicznie dozwolone). Ale dlaI1
,I2
itp. W niektórych przypadkach należy jeszcze zająć miejsce. Myślę jednak, że mogę zagrać w golfa z kilkoma innymi postaciami.Python, 168 znaków
Wydaje się być nowym podejściem. Mam ciąg:
Ja wymienić
G
,H
i2
na podstawie danych wejściowych.źródło
J,
Zminimalizowane153 121119 znakówTrzecie podejście: spakuj wszystko
i
Unminified#
do wielkiej liczby całkowitej.=
Następnie dodaj . Nadal jednak nie wykorzystuje symetrii wielu wariantów złączy.Zminimalizowane (153)
Również jako funkcja. Ten wykorzystuje kodowanie binarne o zmiennej długości, łącząc je w binarne i oddzielając od zera. 0 z rzędu oznacza
, 1 oznacza
Bez golfa#
, 2 oznacza=
, 3 oznacza znak nowej linii, a 4 oddzielają pięć łańcuchów od siebie.źródło
Cudowny, 281 bajtów / znaków
Zminimalizowane:
To trwa
D1
,D2
,I1
,I2
lubA
ze standardowego wejścia. Końcowe znaki nowej linii w danych wejściowych są opcjonalne. Dane wyjściowe to STDOUT.Ten program wywołuje podpłyty, które drukują części złączy, wypełniając je
#
lub pozostawiając spacje w zależności od danych wejściowych.Wypróbuj tę odpowiedź tutaj ; potrzebne są deski cylindryczne.
z komentarzami:
źródło
Perl 5: 105 (w tym 1 flaga)
Jeszcze inne rozwiązanie Perla. Używa stdin dla parametru.
źródło
GNU sed, 116 bajtów
Wydajność:
źródło
J,
Zminimalizowane198 194157 znakówWdrożony jako funkcja. Zauważ, że funkcja jest pociągiem, co oznacza, że należałoby ją otoczyć nawiasami lub przypisać do nazwy, aby z niej skorzystać (może powinienem policzyć pareny jako część funkcji, chociaż technicznie nie są).
Bez golfaChodzi o to, aby przechowywać wspólną część łańcucha oddzielnie od znaków, które różnią się między typami łączników.
S1
przechowuje unikalne postacie iS2
działa jako wzór zx
działającymi jako symbole zastępcze do wypełnienia.źródło
Python -
167 166 164 161159źródło
JavaScript (ES6) 178
186Edytuj Mając 7 bloków podstawowych, użyj podstawy 7
Prosto, używając budowania ciągów z zamiennikiem i 7 bloków konstrukcyjnych.
Wyjście na standardowe wyjście przy użyciu alertu zgodnie z żądaniem OP.
Teraz spróbuję mikrooptymalizacji ...
Testuj w konsoli FireFox / FireBug - usunięcie „alertu” w celu uproszczenia testu
Wydajność
źródło
APL (115)
Test:
źródło
JavScript ES6, 186 bajtów
Pokaż fragment kodu
Kod jest szybki i brudny, ale wykonuje zadanie. Przeważnie
#
liczby i spacje są zapisywane w postaci binarnej, a następnie w bazie 36. Rozglądam się za bardziej eleganckim i miejmy nadzieję krótszym rozwiązaniem.źródło
Perl 5-150 (149 + 1 za
n
)Gra w golfa:
Wejście ze STDIN, wyjście do STDOUT. Działa poprzez wypełnianie niektórych znaków za pomocą
#
lub wzależności od danych wejściowych.
Nie golfowany:
źródło