Y fractal for a given number of levels
for 3 levels:
\ / \ / \ / \ /
| | | |
\ / \ /
\ / \ /
| |
| |
\ /
\ /
\ /
\ /
|
|
|
|
| #include <iostream> | |
| void print (int level) { | |
| for (int i = 0 ; i < level ; i += 1) { | |
| int p = 1 << i; | |
| int c = 1 << (level - i); | |
| int sp = p - 1; | |
| int s = (1 << (i + 1)) - 1; | |
| int sn = (1 << (i + 2)) - 1; | |
| // top part | |
| for (int k = 0 ; k < p ; k += 1) { | |
| std::cout << std::string(sp + k, ' '); | |
| for (int j = 0 ; j < c - 1 ; j += 1) { | |
| if (j & 1) std::cout << '/' << std::string(s + 2 * k, ' '); | |
| else std::cout << '\\' << std::string(s - 2 * k, ' '); | |
| } | |
| std::cout << '/' << std::endl; | |
| } | |
| // bottom part | |
| for (int k = 0 ; k < p ; k += 1) { | |
| std::cout << std::string(s, ' '); | |
| for (int j = 1 ; j < c >> 1 ; j += 1) { | |
| std::cout << '|' << std::string(sn, ' '); | |
| } | |
| std::cout << '|' << std::endl; | |
| } | |
| } | |
| } | |
| int main () { | |
| int n = 0; | |
| std::cout << "Enter levels: "; | |
| std::cin >> n; | |
| print(n); | |
| return 0; | |
| } |
| package main | |
| import ( | |
| "fmt" | |
| "strconv" | |
| ) | |
| func print(levels int) { | |
| for i := 0; i < levels; i += 1 { | |
| p := 1 << uint32(i) | |
| c := 1 << uint32(levels-i) | |
| sp := p - 1 | |
| s := (1 << uint32(i+1)) - 1 | |
| sn := (1 << uint32(i+2)) - 1 | |
| // top | |
| for k := 0; k < p; k++ { | |
| if sp+k > 0 { | |
| fmt.Printf("%"+strconv.Itoa(sp+k)+"s", " ") | |
| } | |
| for j := 0; j < c-1; j++ { | |
| if j&1 == 1 { | |
| fmt.Printf("/%"+strconv.Itoa(s+(k<<1))+"s", " ") | |
| } else { | |
| fmt.Printf("\\%"+strconv.Itoa(s-(k<<1))+"s", " ") | |
| } | |
| } | |
| fmt.Println("/") | |
| } | |
| // bottom | |
| for k := 0; k < p; k++ { | |
| fmt.Printf("%"+strconv.Itoa(s)+"s", " ") | |
| for j := 1; j < c>>1; j++ { | |
| fmt.Printf("|%"+strconv.Itoa(sn)+"s", " ") | |
| } | |
| fmt.Println("|") | |
| } | |
| } | |
| } | |
| func main() { | |
| fmt.Print("Enter Levels: ") | |
| var levels int | |
| fmt.Scan(&levels) | |
| print(levels) | |
| } |
| printf "Enter levels: " | |
| read level | |
| spaces () { | |
| for (( x = 0; x < $1; x += 1 )) | |
| do | |
| printf " " | |
| done | |
| } | |
| print () { | |
| for (( i = 0; i < level; i += 1 )) | |
| do | |
| p=$((1 << i)) | |
| c=$((1 << $((level - i)))) | |
| sp=$((p - 1)) | |
| s=$(($((1 << $((i + 1)))) - 1)) | |
| sn=$(($((1 << $((i + 2)))) - 1)) | |
| # top part | |
| for (( k = 0; k < p; k += 1 )) | |
| do | |
| spaces $((sp + k)) | |
| for (( j = 0; j < $((c - 1)); j += 1 )) | |
| do | |
| if [ $((j % 2)) -eq 1 ] | |
| then | |
| printf "/" | |
| spaces $((s + 2 * k)) | |
| else | |
| printf "\\" | |
| spaces $((s - 2 * k)) | |
| fi | |
| done | |
| printf "/\n" | |
| done | |
| # bottom part | |
| for (( k = 0; k < p; k += 1 )) | |
| do | |
| spaces $s | |
| for (( j = 1; j < $((c >> 1)); j += 1 )) | |
| do | |
| printf "|" | |
| spaces $sn | |
| done | |
| printf "|\n" | |
| done | |
| done | |
| } | |
| print "$level" |