ProgrammingLogic문제 [yong27]의 [Python]버젼
1) 가장기본적인...
@@@@@@@ @@@@@@ @@@@@ @@@@ @@@ @@ @
2) 인덱스를 두개(i,j)를 돌린다는게 좀 맘에걸림
@@@@@@@ @@@@@ @@@ @
>>> for linei in range(4):
stars=7-linei*2
print ' '*linei+'*'*stars--[김창준]
3) 첫째줄을 같이 쓸수 있는 로직이 있을까 고민했으나 못찾음
@@@@@@@ @@ @ @ @ @ @ @ @ @ @ @
>>> for i in range((7+1)*7):
row,col=divmod(i,8)
if col>=7: c='\n'
else:
c= (not row or not col or row==col) and '*' or ' '
sys.stdout.write(c)--[김창준]
and then now a more general approach is possible:
def printCells(aRow,aCol,aIsStar):
for i in range((aCol+1)*aRow):
row,col=divmod(i,aCol+1)
if col>=aCol: c='\n'
else:
c= aIsStar(row,col) and '*' or ' '
sys.stdout.write(c)
>>> printCells(7,7,lambda row,col:-col+6>=row)
>>> printCells(4,7,lambda row,col:((col-3)+3 >= row and (3-col)+3 >= row ))
>>> printCells(7,7,lambda row,col:not row or not col or row==col)I would call this a paradigm(esp. a Cartesian) of programming, which is a way of solving a category of similar problems, as in TheParadigmsOfProgramming.
--[김창준]
BioHackersNet