SQL, 182 175 173 187 byte
Không phải điều này sẽ là ngắn nhất, nhưng vẫn rất vui khi cố gắng giảm thiểu sql;) lol Tôi đã làm điều này trong Oracle 11, tuy nhiên, đây phải là SQL cơ bản. [sửa] như đã chỉ ra, tôi đã không áp dụng quy tắc khi input = 1 - chỉ hiển thị 2 dòng. Tuy nhiên, tôi không thể nghĩ ra cách nào tốt hơn để làm điều đó, tôi đã lưu một vài byte bằng cách sửa đổi logic v;) thêm 2 trước để tiết kiệm một vài byte bằng cách không phải lặp lại sau [/ edit]
select decode(&i,1,'',rpad(' ',v,'____')||z)||rpad(' /',v,'\ /')||decode(y,1,'\')||z||rpad('/',v-1,'__\/')||decode(y,1,'__\')from(select 2+floor(&i/2)*4v,mod(&i,2)y,chr(10)z from dual);
[edit1] đã xóa một số khoảng trắng không cần thiết [/ edit1] [edit2] đã thay đổi && i thành & i. Nó cắt giảm 2 ký tự, nhưng buộc người dùng phải nhập số tam giác hai lần ...: PI nhận ra "thói quen mã hóa tốt" của tôi khi sử dụng && tôi đã tốn 2 byte !! Kinh dị!! [/ edit2]
Giải thích
(lưu ý: Tôi sử dụng && 1 trong phần giải thích này để nó chỉ nhắc một lần, & 1 ở trên sẽ tiết kiệm không gian mã, nhưng nhắc nhiều lần;))
select -- line 1
decode(&&1,1,'', -- don't need line 1 if input is 1
rpad(' ',v,'____') || z ) || -- every pair of triangles
-- line 2
rpad(' /',v,'\ /') || -- every pair of triangles
decode(y,1,'\') || z || -- add the final triangle, input: 1,3,5 etc.
-- line 3
rpad('/',v-1,'__\/') || -- every pair of triangles
decode(y,1,'__\') -- add the final triangle, input: 1,3,5 etc.
from (select 2+floor(&&i/2)*4 v, -- common multiplier. 4 extra chars for every triangle pair
mod(&&i,2) y, -- Flag for the final triangle (odd inputs, 1,3,5, etc)
chr(10) z -- CR, here to save space.
from dual);
Đầu ra
SQL> accept i
1
SQL> /
/\
/__\
SQL> accept i
2
SQL> /
____
/\ /
/__\/
SQL> accept i
3
SQL> /
____
/\ /\
/__\/__\
SQL> accept i
12
SQL> /
________________________
/\ /\ /\ /\ /\ /\ /
/__\/__\/__\/__\/__\/__\/
SQL>