Zaczynając od /\
, możesz utworzyć wzór trójkąta Sierpińskiego, dodając linię poniżej, tak aby ...
- Wszelkie luźne oddział
/
lub\
podziały ponownie na dwie gałęzie:/\
. - Każde zderzenie gałęzi
\/
ginie bez niczego (oprócz spacji).
Powtórzenie tych zasad daje
/\
/\/\
/\ /\
/\/\/\/\
/\ /\
/\/\ /\/\
etc...
Napisz program lub funkcję, która przyjmuje dodatnią liczbę całkowitą N i wypisuje pierwsze N wierszy tego wzoru na standardowym wyjściu, bez więcej początkowych lub końcowych spacji niż to konieczne.
Na przykład, jeśli wejście jest 1
wyjściem, musi być
/\
Jeśli wejście jest 2
wyjściem, musi być
/\
/\/\
Jeśli wejście jest 8
wyjściem, musi być
/\
/\/\
/\ /\
/\/\/\/\
/\ /\
/\/\ /\/\
/\ /\ /\ /\
/\/\/\/\/\/\/\/\
I tak dalej.
Wygrywa kod z najmniejszą liczbą bajtów.
code-golf
fractal
code-golf
math
polynomials
abstract-algebra
code-golf
geometry
3d
popularity-contest
string
code-golf
math
3d
code-golf
javascript
browser
code-golf
random
array-manipulation
code-golf
restricted-source
javascript
set-theory
code-golf
graph-theory
path-finding
decision-problem
code-golf
code-golf
primes
c
code-golf
graphical-output
fractal
fastest-code
simulation
code-golf
sequence
code-golf
graphical-output
code-golf
code-golf
math
binary
rational-numbers
code-golf
number
fibonacci
popularity-contest
code-golf
number
code-golf
game
Hobby Calvina
źródło
źródło
Odpowiedzi:
GolfScript (42 bajty)
Demo online
Wykorzystuje to dobrze znany związek między trójkątem Pascala i trójkątem Sierpińskiego.
źródło
CJam,
4846 bajtówProste podejście rekurencyjne oparte na obserwacjach 1 i 2 w pytaniu.
Wypróbuj online.
Jak to działa
CJam, 51 bajtów
Bardziej podoba mi się to podejście, ale nie może konkurować z tym rekurencyjnym. Nawet po wyeliminowaniu
2mL
(co powoduje co najmniej O (2 n ) czas wykonania), nadal mam 48 bajtów ...Podejście to koduje je
/\
jako 1, a podwójne spacje między nimi jako 0. Biorąc pod uwagę uzyskane liczby binarne tablic, widzimy, że konfiguracja n-tego wiersza odpowiada n-tej liczbie całkowitej większej niż 1, którą można wyrazić jako iloczyn różnych liczb Fermata (liczby całkowite w postaci 2 2 k +1 ).Jak to działa
źródło
Python 2 -
140 139 127 122 121 118116Na podstawie tymczasowych zamian ciągów znaków ( /programming//a/8687380/3419103 ):
/
>V
\
>V
\/
>__
(2 spacje)V
>/\
źródło
b*(N-1)+m+n
może byćb*~-N+m+n
JavaScript - 117 bajtów
Zminimalizowane:
Rozszerzony:
Przykładowe dane wyjściowe (dla
n = 20
):Teraz, gdyby tylko nazwy
repeat
ireplace
funkcje nie były tak długie. : Pźródło
Pyth, 45 bajtów
Przykładowy przebieg
Jak to działa
źródło
Ruby, 90 lat
Wyjaśnienie
Integer
.String#center
do utworzeniaString
"/\"
wn - 2
przestrzeni na każdej stronie i wstawiono doArray
(a
).a
ostatniego elementua
przy każdym wystąpieniu"\/"
zastąpienia" "
i przy każdym wystąpieniu" /"
lub" \"
zastąpieniu"/\"
.puts
do drukowania każdego elementu wea
własnej linii.źródło
Haskell,
128112źródło
import Data.List
(ponieważunlines
unlines
jest w preludium.JavaScript (E6) 107
106Edycja: stała liczba bajtów, rekursywna.
Niewiele różni się od drugiej odpowiedzi JS ... przynajmniej ta „drukuje” wzór zgodnie z żądaniem. Rdzeń zamienia „/” „\” na „/ \”, a cała reszta na „” w każdej nowej linii.
Testuj w konsoli FireFox / FireBug
Wynik
źródło
Perl 5–56 bajtów
\ 0 można zastąpić rzeczywistymi znakami null-bajtowymi
Wykorzystuje fakt, że jeśli zignorujesz spacje wiodące i reprezentujesz „/ \” jako 1 i „” jako 0, wzór w danym wierszu f (n) = f (n-1) ^ (f (n-1) < <1). Jednak obliczenia w powyższym kodzie są wykonywane na ciągach, które są zbliżone do oczekiwanego wyniku (brak spacji wiodących, inne spacje zastąpione bajtami zerowymi) dzięki bitowej manipulacji ciągiem perla.
źródło
Python 2, 84 bajtów
źródło
JavaScript z lambdas,
141128141
128
Można przetestować w przeglądarce Firefox (n = 16):
źródło
Python 2, 97 bajtów
źródło
Mathematica, 86 bajtów
źródło