SQL, 182 175 173 187 octets
Non pas que ce soit jamais le plus court, mais il est toujours amusant d'essayer de minimiser sql;) lol Je l'ai fait dans Oracle 11, cependant, il devrait s'agir de SQL de base. [edit] comme indiqué, je n'ai pas appliqué la règle quand input = 1 - affichez seulement 2 lignes. Je ne peux pas penser à un meilleur moyen de le faire, cependant, j’ai économisé quelques octets en modifiant la logique v;) ajouter 2 à l’avance permet d’économiser quelques octets en évitant de le répéter plus tard [/ 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] a supprimé certains espaces inutiles [/ edit1] [edit2] a été modifié && i en juste & i. Il réduit 2 caractères, mais oblige l'utilisateur à saisir le nombre de triangles deux fois ...: PI a compris que mes "bonnes habitudes de codage" en utilisant && i coûtaient 2 octets !! L'horreur!! [/ edit2]
Explication
(note: j'utilise && 1 dans cette explication, donc elle ne demande qu'une seule fois, le & 1 ci-dessus économise de l'espace de code, mais invite plusieurs fois;))
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);
Sortie
SQL> accept i
1
SQL> /
/\
/__\
SQL> accept i
2
SQL> /
____
/\ /
/__\/
SQL> accept i
3
SQL> /
____
/\ /\
/__\/__\
SQL> accept i
12
SQL> /
________________________
/\ /\ /\ /\ /\ /\ /
/__\/__\/__\/__\/__\/__\/
SQL>