Słyszałem gdzieś, że jedną rzeczą, której technologia nie może jeszcze zrobić, jest złożenie ręczników 1 . Twoim zadaniem jest udowodnienie, że to stwierdzenie jest fałszywe!
Biorąc pod uwagę ciąg znaków, złożony z prostokątów (ręczników), podobnie jak poniżej, złóż każdy ręcznik na pół dwukrotnie. Na przykład:
+------+ +------+ +--+
| | | | | |
| | | | | |
| | -> +------+ -> +--+
| |
| |
| |
+------+
Zwróć uwagę, że po złożeniu ręcznik składa się najpierw, a następnie od lewej do prawej. Twój program musi naśladować to zachowanie. Zauważ również, że w przypadkach testowych ręczniki pozostają w tym samym miejscu, ale złożone.
Zasady:
- Standardowe metody wejścia / wyjścia.
- Obowiązują standardowe luki.
- Dane wejściowe i wyjściowe powinny być ciągiem.
- Końcowe wieloryby są w porządku, o ile ręczniki są we właściwym miejscu względem siebie.
- Możesz założyć, że długość każdej strony ręcznika zawsze będzie podzielna przez 2.
- Ręczniki przekazywane jako dane wejściowe zawsze będą prostokątne.
Ręczniki będą zawsze oddzielone - jednak mogą być one rozdzielone zmiennymi ilościami.
code-golf , więc wygrywa najkrótszy kod!
Przypadki testowe:
Input:
+------+
| |
| |
| |
| |
| |
| |
+------+
Output:
+--+
| |
| |
+--+
Input:
+--+ +--+ +--+
| | | | | |
| | | | | |
+--+ +--+ +--+
Output:
++ ++ ++
++ ++ ++
Input:
+----+
| |
| |
| |
| | ++
+----+ ++
Output:
+-+
| |
+-+
+
Input:
+--+
+--+ ++
||
||
++
Output:
++
+
+
1: Zostało to obalone przez Geobits i Laikoni. Jednak gdzieś to słyszałem.
Odpowiedzi:
Siatkówka , 245 bajtów
Wypróbuj online!
Uwaga: niektóre linie kończą się spacjami. Wyjaśnienie:
Usuń co drugą linię każdego ręcznika (działa to, ponieważ wszystkie ręczniki mają równą wysokość),
przesunąć wszystkie odłączone kawałki ręcznika w górę,
i przymocuj spód ręczników, skutecznie je składając.
Złożyć ręczniki o szerokości 2 w prawo.
Złożyć pozostałe ręczniki w prawo.
źródło
<-2>
jest to grupa równoważąca .NET?(?<-2>.)*
wyskakuje przechwytywanie za każdym razem, więc nie może powtórzyć więcej razy niż(.)*
zrobiła, a jednocześnie(?(2)(?!))
sprawdza, czy nie ma żadnych przechwyceń, więc powtórzyła tę samą liczbę razy.Oktawa z pakietem obrazów ,
277272 bajtówDane wejściowe i wyjściowe są tablicami znaków 2D.
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe: 1 , 2 , 3 , 4 . (Należy zauważyć, że
endfunction
w przypadkach testowych jest potrzebne tylko do oddzielenia funkcji od kolejnego kodu. Nie jest konieczne, jeśli funkcja jest zapisana we własnym pliku).Czytelna wersja i objaśnienie
źródło