Biorąc pod uwagę nieujemną liczbę całkowitą, wydrukuj X
tak dużą wartość. X
jest wyjściem dla danych wejściowych 0
, a dodasz ukośniki równe wejściowi w każdym kierunku, aby rozszerzyć X
dla większych danych wejściowych.
Przypadki testowe
0
X
1
\ /
X
/ \
2)
\ /
\ /
X
/ \
/ \
...
10
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
X
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
Zasady
Możesz albo wydrukować wynik, albo zwrócić ciąg lub listę ciągów z funkcji. Końcowy znak nowej linii, a także dodatkowe białe znaki wewnętrzne, które nie wpływają na wygląd, są dozwolone.
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach!
X
w środku (część tego, dlaczego go dodałem), ale kto wie: DOdpowiedzi:
Płótno , 3 bajty
Wypróbuj tutaj!
połowa wielkości odpowiedzi na węgiel drzewny: D
źródło
Węgiel , 6 bajtów
Twoje bzdury mnie nie powstrzymują;)
Wypróbuj online!
źródło
JavaScript (ES6), 79 bajtów
Używa funkcji rekurencyjnej g, która przechodzi przez siatkę i buduje znak wyjściowy po znaku.
W jaki sposób?
Obie zmienne x i y iteracyjne od 2N do -1 , gdzie n jest wprowadzanie danych.
Dla każdej pozycji (x, y) w siatce wybieramy jeden z następujących znaków:
/
\
X
za pomocą następujących testów:
~x
: Falsy, jeśli x == -1 : osiągnęliśmy koniec linii.x-y
: Falsy, jeśli x == y : znajdujemy się na przekątnej.x+y-w
: Falsy, jeśli x + y == w : znajdujemy się na przekątnej.x-n
: Falsy, jeśli x == n : ponieważ ten test jest wykonywany tylko, gdy x == y , oznacza to, że znajdujemy się dokładnie w środku siatki.oraz następujące drzewo decyzyjne:
Próbny
Pokaż fragment kodu
źródło
MATL , 16 bajtów
Wypróbuj online!
Rozważ dane wejściowe
2
jako przykład. Stos pokazano tutaj do góry nogami, tzn. Elementy dolne to te, które ostatnio zostały wypchnięte.źródło
C,
108106 bajtówWypróbuj online!
(-2 golfa dzięki MD XF)
Drukuje dwa znaki (początkowo
c = 47
ukośnik ic + 45
odwrotny ukośnik; potem zamieniane) z dynamiczną szerokością pola.Szerokość pola zaczyna się na
1
i2n
, a przy każdej iteracji pierwsza szerokość jest zwiększana o 1, a druga jest zmniejszana o 2.Gdy szerokość drugiego pola wynosi 0, to
'X'
zamiast zwykłych znaków wypisywany jest znak nowej linii i odwraca kierunek przyrostów (i
). Nowa linia jest drukowana osobno dla wszystkich pozostałych linii (puts("")
).źródło
a,b,i=1,c;g(n){for(b=2*n,c=47;a+=i;b?puts(""):(i=-i,c=92),b-=2*i)printf("%*c%*c",a,b?c+45*i:88,b,b?c:10);}
wypróbuj online!shortC , 111 bajtów
Na podstawie mojego C odpowiedź . Konwersje:
R
->printf(
P
->putchar(
W
->while(
O
->for(
");}
To również używa kodów ASCII dla
\
i/
.Wypróbuj online!
źródło
Python 2 , 81 bajtów
Wypróbuj online!
źródło
C,
168155150 bajtów-5 dzięki Computronium
Z pewnością można grać w golfa; Robię to Wypróbuj online!
Nie golfowany:
źródło
V , 21 bajtów
Wypróbuj online!
Hexdump:
Wyjaśnienie:
Zasadniczo mamy Wstaw X, n razy przedłużamy ukośniki .
Ale to nie jest takie proste, ponieważ musimy również dodać ukośniki za pierwszym razem. Jeśli ukośniki już tam były, moglibyśmy napisać rozciągać ukośniki jako:
Co zaoszczędziłoby nam 6 bajtów.
źródło
C #,
157122120 bajtówWersja bez golfa:
źródło
_=d=>new string(' ',d);
(nie ma potrzeby używania nawiasów klamrowychd
). Możesz usunąć nawiasy klamrowe wokół pętli for. Skorzystaj z pełnego ciągu, aby nie trzeba było uciekać przed wszystkimi odwrotnymi ukośnikami. Jeśli ustawisz,i=0
możesz to zrobić++i<a+1
i usunąći++
.\n
podawać rzeczywistej linii, ale nie jestem pewien, czy będziesz w stanie usunąć nawiasy klamrowe wokół pętli for, musisz spróbować.++i<a+1
na++i<=a
EDIT można również oszczędzania 4 więcej bajtów zmieniającFunc
odnew string(' ',d)
do"".PadLeft(d)
_
.Mathematica, 71 bajtów
(Częściowo zainspirowany 104-bajtowym rozwiązaniem Jenny_mathy)
Zwraca listę ciągów.
Objaśnienie:
IdentityMatrix[2#+1]
tworzy macierz o odpowiednim rozmiarze z 1s wzdłuż przekątnej i 0s w innym miejscu. Następnie mnożymy go przez"\\"
(uciekający ukośnik odwrotny), co czyni go macierzą z ukośnikami odwrotnymi wzdłuż przekątnej i 0 w innych miejscach, ponieważ oczywiście 1 razy odwrotny ukośnik jest odwrotnym ukośnikiem, a 0 razy odwrotny ukośnik to 0. Dodajemy to do"/"
razy odwrotność, aby zrobić kształt X. Prawie skończyliśmy, ale wszędzie są jeszcze zero, a środek jest"\\" + "/"
. Naprawiamy te dwie rzeczy, zastępując" "
za0
i"X"
zaa_+_
, co pasuje do dowolnej sumy dwóch rzeczy (tak jak_+_
powinno, ale Mathematica jest zbyt sprytna dla własnego dobra i interpretuje to jako 2 razy_
). Na koniec""<>#&/@
zamienia to w listę ciągów.źródło
Java (OpenJDK 8) , 135 bajtów
Wyrażenie lambda, które przyjmuje liczbę całkowitą i zwraca tablicę ciągów
Wypróbuj online!
Nie golfowany:
źródło
T-SQL, 201 bajtów
Sformatowany:
Dane wejściowe są w kolumnie a w nazwanej tabeli t , zgodnie z naszymi wytycznymi .
źródło
Rubin , 66 bajtów
Funkcja rekurencyjna.
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka ,
2417 bajtówWypróbuj online!
Jak to działa
-6 bajtów dzięki @LeakyNun i -1 bajtów z dodatkową poprawą
źródło
Partia, 201 bajtów
Zaczyna się od zbudowania górnej linii, a następnie po wydrukowaniu każdej linii przesuwa
\
prawą spację i/
lewą spację raz, upewniając się, że tworząX
środek.źródło
PHP , 115 bajtów
Wypróbuj online!
źródło
Siatkówka , 74 bajty
Wypróbuj online! Wyjaśnienie:
Umieść
X
.Zaczynając od
X
, pracując w górę, za\
każdym razem umieść po przekątnej w lewo./
Po/
ostatnim czasie umieść jeszcze dwa spacje .Zaczynając od
X
, pracując w dół, za/
każdym razem umieść po przekątnej w lewo.\
Po/
ostatnim czasie umieść jeszcze dwa spacje .Liczba spacji między dwiema przekątnymi musi być nieparzysta, więc ostatnia spacja w każdej linii (z wyjątkiem oryginalnej
X
linii) jest usuwana.źródło
Mathematica, 131 bajtów
Mathematica, 104 bajty
oto inne podejście z wykorzystaniem siatki
źródło
APL (Dyalog) , 25 bajtów
Wymaga
⎕IO←0
ustawienia domyślnego w wielu systemach.Wypróbuj online!
' \/'[
…]
Indeksuj ciąg za pomocą⎕
uzyskać dane wejściowe2×
pomnóż przez dwa1+
Dodaj jeden⍳
niż wiele liczb całkowitych∘.=⍨
tabela równości (tj. matryca tożsamości; przekątna NW-SE)(
…)
Zastosuj do tego następującą milczącą funkcję⊢
argument+
plus2×
dwa razy⌽
argument lustrzany w poziomie (tj. przekątna NE-SW)źródło
Bash , 138 bajtów
Wypróbuj online!
Naprawdę długi, bash ogrzewa „\ i /”
Mniej golfa
źródło
Python 2 ,
9584 bajtów-10 bajtów dzięki @FelipeNardiBatista
Wypróbuj online!
źródło
05AB1E , 21 bajtów
Wypróbuj online!
źródło
Perl 5, 110 + 1 = 111 bajtów
Używa
-n
flagi.źródło
QBIC , 90 bajtów
Jak działa ta potworność, pozostawia się czytelnikowi jako ćwiczenie ...
Przykładowe dane wyjściowe:
źródło
Visual Basic.Net ,
454450 bajtównie jestem pewien, czy zrobienie func
writeline
pozwoli zaoszczędzić niektóre bajty dzięki Stephenowi S za wskazanie naas ...
usunięcie również zmienił sięinteger
naobject
ostatnią edycję zmienił pierwszy wsteczźródło
as Types
, ponieważ jeśli takOption Strict Off
, VB.NET działa jak luźno napisany język.function
s ! =for loops
Dzięki za golfaOption Strict
Domyślnie nie jest wyłączone? Jest przynajmniej w Visual Studio05AB1E , 22 bajty
Wypróbuj online!
Wyjaśnienie
Alternatywne rozwiązanie 22-bajtowe
źródło
Pyke, 14 bajtów
Wypróbuj tutaj!
źródło
tcl, 134
próbny
Ustaw
n
w pierwszym wierszu.Być może mogę bardziej zagrać w golfa, stosując podejście rekurencyjne
źródło
R ,
7572 bajtówZainspirowany tą odpowiedzią , generuje ukrytą matrycę i zapisuje ją na standardowe wyjście; czyta rozmiar ze standardowego wejścia. Musi zbudować macierz znaków spacji i używa
sep=''
b / c, w przeciwnym razie ma problemy ze spacjami .Wypróbuj online!
źródło