SQL、182の 175 173 187バイト
これが最短になるというわけではありませんが、SQLを最小化するのは面白いことです。[編集]指摘したように、when input = 1ルールを適用しませんでした-2行のみ表示します。より良い方法を考えることはできませんが、vロジックを変更して数バイトを節約しました;)事前に2を追加すると、後で繰り返す必要がないため、数バイトを節約できます[/ 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]不要なスペースを削除しました[/ edit1] [edit2] && iを&iに変更しました。これは2文字を削減しますが、ユーザーは三角形の数を2回入力するように強制します...:PIは&& iを使用して私の「良いコーディング習慣」が2バイトになることを認識しました!! ホラー!![/ edit2]
説明
(注:この説明では&& 1を使用しているため、プロンプトは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>