10分間でコーディング(Python編)
10分でコーディング|プログラミングに自信があるやつこい!!に挑戦。
ただし、Pythonかつワンライナーで。
結果。lを人数、sをカードの文字列として、
s and ["".join([c for c in s][i::l][:len(s)/l]) for i in range(0,l)] or []
実行結果。
>>> l = 3 >>> s = "123123123" >>> s and [ "".join([c for c in s][i::l][:len(s)/l]) for i in range(0,l)] or [] ['111', '222', '333'] >>> >>> l = 4 >>> s and [ "".join([c for c in s][i::l][:len(s)/l]) for i in range(0,l)] or [] ['12', '23', '31', '12'] >>> >>> l = 6 >>> s = "012345012345012345" >>> s and [ "".join([c for c in s][i::l][:len(s)/l]) for i in range(0,l)] or [] ['000', '111', '222', '333', '444', '555'] >>> >>> l = 4 >>> s = "111122223333" >>> s and [ "".join([c for c in s][i::l][:len(s)/l]) for i in range(0,l)] or [] ['123', '123', '123', '123'] >>> >>> l = 1 >>> s = "012345012345012345" >>> s and [ "".join([c for c in s][i::l][:len(s)/l]) for i in range(0,l)] or [] ['012345012345012345'] >>> >>> l = 6 >>> s = "01234" >>> s and [ "".join([c for c in s][i::l][:len(s)/l]) for i in range(0,l)] or [] ['', '', '', '', '', ''] >>> >>> l = 2 >>> s = "" >>> s and [ "".join([c for c in s][i::l][:len(s)/l]) for i in range(0,l)] or [] []
7,8分くらいだった。
10分コーディングしてみた。 - When it’s ready. (a2c.get.diary)
↑こっちのほうが断然エレガントでした。
まだまだpython力が足りてませぬっ・・・!