lambda式を書いて一行で回答する遊びにハマった(可読性が死ぬ)
Code Formula 2014 予選B B問題
問題
B: 11の倍数 - Code Formula 2014 予選B | AtCoder
回答
Submission #403470 - Code Formula 2014 予選B | AtCoder
奇数の桁と偶数の桁を足したものの合計をそれぞれ表示するだけなのですが….
まあ僕のテストが甘くてWAいっぱい出しましたね…(全然ダメ)
sumを使うことを前提にしたので,長さ1のものがエラーになったりしてました.
桁数が偶数なのか,奇数なのかでも処理変わっちゃったし….
うまくまとめられればよかったんですけどね.
s = list(map(int, list(input()))) if len(s) == 1: print(0, sum(s)) else: if len(s) % 2 == 1: print(sum(s[1::2]), sum(s[::2])) else: print(sum(s[::2]), sum(s[1::2]))
あとenumerate()使ってうまく計算する方法もあるみたい.これも試してみたいな,そのうち.
Code Formula 2014 本選 A問題
問題
A: Code Formula 2015 - Code Formula 2014 本選 | AtCoder
回答
Submission #403611 - Code Formula 2014 本選 | AtCoder
結論から言えば,1行で入力されたa, bの値をかけて出力するプログラム.
というわけで,こうなりましたとさ.
print((lambda a: a[0] * a[1])(list(map(int, input().split()))))
可読性(笑)
Code Formula 2014 本選 B問題
問題
B: 3歩進んで2歩下がる - Code Formula 2014 本選 | AtCoder
回答
Submission #403618 - Code Formula 2014 本選 | AtCoder
入力された値nを見て,
偶数:n // 2
奇数:n // 2 + 3
を出力するだけである・・・.
というわけで,こうなりましたとさ.
print((lambda n: n // 2 + (0 if n % 2 == 0 else 3))(int(input())))
可読性(笑)
さすがに私もこんなに馬鹿ではないので,頭から+3して-2して… みたいな解き方はしません…
というわけで,今日も忙しかったので手抜き…
平日手抜きするのはいいけど,土日はガッツリ問題とかないとなあ….