名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

今日の競プロ(2015/05/13)

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()使ってうまく計算する方法もあるみたい.これも試してみたいな,そのうち.

2. Built-in Functions — Python 3.4.3 documentation

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して… みたいな解き方はしません…


というわけで,今日も忙しかったので手抜き…
平日手抜きするのはいいけど,土日はガッツリ問題とかないとなあ….