W tym wyzwaniu otrzymasz blok tekstu i musisz przemyśleć tekst.
Wkład:
- Ciąg do odzwierciedlenia. Tekst nie może być dostarczony jako tablica, której elementami są wiersze tekstu. Na przykład,
"ab\ncd"
i['a','b','\n','c','d']
są dozwolone, ale['ab','cd']
czy[['a','b'],['c','d']]
nie. Możesz założyć, że wszystkie linie mają tę samą liczbę znaków (w razie potrzeby uzupełnione białymi spacjami). - Wartość logiczna, gdzie
True
wskazuje odbicie Y iFalse
odbicie X
Dwa wejścia można przekazać w dowolnej kolejności.
Wydajność:
Odbity ciąg. Postacie się nie zmieniają, tylko ich pozycja. Powstały blok obrazu powinien być wyrównany do lewego górnego rogu (pierwszy wiersz i kolumna muszą zawierać znak spacji). Końcowe białe znaki (w dowolnym wierszu) są dozwolone.
Przypadki testowe:
False
o /
--|/
|
/ \
/ o
/|--
|
\ /
True
o /
--|/
|
/ \
/ \
|
--|/
o /
True
text
text
False
text
txet
True
P
P
C
G
G
C
P
P
False
P
P
C
G
P
P
C
G
True
abcde
fghij
kl mn
opqrs
tuvwx
tuvwx
opqrs
kl mn
fghij
abcde
To jest golf golfowy , więc odpowiedz na najkrótszą odpowiedź w swoim ulubionym języku!
1
I0
), czy musimy użyćTrue
iFalse
?\n
się aż do stwierdzenia, że nie jest to reprezentacja łańcucha.Odpowiedzi:
C #,
168144141120 bajtówNowa wersja wykorzystuje oczywisty ciąg. Przeciążenie dołączenia, które wymaga IEnumerable, pierwsze rozwiązanie używało go nieumyślnie. Byłem w stanie użyć go również po drugiej stronie trójki.
Aktualizacja:
Nowa wersja to anonimowa lambda i używa curry, aby zaoszczędzić łącznie 21 bajtów. Zmienia to użycie,
f("text")(false)
gdzie f jest funkcją anonimową.Nie golfowany:
źródło
Pyke, 7 bajtów
Wypróbuj tutaj!
źródło
Brainfuck,
143140131 bajtówBeat
sC #.Wyzwanie było dość łatwe dla Brainfuck, a ja najwyraźniej byłem dość zmęczony, by po prostu to zrobić.
Pobiera wartość logiczną jako
0x00
(fałsz) lub jakikolwiek inny (prawda) bajt na początku danych wejściowych, a następnie ciąg znaków wypełniony prostokątem.Generuje końcowy znak nowej linii dla klapki Y i żadnej dla klapki X.
Wymaga interpretera, który obsługuje lokalizacje pamięci po lewej stronie startu (niepewny, czy nadal jest wymagany) i podaje EOF jako
0x00
. Jeden taki tłumacz jest tutaj . Z tego powodu oczywiście nie obsługuje bajtów zerowych na wejściu.Kod ma wiele bloków zawierających 10
+
lub 10-
; można je prawdopodobnie zmniejszyć.Skomentowana wersja
źródło
32-bitowy kod maszynowy x86, 76 bajtów
W hex:
Wejście::
EBX
flaga kierunku (0/1),:ESI
ciąg wejściowy,:EDI
bufor wyjściowy. Dane wejściowe muszą być prostokątne.źródło
Haskell,
514945 bajtówPrzykład użycia:
Podziel na linie, odwróć linie (True) lub odwróć każdą linię (False) i ponownie połącz w jeden ciąg. W przypadku danych
True
wejściowychmap r:[r|b]
jest to lista dwóch funkcji,[<reverse each line>, <reverse lines>]
a dlaFalse
danych wejściowych lista z jedną funkcją[<reverse each line>]
.last
wybiera ostatni element tej listy.źródło
Galaretka , 8 bajtów
Wypróbuj tutaj.
źródło
Python, 56 bajtów
Wywołanie z ciągiem
s
i dowolną wartością true / falseyr
.źródło
True
, co może być1
. Nie można ograniczyć wprowadzania tylko do0
lub2
.Python 3.5, 61 bajtów:
Prosta anonimowa funkcja lambda, która zakłada wejście prostokątne. Wywołaj go, nazywając najpierw funkcję, a następnie wywołując ją w środku
print()
. Innymi słowy, jeśli funkcja zostały nazwaneH
, nazywają to podobaprint(H(<Bool value>, <String>))
, gdzie<Bool Value>
jest jakaś wartość prawda lub fałsz (tj0/1
,true/false
itp) i<String>
jest ciąg wejściowy.Zobacz w akcji! (repl.it)
Oto kolejna wersja o tej samej długości, która również przyjmuje prostokątne dane wejściowe, ale tym razem nazwana funkcja, tzn. Nie musisz jej najpierw nazywać ani zawijać w nią
print()
:Po prostu nazywaj to tak
J(<Bool Value>,<String>)
.Zobacz to w akcji! (repl.it)
Jednak to nie ja się na tym zatrzymuję. Chociaż możemy zakładać prostokątne dane wejściowe, stworzyłem również wersję, która nie zakłada tego typu danych wejściowych. W związku z tym spowoduje spację wszystkich linii do tej samej długości w oparciu o linię o maksymalnej długości wtedy i tylko wtedy, gdy
<Bool>
dane wejściowe sąFalse
, ponieważ tylko odbicie X spowoduje „odwrócenie” łańcucha. Teraz, bez zbędnych ceregieli, oto nie-prostokątna wersja przyjmująca o długości134129 bajtów w postaci normalnej funkcji:Zobacz ten ostatni w akcji! (repl.it)
źródło
MATL , 11 bajtów
Wypróbuj online!
Pierwsze wejście jest multiline ciąg. Ponieważ MATL nie rozpoznaje źródła, wiersz
\n
wielowierszowy powinien być zdefiniowany jako konkatenacja podłańcuchów lub pojedynczych znaków oraz10
(ASCII dla wstawiania wiersza, który jest interpretowany jako znak). Łączenie w MATL to[... ...]
lub[..., ...]
(przecinki są opcjonalne). Na przykład dane wejściowe mogą wyglądać następująco (konkatenacja ciągu, wysuwu wiersza i innego ciągu):lub równoważnie (łączenie pojedynczych znaków)
lub (to samo z przecinkami)
Drugie wejście może zostać wprowadzony w
1
/0
lub równoważnie wT
/F
otrue
/false
, odpowiednio.Wyjaśnienie
źródło
Brachylog ,
262416 bajtówOczekuje listy zawierającej ciąg i wartość logiczną
1
lub0
npWyjaśnienie
źródło
Pyth, 10 bajtów
Zestaw testowy.
źródło
Bash + wspólne narzędzia linux, 16
Wartość logiczna (zero lub niezerowa) przekazana jako parametr wiersza polecenia. I / O bloku tekstowego przez STDIN / STDOUT. Zakłada, że wszystkie linie mają tę samą długość, jak wskazano w komentarzach .
źródło
C (Ansi), 193 bajtów
Gra w golfa:
Nie golfowany:
Stosowanie:
Argumenty kompilacyjne:
Przykładowe dane wejściowe:
Dane wejściowe są równe t lub nie dla true lub false, po których następuje nowy znak spacji i ciąg znaków.
Przykładowe dane wyjściowe:
źródło
JavaScript (ES 6) 83 bajty
źródło
f(c,0)
kiedy próbuję - może twojec
nie ma wszystkich miejsc we właściwych miejscach.Julia, 59 bajtów
Wypróbuj online!
źródło
J, 29 bajtów
Wejście LHS to wartość logiczna, gdzie 0 to fałsz, a 1 to prawda. RHS jest wejściowym ciągiem znaków.
źródło
JavaScript (ES6), 76
źródło
Java 99 bajtów
Gra w golfa:
źródło
Perl, 35 bajtów
34 bajty kod + 1 dla
-n
.Wymaga wypełnienia linii wejściowych spacjami. 13 (!) Bajtów zapisanych dzięki @ Dada .
Stosowanie
źródło
perl -ne 'print/T/?reverse<>:map~~reverse,<>'
powinien zaoszczędzić 13 bajtów :-)Mathematica, 70 bajtów
Funkcja anonimowa przyjmuje wartość logiczną jako pierwszy argument (jawnie
True
lubFalse
w Mathematica), a łańcuch (wielowierszowy) jako drugi argument. Importuje ciąg jako listę ciągów odpowiadających wierszom ciągu wielowierszowego (ciąg NIE jest przekazywany do funkcji jako tablica). JeśliTrue
odwróć listę. JeśliFalse
StringReverse
lista, która jest automatycznie stosowana do każdego elementu z kolei. Następnie wyeksportuj listę jako ciąg znaków, w którym każdy element jest nową linią.źródło
05AB1E , 10 bajtów
Wyjaśnienie
Wypróbuj online!
źródło
Vim, 33 bajty
Zmieniono poprzednią odpowiedź V na Vima. Każda odpowiedź V byłaby inna, więc nie była tak naprawdę uczciwa.
Wypróbuj online!
Hexdump
źródło