Tiêu cực Kim tự tháp


13

Trong ngôn ngữ Pyramid Scheme của tôi , có một cấu trúc hơi buồn cười: tam giác trống:

^
-

Khi không có đối số, nó trả về 0. Để tạo 1bằng cách sử dụng cấu trúc này, chúng ta có thể sử dụng:

   ^
  /!\
 ^---
 -

Điều này chỉ đơn giản là chuyển 0đến chức năng phủ định. Chúng ta có thể tiếp tục phủ nhận kết quả này:

 ^
/!\
---^
  /!\
 ^---
 -

Để có được 0. Một phủ định nữa cho:

   ^
  /!\
 ^---
/!\
---^
  /!\
 ^---
 -

Thử thách

Cho một số nguyên n 1, xuất ra kim tự tháp trống bị phủ định n lần theo kiểu được mô tả.

Các trường hợp thử nghiệm

input
output

1
   ^
  /!\
 ^---
 -

2
 ^
/!\
---^
  /!\
 ^---
 -

3
   ^
  /!\
 ^---
/!\
---^
  /!\
 ^---
 -

6
 ^
/!\
---^
  /!\
 ^---
/!\
---^
  /!\
 ^---
/!\
---^
  /!\
 ^---
 -

Bằng cách phủ định ở đây tôi cho rằng bạn có nghĩa là bổ sung bitwise ( ~)?
dùng202729

@ user202729 Không, ý tôi là phủ định thường xuyên.
Conor O'Brien

Vậy đó là C / C ++ !( not).
dùng202729

@ user202729 Có. Mặc dù ý nghĩa của nó là tiếp tuyến với vấn đề
Conor O'Brien

1
/!\ Cảnh báo! /! \ Tôi thấy hình tam giác cảnh báo ở khắp mọi nơi!
RedClover

Câu trả lời:


7

Than , 17 byte

FN«↙^→/!\¶³‖T»↓^-

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

FN«

Vòng lặp cho số lượng phủ định thích hợp.

↙^→/!\¶³

In một chức năng phủ định. (Việc ³mở rộng tới ---.)

‖T

Phản chiếu vải.

»↓^-

Vào cuối vòng lặp, in hình tam giác trống.


Chỉ cần fyi, tam giác trống sử dụng -thay vì_
Conor O'Brien

@ ConorO'Brien Cảm ơn bạn đã chỉ ra điều đó! Tôi đã nghĩ rằng nó trông không hoàn toàn đúng, nhưng không thể đặt ngón tay của tôi lên nó ...
Neil





1

Java 8, 104 byte

n->{String r=n%2>0?"   ^\n":" ^\n";for(;n-->0;r+=n%2<1?"  /!\\\n ^---\n":"/!\\\n---^\n");return r+" -";}

Giải trình:

Hãy thử nó ở đây.

n->{                       // Method with integer parameter and String return-type
  String r=                //  Result-String, starting at:
           n%2>0?          //  If the input is odd:
            "   ^\n"       //   Start the result at "   ^" + new-line
           :               //  Else (the input is even):
            " ^\n";        //   Start the result at " ^" + new-line
  for(;n-->0;              //  Loop the input amount of times
    r+=n%2<1?              //   If the current row is even:
        "  /!\\\n ^---\n"  //    Append the result-String with "  /!\" + new-line
                           //                                  " ^---" + new-line
       :                   //   Else (the current row is odd):
        "/!\\\n---^\n"     //    Append the result-String with "/!\" + new-line
                           //                                  "---^" + new-line
  );                       //  End of loop
  return r                 //  Return the result-String
          +" -";           //   + " -"
}                          // End of method








0

Python 3 , 167 byte

def f(n):
	g=[[" "]*5for _ in'  '*-~n];a=["^","/!\\","---"]
	for i in range(n):
		for r,R in zip(a,g[i*2:]):R[(i-n)%2*2+(r>"]"):]=r
	g[-2][1]="^";g[-1][1]="-";return g

Hãy thử trực tuyến!

-4 byte nhờ ông Xcoder
-1 byte nhờ Jonathan Frech


' '*2*ncó thể ' '*n(hai không gian đó, nhưng eugh ... SE markdown), và sau đó ' '*n+' 'có thể được thay thế bằng ' '*-~ncho 168 byte .
Ông Xcoder

@ Mr.Xcoder ơi, cảm ơn!
HyperNeutrino

Tôi nghĩ rằng r=="^"có thể r>"]".
Jonathan Frech

@JonathanFrech Xuất hiện là như vậy, cảm ơn!
HyperNeutrino
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.