Python でダイアモンドを描く
https://gyazo.com/c341fa0f1669d9c4f6f25192fabfc574
下みたいなのを出力するやつ。
社内勉強会中に出くわした
code:bash
input: A
Output:
A
input: B
Output:
A
B B
A
input: C
Output:
A
B B
C C
B B
A
input: D
Output:
A
B B
C C
D D
C C
B B
A
input: E
Output:
A
B B
C C
D D
E E
D D
C C
B B
A
input: F
Output:
A
B B
C C
D D
E E
F F
E E
D D
C C
B B
A
できたコード
code:python
def ctoi(c: str) -> str:
assert 'A' <= c <= 'Z'
return ord(c) - ord('A')
def itoc(i: int) -> str:
assert 0 <= i < 26
return chr(i + ord('A'))
def diamond(c):
chars = ''.join(itoc(i) for i in range(ctoi(c) + 1))
xs = rev_chars:-1 + chars results = []
for y in ys:
results.append(''.join(x if x == y else ' ' for x in xs))
return '\n'.join(results)
if __name__ == "__main__":
assert ctoi(itoc(25)) == 25
for i in range(6):
print(f'\n\n---- {itoc(i)} ----\n')
print(diamond(itoc(i)))
出力を縦方向に押しつぶすと CBABC みたいに並ぶ
同様に横方向に押しつぶすと ABCBA みたいに並ぶ
この並びを作ってあげて、あとは 縦と横の記号が一致するとこに文字を出力
できれいに作れた
こういう問題考えるの楽しい ✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌