Zainspirowany tym pytaniem SO .
Wyzwanie:
Wejście:
- Ciąg
- Znak
Wynik:
Utwórz diamentową kwadratową grafikę ASCII sznurka we wszystkich czterech kierunkach, z pierwszym znakiem sznurka pośrodku i skierowanym na zewnątrz. Który znajduje się w kwadratowym dywanie ASCII-art, z postacią wypełniającą. Może to zabrzmieć dość niejasno, więc oto przykład:
Dane wejściowe: = , = Dane
wyjściowe:string
.
..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........
Zasady konkursu:
- Ciąg wejściowy może być również listą znaków
- Wyjściem może być również lista linii ciągów lub macierz znaków
- Ciąg wejściowy i znak są gwarantowane jako niepuste
- Ciąg nie może zawierać znaku
- Zarówno ciąg, jak i znak będą drukowane tylko w formacie ASCII (zakres Unicode [32, 126], spacja „” włącznie z tyldą „~”)
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
Dane wejściowe: = , = Dane
wyjściowe:c =11111
0
00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000
Dane wejściowe: = , = Dane
wyjściowe:c12345ABCDEF
#
####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################
Dane wejściowe: = , = Dane
wyjściowe:c@+-|-o-|-O
:
::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::
Dane wejściowe: = , = Dane
wyjściowe:cAB
c
ccBcc
BcAcB
ccBcc
Dane wejściowe: = , = Dane
wyjściowe:c~
X
~
Dane wejściowe: = , = Dane
wyjściowe:c/\^/\
X
XXXXXXXX\XXXXXXXX
XXXXXX\X/X\XXXXXX
XXXX\X/X^X/X\XXXX
XX\X/X^X\X^X/X\XX
\X/X^X\X/X\X^X/X\
XX\X/X^X\X^X/X\XX
XXXX\X/X^X/X\XXXX
XXXXXX\X/X\XXXXXX
XXXXXXXX\XXXXXXXX
()()()
.Odpowiedzi:
Płótno , 8 bajtów
Wypróbuj tutaj!
7 bajtów, ale odzwierciedla kilka znaków.
źródło
R ,
1189592 bajtówWypróbuj online!
Dzięki:
źródło
for
pętli w R, przynajmniej do gry w golfa.pmin
logikę z rearanżacją :-)J ,
5956 bajtówWypróbuj online!
Zbyt długie rozwiązanie dla J ... (całkowicie moja wina)
źródło
R , brzydka wersja 118 bajtów
Pozwalając na wejście jako wektor pojedynczych znaków i generowanie matrycy zamiast drukowania ładnej sztuki ascii.
Wypróbuj online!
R ,
161157 bajtówzapisano 4 bajty, używając ifelse zamiast warunkowo modyfikować
y
Wypróbuj online!
nie golfił i komentował
hmmm, wydaje się najdłuższą jak dotąd odpowiedzią!
źródło
Python 2 ,
97969084 bajtówWypróbuj online!
źródło
05AB1E ,
1511 bajtówWypróbuj online! lub jako pakiet testowy
Wyjaśnienie
źródło
»
stopkę. :)J ,
35 3433 bajtówWypróbuj online!
Od prawej do lewej:
c s
-&#
długośći:
1-|+/|
{: (<*-)
-&#
Wskaźniki ujemne zaczynają się od -1 jak w Pythonie. Pozostało tylko wstawić kolumny zer.
1j1( #"1
}:@
,{~
Ogromne podziękowania dla Galena Iwanowa za algorytm.
źródło
K (ngn / k) , 38 bajtów
Wypróbuj online!
{
}
funkcja z argumentamix
(napisu s ) iy
(znak c )|x
rewersx
y,'
dodawaćy
do każdego+
transponować,/
konkat1_
upuść pierwszy znakw tym momencie mamy ciąg
x
instancji length ( ),y
po których następuje znak zx
#x
długośćx
(#x)'
przesuwne okno wielu kolejnych znaków2{
}/
zrobić dwa razy+x,1_|x
połączx
z odwróconymx
bez pierwszego elementu i transponujy,''
dodawaćy
do każdego z nich,/'
konkat każdy1_'
upuść po jednym z każdegoźródło
Japt , 15 bajtów
Zwraca tablicę wierszy
Spróbuj
źródło
Węgiel drzewny , 15 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Pierwotnie przedstawiony jako komentarz do piaskownicy teraz usuniętego postu . Wyjaśnienie:
Ustaw tło na drugie wejście
c
.Odwzoruj na pierwszym wejściu,
s
aby wygenerować wszystkie przyrostki i niejawnie wydrukować je w osobnych wierszach.Odbijaj w poziomie i w pionie.
Dodaj dodatkową przestrzeń w poziomie.
źródło
Rubin ,
958475 bajtówWypróbuj online!
Pobiera ciąg wejściowy jako tablicę znaków. Zwraca tablicę ciągów.
źródło
Wolfram Language (Mathematica) , 121 bajtów
Wypróbuj online!
źródło
Japt , 16 bajtów
Uwaga: zagram w golfa :)
Wypróbuj online!
źródło
PowerShell , 120 bajtów
Wypróbuj online!
W niektóre dni posiadanie zakresów indeksów zamiast plasterków naprawdę boli. Dzisiaj jest jeden z tych dni. Ze względu na bałagan połączonych zakresów w przypadku pojedynczych elementów (np. Zwracanie wartości 0..0 + 1..0) zastosowano specjalną obudowę, aby całkowicie tego uniknąć (kosztem wielu bajtów).
źródło
Japt , 15 bajtów
Spróbuj
źródło
Galaretka , 11 bajtów
Wypróbuj online!
ŒṘ
Y
\n
źródło
PowerShell ,
8283 bajty+2 bajty dzięki Veskah: naprawiono błąd dotyczący pojedynczego znaku
-1 bajt:
Input-string may also be a list of characters
zastosowana regułaWypróbuj online!
Mniej golfa:
źródło
~
Pip ,
2420 bajtówUżyj
-l
flagi, aby uzyskać wynik czytelny dla człowieka. Wypróbuj online!Wyjaśnienie
Na przykład z danymi wejściowymi
abcd
i.
:źródło
Attache , 57 bajtów
Wypróbuj online! Dane wyjściowe to lista wierszy.
Wyjaśnienie
źródło
Perl 6 , 79 bajtów
Wypróbuj online!
Anonimowy blok kodu, który pobiera wejście curry (jak
f(char)(string)
) i zwraca listę wierszy. Myślę, że inne podejście byłoby krótsze.Wyjaśnienie:
źródło
APL (Dyalog Classic) ,
3231 bajtówWypróbuj online!
źródło
Perl 5 z
-lF
,-M5.010
, 71 bajtówWypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) , 249 bajtów
Wypróbuj online!
To musi być możliwe do ulepszenia ...
źródło
JavaScript (Node.js) , 143 bajty
Wypróbuj online!
Nieco bardziej przemyślane podejście prowadziłoby do obliczeń w postaci jednowymiarowej tablicy i mniejszej liczby bajtów.
źródło
Kotlin , 250 bajtów
Uwaga: Kotlin tio obecnie nie zwraca nowej klasy, więc ten kod otrzymuje wyjątek wskaźnika zerowego. Dzieje się tak również w przypadku wcześniej opublikowanych kodów, które działały. Zakładam, że w końcu zostanie to naprawione, ale nie mogłem znaleźć kontaktu z pomocą techniczną do zgłoszenia problemu. Można go również uruchomić tutaj .
Wypróbuj online!
źródło
.joinToString("\n")
licznik bajtów (i zrobić to w stopce poza funkcją).Gaia , 19 bajtów
Wypróbuj online!
Wyjaśnienie do naśladowania.
źródło
JavaScript (Node.js) , 101 bajtów
Wypróbuj online!
źródło
Zapytanie TSQL, 191 bajtów
W MS-SQL Server Management Studio naciśnij Ctrl-T przed uruchomieniem tego zapytania, zmieni to wynik na tekst.
Ten skrypt buduje dane wyjściowe od lewej do prawej w jednym długim „łańcuchu”, obliczając wartość, którą należy umieścić w każdej pozycji. Dane wyjściowe są ograniczone do 4096 znaków.
Gra w golfa:
Nie golfowany:
Musiałem wprowadzić pewne zmiany, aby sformatować dane wyjściowe w wersji online.
Wypróbuj online
źródło
Java (JDK) ,
213199198 bajtówWypróbuj online!
-14 bytes
dzięki @KevinCruijssen-1 byte
dzięki @ceilingcatBez golfa
źródło
Wolfram Language (Mathematica) , 68 bajtów
Wypróbuj online!
Pobiera na wejściu listę znaków (wraz ze znakiem wypełniającym) i wysyła macierz znaków.
Aby wziąć indeks listy znaków, używamy
list[[index]]
, który jest wewnętrznie rozszerzony doPart[list, index]
. Jeśli indeks jest prawidłowy, to wyrażenie wyraża wartość tego indeksu. Jeśli nie - jeśli indeks nie jest liczbą całkowitą lub jest poza zakresem - wyrażenie pozostaje nieocenione.Najprostszym (najkrótszym) wzorcem, który pasuje,
Part[...]
ale nie jest jednym znakiem_@__
, który pasuje do dowolnego wyrażenia z jednym lub więcej argumentami.źródło