SQL,182个 175 173 187字节
并不是说这将是最短的,但是尝试最小化sql仍然很有趣;)我在Oracle 11中做到了,但是,这些应该是基本的SQL。指出,[edit]我没有应用when input = 1规则-仅显示2行。我想不出一种更好的方法,但是,我确实通过修改v逻辑节省了几个字节;
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]删除了一些不必要的空格[/ edit1] [edit2]将&& i更改为&i。它削减了2个字符,但是迫使用户两次输入三角形的数量...:PI意识到使用&& i的“良好编码习惯”使成本为2个字节!惊恐的事件!![/ edit2]
说明
(注意:我在此说明中使用&& 1,因此它仅提示一次,上面的&1节省了代码空间,但提示多次;))
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);
输出量
SQL> accept i
1
SQL> /
/\
/__\
SQL> accept i
2
SQL> /
____
/\ /
/__\/
SQL> accept i
3
SQL> /
____
/\ /\
/__\/__\
SQL> accept i
12
SQL> /
________________________
/\ /\ /\ /\ /\ /\ /
/__\/__\/__\/__\/__\/__\/
SQL>