Biorąc pod uwagę wejście dwóch liczb całkowitych n i m , wyprowadza drabinkę ASCII o długości n i rozmiarze m .
To jest drabina ASCII o długości 3 i rozmiarze 3:
o---o
| |
| |
| |
+---+
| |
| |
| |
+---+
| |
| |
| |
o---o
To jest drabina ASCII o długości 5 i rozmiarze 1:
o-o
| |
+-+
| |
+-+
| |
+-+
| |
+-+
| |
o-o
To jest drabina ASCII o długości 2 i rozmiarze 5:
o-----o
| |
| |
| |
| |
| |
+-----+
| |
| |
| |
| |
| |
o-----o
Aby być konkretnym:
Długość ( n ) reprezentuje liczbę kwadratów, z których składa się drabina.
Rozmiar ( m ) reprezentuje szerokość i wysokość wnętrza - to znaczy nie licząc „granic” - każdego kwadratu.
Każdy kwadrat składa się z wewnętrznej przestrzeni wypełnionej spacjami, otoczonej przez
-
s na górze i na dole,|
s po lewej i prawej stronie oraz+
s we wszystkich czterech rogach.Granice między kwadratami łączą się ze sobą, więc dwie linie z rzędu
+--...--+
łączą się w jeden.Narożniki całej drabiny zastępuje się postacią
o
.Opcjonalnie możesz wypisać końcowy znak nowej linii.
Długość drabiny ( n ) zawsze będzie ≥ 2, a rozmiar ( m ) zawsze będzie ≥ 1.
Dane wejściowe mogą być traktowane jako ciąg oddzielony spacjami / przecinkami, tablica / lista / itp. Lub dwie funkcje / linia poleceń / itp. argumenty. Argumenty można przyjmować w dowolnej kolejności, która jest najwygodniejsza / najbardziej golfowa.
Ponieważ jest to code-golf , wygrywa najkrótszy kod w bajtach.
Wskazówka: powyższe przykłady można również wykorzystać jako przypadki testowe.
Odpowiedzi:
Pyth, 34 bajty
Zestaw testowy
Przyjmuje argumenty nowej linii rozdzielone na STDIN.
Korzysta z funkcji pomocnika
:
, która buduje każdy typ łańcucha pionowego z trzech znaków, a następnie replikuje w razie potrzeby, transponuje i łączy na nowej linii.źródło
Ruby, 71
nie wziął udziału w programie testowym
źródło
;
poh=0
, potrzeba miejsca poputs
. Ale wynik rośnie tylko z 1 postacią, ponieważ wcześniej było dodatkowe miejsceputs
.CJam,
4342 bajtyWynik mnie nie przeraża. Ale ja nie jestem Dennis, prawda?
Dane wejściowe to 2 elementy oddzielone spacjami. Najpierw długość
Wyjaśnienie
źródło
JavaScript (ES6), 89
... powtórz, powtórz, powtórz ...
Test
źródło
document.getElementById('elem').
można to zastąpićelem.
! +1 za to, ale czy mógłbyś wskazać jakieś dokumenty na ten temat?C #, 1412 bajtów
... Moja pierwsza próba CodeGolf, raczej nie wygra, ale działa, więc zaczynamy:
źródło
using System;class P{static int m;static void Main(){int n = int.Parse(Console.ReadLine());m = int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using System;class P{static int m;static void Main(){int n=int.Parse(Console.ReadLine());m=int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using C=System.Console;class P{static void Main(){int i,k,n=int.Parse(C.ReadLine()),m=int.Parse(C.ReadLine());System.Action<char,char> M=(x,y)=>C.WriteLine(x+new string(y,m)+x);M('o','-');for(k=0;k<n;k++){for(i=0;i<m;i++){M('|',' ');}if(k<n-1){M('+','-');}}M('o','-');}}
. Jednak najprawdopodobniej jest tutaj większy potencjał, po prostu poprzez zmianę sposobu robienia rzeczy.Julia, 87 bajtów
Jest to funkcja, która akceptuje dwie liczby całkowite i zwraca ciąg znaków.
Nie golfowany:
źródło
pb - 147 bajtów
Jest to rodzaj wyzwania, w którym zgodnie z prawami pb powinien być naprawdę dobry. Rysowanie prostych zdjęć za pomocą znaków jest dokładnie tym, do czego zaprojektowano pb. Niestety, to chyba tylko kiepski język.
Najpierw pobiera długość wejściową, a następnie rozmiar. Pobiera dane wejściowe w postaci wartości bajtów, na przykład:
python -c 'print(chr(5) + chr(7))' | ./pbi.py ladder.pb
Spójrz, zabawna animacja!
Z komentarzami:
źródło
Pure Bash,
132 130 128127 bajtówTak, mogę upuścić jeszcze 1 bajt, zastępując ostatni
${p% *}
, ale wolę to:Próba:
źródło
Haskell,
10097 bajtówPrzykład użycia:
Jak to działa:
Edycja: @Christian Irwan znalazł 3 bajty. Dzięki!
źródło
m=init$[1..l]>>("|"!" "<$u)++["+"!"-"]
(_:m)=[1..l]>>["+"!"-"]++("|"!" "<$u)
_:m=[1..l]>>["+"!"-"]++("|"!" "<$u)
działabrainfuck - 334 bajty
Spodziewałem się, że będzie to o wiele krótsze.
To ustawia „ciąg”, który wygląda
| (...) |
i taki, który wygląda+----(...)----+
, drukując każdy w razie potrzeby, ze specjalną obudową dlao
s na górze i na dole.Wymaga interpretera, który wykorzystuje komórki 8-bitowe i pozwala przejść w lewo od komórki 0 (czy to do komórek ujemnych, czy do zapętlenia). Z mojego doświadczenia wynika, że są to najczęściej używane ustawienia domyślne.
Z komentarzami:
źródło
PowerShell, 77
80źródło
Jolf, 36 bajtów
Wypróbuj tutaj!
Wyjaśnienie
źródło
Perl, 98 bajtów
źródło
+
znaków w twoim kodzie, czy bierzesz pod uwagę, że szczeble pośrednie mają+
znaki na każdym końcu?($n,$m)=@ARGV;
i zakładając, że są już ustawione - nie jestem pewien, czy jest to zgodne z duchem. Będę musiał to sprawdzić.@ARGV
. Ponadto, odpowiadając komuś, pamiętaj o dołączeniu @nazwa_użytkownika, aby otrzymać alert. Nie muszę tego robić, ponieważ to jest twój post.C, 122 bajty
Wypróbuj online .
źródło
Tcl, 187 bajtów
Ten kod jest przeznaczony do umieszczenia w pliku z argumentami wprowadzonymi w wierszu poleceń. podaj liczbę skrzynek i szerokość w tej kolejności.
źródło
PHP, 81 bajtów
Oczekuje 2 argumentów przekazanych przy bezpośrednim wywołaniu polecenia PHP. Pierwszy to rozmiar, a drugi to liczba kroków.
Może wymagać pewnych ulepszeń.
źródło
Python 2, 94 bajty
„Niegolfowany”:
źródło
Perl 5 , 91 + 1 (-a) = 92 bajty
Wypróbuj online!
źródło
Pip
-l
, 35 bajtówWypróbuj online!
Wyjaśnienie
Niektóre inne wersje
Próbowałem wielu różnych podejść, próbując złapać Pytha ...
Szczególnie lubię
t**b
te, które wykorzystują matematykę do generowania pionowego wzoru drabiny:1000200020001
Może być następnie wykorzystany do generowania wzorówo|||+|||+|||o
i- - - -
, które składają się na drabinie. Niestety nie udało mi się, aby to podejście było krótsze niż podejście do łączenia / zawijania.źródło