Otrzymujesz prostokątną siatkę postaci .
i #
, w ten sposób:
..........
..#.......
....#..#..
...#......
..........
Twoim zadaniem jest, aby wypełnić całą oś wyrównany obwiedni #
z dodatkowo #
:
..........
..######..
..######..
..######..
..........
Obwiednia wyrównana do osi jest najmniejszym prostokątem, który zawiera wszystkie #
.
Chcieć więcej? Spróbuj część II!
Zasady
Możesz użyć dowolnych dwóch różnych drukowalnych znaków ASCII (0x20 do 0x7E włącznie), zamiast #
i .
. Będę nadal odnosząc się do nich, jak #
i .
dla pozostałej części specyfikacji chociaż.
Dane wejściowe i wyjściowe mogą być albo pojedynczym ciągiem oddzielonym od linii, albo listą ciągów (po jednym dla każdej linii), ale format musi być spójny.
Możesz założyć, że wejście zawiera co najmniej jeden, #
a wszystkie wiersze mają tę samą długość.
Możesz napisać program lub funkcję i użyć dowolnej z naszych standardowych metod otrzymywania danych wejściowych i dostarczania danych wyjściowych.
Możesz używać dowolnego języka programowania , ale pamiętaj, że te luki są domyślnie zabronione.
To jest golf golfowy , więc wygrywa najkrótsza ważna odpowiedź - mierzona w bajtach .
Przypadki testowe
Każdy przypadek testowy ma wejścia i wyjścia obok siebie.
# #
... ...
#.. #..
... ...
... ...
#.. ###
..# ###
.#. ###
#.. ###
..# ###
..... .....
.#.#. .###.
..... .....
... ...
.#. .#.
... .#.
.#. .#.
... ...
.......... ..........
.......... ..........
....#..... ....#.....
.......... ..........
.......... ..........
.......... ..........
....#..... ...##.....
...#...... ...##.....
.......... ..........
..#....... ..###.....
....#..... ..###.....
...#...... ..###.....
.......... ..........
..#....... ..######..
....#..#.. ..######..
...#...... ..######..
.........# ..########
..#....... ..########
....#..#.. ..########
...#...... ..########
Odpowiedzi:
VBA Excel,
150 bajtów146 bajtówInstrukcja:
Utwórz skoroszyt z dwoma pustymi arkuszami: Arkusz1 i Arkusz2. Ustaw dane wejściowe w arkuszu Arkusz1, a następnie umieść następujący kod w module kodu Arkusz1
Ungolfed kod:
Wyjaśnienie:
Przykład I / O:
Uwaga: Upewnij się, że każda komórka w arkuszu 2 jest zawsze pusta przy każdym uruchomieniu programu.
źródło
=C.Value
w pierwszej linii może być="#"
?05AB1E ,
70686961586040 bajtówWyjaśnienie
Wypróbuj online
źródło
Mathematica,
9170 bajtów21 bajtów zapisanych z powodu @MartinEnder .
Funkcja anonimowa. Pobiera macierz znaków jako dane wejściowe i zwraca macierz znaków jako dane wyjściowe. Znak Unicode to U + F3C7 dla
\[Transpose]
.źródło
C #,
262251 bajtówBędę grać w golfa dalej, gdy będę miał więcej czasu.
Kompiluje się w
Func<string[], string[]>
.Wersja sformatowana:
źródło
Galaretka ,
21191817 bajtówTo jest pełny program. Wejście i wyjście są ciągi 0 „s oraz 1 ” S, ograniczonej przez karetki.
Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Jak to działa
źródło
Siatkówka , 87 bajtów
Liczba bajtów zakłada kodowanie ISO 8859-1.
Zastosowania
A
dla.
iZ
dla#
.Wypróbuj online!
źródło
Scala, 317 znaków
Bardziej czytelna wersja, prawdopodobnie mogłaby to zrobić w golfa:
źródło
JavaScript (ES6), 168 bajtów
Pobiera dane wejściowe jako ciąg multilinii. Działa poprzez rekurencyjne usuwanie początkowych i końcowych liter
.
s ze wszystkich linii, aż co najmniej jedna linia zaczyna się i kończy na literę a#
, a następnie wybiera tyle linii, ile to możliwe, ale zaczyna i kończy na liniach zawierających#
i zmieniających wszystkie.
litery na#
. Prawdopodobnie łatwo do gry w golfa.źródło
R,
158155 bajtówTen program pobiera punkty wejściowe
.
i hashtagi#
, linia po linii.Nie golfowany:
Oto szczegóły trzeciej linii:
źródło
PowerShell v3 +,
215162148144139 bajtówPobiera dane wejściowe jako tablicę ciągów
$n
, z0
zamiast.
i1
zamiast#
. Następnie przechodzimy przez pętlę$n
, sprawdzając, czy bieżący ciąg znaków jest mniejszy niż0
(tzn. Jest1
w nim), a jeśli tak, wyprowadzamy ciąg. Używa pseudo-trójki zamiast operacjiif
/else
.Łańcuch jest zbudowany z pętli na całej szerokości łańcucha wejściowego. Przy każdej iteracji przyczepiamy się do
0
lub w1
zależności od tego, czy1
znajduje się gdzieś w odpowiedniej kolumnie pionowej. Na przykład w ostatnim przypadku testowym powstanie ciąg podobny do0011001001
. Wymaga v3 + dla-in
operatora. Ten ciąg znaków jest połączony z wyrażeniem fantazyjno-tanecznym, zastępującym dowolne „wewnętrzne”0
litery1
s. Ogromne podziękowania dla Business Cat na czacie za pomoc w tym zakresie. Nasz sznur byłby0011111111
w tym momencie.W przeciwnym razie wypisz bieżący ciąg znaków (wszystkie zera)
$_
.Powstałe ciągi są pozostawione w potoku, a dane wyjściowe są niejawne. Domyślnie
Write-Output
tablica ciągów znaków ma nowy wiersz między każdym elementem, więc wizualnie tak się dzieje.Przykłady
źródło
Python,
219212 bajtów(Chociaż myślę, że inna metoda może być krótsza)
Pobiera i zwraca listę znaków.
Przetestuj na ideoone
źródło
Perl 6 , 62 bajtów
Anonimowa procedura, która może zostać przekazana jako tablica tablic znaków (reprezentujących matrycę) i zmodyfikowana w miejscu, tak aby zasięg wywołujący miał następnie zmodyfikowaną tablicę.
Używa
a
zamiast#
znaku „on”. Postać „off” może być dowolna, nie ma znaczenia.źródło
Python 3, 153 bajty
Dane wejściowe i wyjściowe są listą ciągów.
bez golfa
teoria operacji
Głównym pomysłem jest usunięcie wierszy i kolumn na zewnątrz tablicy, jeśli nie mają one znaku „#”. Cokolwiek pozostało, należy wpisać „#”.
Jest realizowany za pomocą funkcji rekurencyjnej.
Przypadek 1: wiersz 0 nie zawiera znaku „#”. Wynikiem jest wiersz 0 + wywołanie rekurencyjne w pozostałych wierszach.
Przypadek 2: wiersz 0 zawiera „#”. Nie można usunąć więcej wierszy. Obróć tablicę cw, tak aby kolumna 0 była teraz wierszem 0. Następnie rekurencyjnie przetwarzaj obróconą tablicę. Wynik jest obrócony ccw.
Przypadek podstawowy: tablica została obrócona 4 razy, co oznacza, że wszystkie zewnętrzne rzędy / kolumny zostały usunięte, jeśli to możliwe. Cokolwiek pozostało, należy wpisać „#”
źródło
Perl, 51 bajtów
Obejmuje +2 za
-0p
Podaj dane na STDIN, wyłączony jest znak
A
, włączony znak toa
np .:bounding.pl
:Ta sama długość:
źródło
Python 2, 184 bajty
Dane wejściowe i wyjściowe są listą ciągów.
Wypróbuj na Ideone (rozwidlenie strony testowej Jonathana Allana)
źródło
Pyth , 50 bajtów
Wypróbuj online!
źródło