Twoim zadaniem jest napisanie programu lub funkcji, która wypisze trójkąt ASCII. Wyglądają tak:
|\
| \
| \
----
Twój program pobierze pojedyncze dane liczbowe n
z ograniczeniami 0 <= n <= 1000
. Powyższy trójkąt miał wartość n=3
.
Trójkąt ASCII będzie miał n
ukośniki odwrotne ( \
) i pionowe paski ( |
), n+1
linie i myślniki ( -
), a każda linia będzie miała liczbę spacji równą liczbie linii (na podstawie 0, tj. Pierwsza linia to linia 0) oprócz linii ostatecznej .
Przykłady:
Wkład:
4
Wydajność:
|\
| \
| \
| \
-----
Wkład:
0
Wydajność:
W tym przypadku testowym dane wyjściowe muszą być puste. Brak białych znaków.
Wkład:
1
Wydajność:
|\
--
Dane wejściowe i wyjściowe muszą być dokładnie takie, jak określiłem.
To jest golf golfowy , więc celuj w możliwie najkrótszy kod!
code-golf
ascii-art
code-golf
rubiks-cube
code-golf
path-finding
maze
regular-expression
code-golf
math
rational-numbers
code-golf
kolmogorov-complexity
graphical-output
code-golf
tips
code-golf
string
permutations
code-golf
sorting
base-conversion
binary
code-golf
tips
basic
code-golf
number
number-theory
fibonacci
code-golf
date
code-golf
restricted-source
quine
file-system
code-golf
code-golf
math
code-golf
ascii-art
code-golf
math
primes
code-golf
code-golf
math
matrix
code-golf
string
math
logic
factorial
code-golf
palindrome
code-golf
quine
stateful
code-golf
interactive
code-golf
board-game
code-golf
math
arithmetic
code-golf
string
code-golf
math
matrix
code-golf
math
abstract-algebra
polynomials
code-golf
date
code-golf
string
array-manipulation
sorting
code-golf
game
code-golf
string
code-golf
ascii-art
decision-problem
code-golf
number
sequence
code-golf
code-golf
code-golf
sequence
fibonacci
code-golf
math
geometry
random
code-golf
code-golf
math
decision-problem
fractal
rational-numbers
code-golf
number
number-theory
code-golf
combinatorics
permutations
card-games
code-golf
math
sequence
array-manipulation
fibonacci
code-golf
sequence
decision-problem
graph-theory
code-golf
ascii-art
parsing
lisp
code-golf
string
math
natural-language
logic
code-golf
math
logic
code-golf
string
alphabet
code-golf
string
code-golf
string
Okx
źródło
źródło
0
wielkość liter mogła mieć nieoczekiwany wynik, ponieważ jest toOdpowiedzi:
Galaretka , 14 bajtów
Wypróbuj online!
Jak to działa.
źródło
C, 58 bajtów
-
Dzięki @Steadybox, który komentarze do tej odpowiedzi pomogły mi ogolić kilka bajtów w powyższym rozwiązaniu
źródło
2*n
tam dwa razy i przeszkadza mi to, czy ktoś może wymyślić sprytny sposób, aby jakoś to skrócić?JavaScript (ES6),
9785817574 bajtówOkazuje się, że nie użyłem prawie wystarczającej rekurencji
źródło
05AB1E ,
161516 bajtówOszczędność bajtu dzięki Adnanowi
Wypróbuj online!
Wyjaśnienie
źródło
ð×.svy¦…|ÿ\}¹>'-×»
, zgaduję, że mój pomysł.s
nie był tak dobry, jak myślałem. Fajne zastosowanieÿ
, nie widziałem tego wcześniej..s
tym, zaczynając od,<Ýð×
ale wpadłem w kłopoty ze specjalnym przypadkiem z tymi metodami.FðN×…|ÿ\}Dg'-×»
na 15 bajtówDg
! Dzięki :).s
spowodowało także zagnieżdżenie tablic i spłaszczenie, które wymagało więcej bajtów.V ,
181716 bajtów1 bajt zapisany dzięki @ nmjcman101 za użycie innego sposobu wyprowadzania niczego, jeśli wejście jest
0
Wypróbuj online!
Hexdump:
Wyjaśnienie (nieaktualne)
Najpierw mamy pętlę, aby sprawdzić, czy argument jest
0
. Jeśli tak, poniższy kod wykonuje się (|\
jest zapisywany). W przeciwnym razie nic nie zostanie zapisane, a bufor będzie pusty.Teraz, gdy mamy szczyt trójkąta, musimy stworzyć jego ciało.
Teraz mamy jedną dodatkową linię na dole bufora. Musi to zostać zastąpione przez
-
s.Ta odpowiedź byłaby krótsza, gdybyśmy mogli uzyskać cokolwiek, co chcemy
0
V ,
1413 bajtówWypróbuj online!
źródło
«
oczywiście. Sprytny! :)C #, 93 bajty
Anonimowa funkcja zwracająca trójkąt ASCII jako ciąg znaków.
Pełny program z nieoznaczoną, komentowaną funkcją i przypadkami testowymi:
źródło
Python 2 , 69 bajtów
Wypróbuj online!
źródło
"".join
i zastępując go*
operatorem orazsep
argumentem funkcji uśpienia, więclambda x:print(*['|'+' '*n+'\\'for n in range(x)]+['-'*-~x*(x>0)],sep="\n")
CJam ,
242221 bajtówZaoszczędzono 1 bajt dzięki Martinowi Enderowi
Wypróbuj online!
Wyjaśnienie
źródło
SmileBASIC, 51 bajtów
źródło
PowerShell ,
5167 bajtówWypróbuj online!
(Zwiększenie bajtu, aby uwzględnić brak nowej linii)
Pobiera dane wejściowe
$n
i sprawdza, czy nie jest to zero. Następnie zapętlić, aby zbudować trójkąt, i kończy się linią-
. UjawnienieWrite-Output
następuje po zakończeniu programu.źródło
Siatkówka , 39 bajtów
Wypróbuj online
Konwertuj dane dziesiętne na unary. Zamień każdy
1
z nich|<N-1 spaces>\¶
, wydrukuj i cofnij zamianę. Zastąp każdy1
łącznikiem, a ostatni łącznik 2 łącznikami. Tadaa!źródło
Common Lisp,
8986 bajtówTworzy anonimową funkcję, która pobiera dane wejściowe n i drukuje trójkąt do
*standard-output*
(domyślnie standardowe wyjście).Grał w golfa
Bez golfa
Jestem pewien, że mógłbym to jakoś skrócić.
źródło
C
1019375 bajtówWersja bez golfa
@Steadybox Dzięki za wskazanie, ma wiele sensu.
źródło
printf("%c",'_');
tak gadatliwy?i;f(n){for(i=0;i++<n;)printf("%c%*c\n",124,i,92);for(;n--+1;)printf("-");}
i;f(n){for(i=0;i++<n;)printf("|%*c\n",i,92);for(;n--+1;)printf("-");}
n--+1
można skrócić do~n--
Węgiel drzewny , 15 bajtów
Wypróbuj online!
Awaria
źródło
»
można pominąć.Japt , 20 bajtów
Zaoszczędź 2 bajty dzięki @ETHproductions
Wypróbuj online!
Wyjaśnienie
źródło
o@'|+SpX +'\Ãp'-pUÄ)·
z powodu błędu (naprawdę niezamierzony efekt uboczny automatycznych funkcji), można następnie usunąć'
w'-
.p
. Dzięki temu możesz np.m*2
mp2
J, 20 bajtów
-13 bajtów dzięki Bob
Wypróbuj online!
oryginał: 33 bajty
bez golfa
Wypróbuj online!
źródło
*,&'-' '|',.'\'{."0~_1-i.
*,&'-' '|',.' \'{~=@i.
Pyke,
1817 bajtówWypróbuj tutaj!
źródło
Python2, 73 bajty
Pełny program. Próbowałem także interpolacji ciągów dla ostatniego wiersza, ale okazało się, że jest on o kilka bajtów dłuższy: /
Inne rozwiązanie przy 73 bajtach:
Przypadki testowe
źródło
MATL , 19 bajtów
Wypróbuj online!
źródło
QBIC , 41 bajtów
Wyjaśnienie
źródło
R, 101 bajtów
Ten kod jest zgodny z przypadkiem
n=0
testowym, jeśli tylko wziąć pod uwagęSTDOUT
!Rzeczywiście,
stopifnot(n>0)
część zatrzymuje wykonywanie skryptu, wyświetla tylkoSTDOUT
zapisyError: n > 0 is not TRUE
doSDTERR
.Nie golfowany:
źródło
Python 2 , 62 bajty
Wypróbuj online!
Drukuje wiersz po wierszu, za każdym razem dodając kolejne spacje przed odwrotnym ukośnikiem. Jeśli funkcja, która nie drukuje, byłaby dozwolona, prawdopodobnie byłaby krótsza.
źródło
JavaScript (ES6), 71 bajtów
Wyjścia do konsoli. Zaoszczędź 6 bajtów, jeśli drukowanie w powłoce JavaScript SpiderMonkey jest dopuszczalne. Zapisz 13 bajtów, jeśli zwracanie danych wyjściowych jest dopuszczalne.
źródło
$`
wzorze, ale nie wiem, czy nadal bym o nim pomyślał. Miły.Python 2 , 67 bajtów
Kolejna funkcja w Pythonie 2 przy użyciu
rjust
.Wypróbuj online!
źródło
Python 3 , 60 bajtów
Wypróbuj online!
Dwa kolejne rozwiązania z tą samą liczbą bajtów.
źródło
Perl, 63 bytes
Ungolfed:
$"
is the list separator, which defaults to " ".$/
is the output record separator, which defaults to "\n".$_
is the implicit loop variable.źródło
$n=<>
?Haskell,
8265 bytesTry it online! Usage:
Or more nicely:
źródło
Pyth,
2318 bytesTest suite available online.
Thanks to Ven for golfing off 5 bytes.
Explanation
źródło
|
for an additional byte.Javascript 101(Full Program), 94(Function Output), 79(Return) bytes
Full Program
Will not run in Chrome (as process doesn't exist apparently)
Will not run in TIO (as prompt apparently isn't allowed)
Function with EXACT print
Try it Online
Function with return string
Try it Online
Repeating characters in Javascript is dumb and so is suppressing newlines on output
źródło
Python 2, 82 bytes
Try it online!
Longer that the other Python answers but a recursive function just to be different.
It feels wasteful using two
print
statements but I can't find a shorter way round it. Also theexit()
wastes 7 to stop it printing decreasing number of-
under the triangle.źródło
-~c*(c>0)
on the last line to save 3 bytes :)c and-~c
.