Lubię sztukę ascii i bardzo się nudzę, więc znalazłem kilka postaci ascii i zacząłem tworzyć losowe rzeczy, 8-bitowy zamek mario, labirynty i łuki. Przekonałem się, że łuki można łatwo układać w porządny sposób.
╔═══════╗
║╔═════╗║
║║╔═══╗║║
║║║╔═╗║║║
╨╨╨╨─╨╨╨╨
Wyzwanie
Utwórz program, funkcję lub inny standardowy format, który akceptuje liczbę całkowitą większą lub równą 0 (chyba że robisz bonus) i wyświetla ascii art z określoną liczbą łuków.
Przypadki testowe
Wejście:
7
Wynik:
╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨
Alt:
+-------------+
|+-----------+|
||+---------+||
|||+-------+|||
||||+-----+||||
|||||+---+|||||
||||||+-+||||||
||||||| |||||||
---------------
Wejście:
1
Wynik:
╔═╗
╨─╨
Alt:
+-+
| |
---
- Jeśli liczba całkowita wynosi 0, to nie wypisuj niczego
- To pytanie będzie w UTF-8, każdy znak będzie liczony jako „bajt”
- To jest codegolf, więc wygrywa najkrótsza odpowiedź.
- Możesz użyć
+-+
zamiast zamiast╔═╗
,---
zamiast╨─╨
i|
zamiast║
Bonus (nie zdecydowałem, czy zezwolić na to w alternatywnej wersji, ponieważ nie byłoby to tak trudne)
-10%, jeśli program obsługuje liczby ujemne i odwraca łuki w ten sposób
╥╥╥╥─╥╥╥╥
║║║╚═╝║║║
║║╚═══╝║║
║╚═════╝║
╚═══════╝
+---+
górą, bokami|
i dolną częścią,-----
które dla mnie wyglądają dobrze. Juanpotato, jeśli chcesz używać znaków innych niż ascii, podaj kodowanie w pytaniu. W tej chwili głosuję za zamknięciem jako niejasne.Odpowiedzi:
CJam, 59 bajtów
Wypróbuj tutaj!
źródło
Python 2, 106 bajtów (94 znaków)
Całkiem proste. Drukuje linia po linii ze zmieniającą się liczbą poziomych i pionowych pasków. Ostatni wiersz jest drukowany osobno.
Czuję, że brakuje mi optymalizacji. Fakt, że znaki są wielobajtowe, oznacza, że nie możesz zrobić czegoś takiego
'║╨'[n>0]
, więc nie znalazłem dobrego sposobu na wydrukowanie ostatniej linii w pętli. To brzydkie, że z licznikiem dzieje się tak wiele manipulacji. Chciałbym aktualizować ciągi bezpośrednio, jaks+='║'
, ale indeks jest również używany do poziomych pasków.źródło
+-|
do budowy łuków, patrz przykłady.Perl,
7882 znakówNiestety nie mogłem znaleźć sposobu na skorzystanie z bonusu bez zwiększenia rozmiaru o więcej niż 10%. Mogę jeszcze zwyciężyć.
Bez golfa
Naprawdę całkiem proste. Zwiększa
╨$n╨
stopniowo dolną linię ( ), jednocześnie skracając górną linię (══
) o dwa znaki, kończąc się, gdy nie można jej już skrócić, więc nie muszę zadzierać z licznikami.źródło
─
dla n = 0, ale nie powinno nic drukować.-n
: Wypróbuj online!Bash, 124 bajty (112 znaków)
Przykładowy przebieg:
źródło
Japt
-R
, 29 bajtówUżywa
+
i-
. Poświęcono 4 bajty, aby poradzić sobie z cholerną weryfikacją danych wejściowych!Spróbuj
Wyjaśnienie
źródło
0
If the integer is 0 then don't output anything
z wyzwania: /0
,false
lub pusty ciąg kosztem niektórych bajtów, ale nie wiem, czy któryś z tych byłoby dopuszczalne z wyjątkiem, być może, pusty ciąg znaków, który kosztował mnie 5 bajtów (0
kosztowałoby mnie to tylko 1).JavaScript (ES6), 101 znaków
Wyjaśnienie
Funkcja rekurencyjna, która drukuje każdą linię
Test
Test nie używa domyślnego parametru do kompatybilności przeglądarki.
Pokaż fragment kodu
źródło
PHP (109 znaków)
Nadal muszę pozbyć się tego str_repeat, ale większość alternatyw nie obsługuje znaków mulyibyte.
źródło
Siatkówka , 79 znaków
Wypróbuj online.
Wykorzystuje nową funkcję Retina, która zastępuje liczbę dziesiętną
\d+
listą tylu znaków$0$*═
.źródło
Swift (209 bajtów)
Prawdopodobnie Swift nie jest najlepszym językiem do tego, po raz pierwszy próbuję zrobić wyzwanie w golfa kodowego:
źródło
Rubinowy, 90 bajtów (74 znaków)
Przykładowy przebieg:
źródło
Haskell,
151162 bajtówEdycja: zapomniałem traktować
0
jako dane wejścioweźródło
𝔼𝕊𝕄𝕚𝕟, 54 znaki / 95 bajtów
Try it here (Firefox only).
Wyjaśnienie
UWAGA: wykorzystuje to dobre bloki kopiowania, aby dotrzeć do miejsc, w których zwykła zmienna deklarująca nie mogła dotrzeć.
źródło
Sed, 97 bajtów (81 znaków)
(Kod 96 bajtów (80 znaków) + opcja wiersza poleceń 1 znak)
Wejście oczekiwać jako jednoskładnikowa liczba całkowita .
Przykładowy przebieg:
Sed, 105 bajtów (75 znaków)
(Kod 104 bajty (74 znaki) + opcja wiersza poleceń 1 znak)
Wejście oczekiwać jako jednoskładnikowa liczba całkowita .
Przykładowy przebieg:
źródło
Płótno , 15 bajtów
Wypróbuj tutaj!
Wyjaśnienie:
źródło