challenge 正しい文(クイズ)

「この文は0が□個,1が□個,...,9が□個あります」
が正しくなるように□を埋めてください.数値は10進数とします.
一般のn(<=16で可)進数でも解いてみてください.

たとえば2進数なら
「この文は0が11個,1が100個あります」
となります.

Posted feedbacks - Python

こんなんでも、一応題意は満たすかな・・・ (それとも、2を使うなら0,1も使わないとだめ?)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# coding: cp932

def solve(n):
    assert n >= 2
    if n == 2:
        print u"この文は0が11個,1が100個あります"
    else:
        print u"この文は2が2個あります"

def main():
    solve(2)
    solve(10)

if __name__ == '__main__':
    main()

うう、すみません、題意を違えてました。あらためて、yuinさんの方法を拝借・・・

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# coding: cp932

def solve(n):
    assert 2 <= n <= 16
    if n == 2:
        a = ["11", "100"]
    else:
        a = ["1"] * n; a[1] = "11"; a[2] = "2"
    print u"この文は%sあります" % \
        u",".join(u"%s%s個" % (hex(i)[-1], m) for (i, m) in enumerate(a))

def main():
    solve(2)
    solve(10)
    solve(16)

if __name__ == '__main__':
    main()

Index

Feed

Other

Link

Pathtraq

loading...