試験の課題や、自分自身のチャレンジ、新しいプログラミング言語を覚えるための練習などに使えるプログラミング演習問題です。 プログラミング万能練習法 のページも参考になると思います。

10進数を2進数に変換する

出力例)
10進数: 10
 2進数: 1010

アルゴリズムは「10進数を順次2で割って、余り(0か1)を並べる。」です。 http://www.infonet.co.jp/ueyama/ip/binary/dec2bin.html

Python で書いてみた。

import sys

decimal_literal = int(sys.argv[1])

class DecimalNumber:
    def __init__(self, dec):
        self.dec = dec
        self.result = []

    def __to_binary(self):
        half = self.dec / 2
        residue = self.dec % 2
        if self.dec > 0:
            self.result.append(residue)
            self.dec = half
            self.__to_binary()

    def to_binary(self):
        """@return string"""
        self.__to_binary()
        s = ""
        self.result.reverse()
        for x in self.result:
            s += str(x)
        return s


DN = DecimalNumber(decimal_literal)
print "10進数: %d\n 2進数: %s\n" % (decimal_literal, DN.to_binary())

トランプを配る

情報源: http://ameblo.jp/programming/entry-10001721422.html#c10029378309

トランプを配ります。あなたには2つの引数、「トランプを配る人数」と「トランプ」が渡されます。

例)
3
"123123123"

最初の3はプレイヤーの人数を示しています。

"123123123" はトランプの並びを示しています。あなたはこのなかのトランプを配っていかなければなりません。

この場合、あなたのプログラムは

{"111","222","333"}

を返さなければなりません。

"111"は一番めのプレイヤーが受け取るトランプです。 "222"が2番目のプレイヤーが受け取るトランプです。 "333"が2番目のプレイヤーが受け取るトランプです。

ところが、以下のような場合もあります。

4
"123123123"

すべてのプレイヤーは同じ数だけのトランプを受け取らなければなりません。

この場合、あなたのプログラムは

{"12","23","31","12"}

を返さなければなりません。

{"123","23","31","12"} は駄目です。

では、以下にもうすこし例をのせます。

例1)
6
"012345012345012345"
Returns: {"000", "111", "222", "333", "444", "555" }


例2)
4
"111122223333"
Returns: {"123", "123", "123", "123" }


例3)
1
"012345012345012345"
Returns: {"012345012345012345" }


例4)
6
"01234"
Returns: {"", "", "", "", "", "" }


例5)
2
""
Returns: {"", "" }

では、挑戦してください。

FizzBuzz 問題

情報源: http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「!FizzBuzz」とプリントすること。

乗算表

情報源: http://www.phim.unibe.ch/comp_doc/c_manual/C/PROBLEMS/problems.html

左上の角が 1 x 1、右下の角が 12 x 12 となる乗算表を作りなさい。以下のように出力せよ。数値が3桁揃えになっていることに注意しましょう。

 1   2   3   4   5   6   7   8   9  10  11  12
 2   4   6   8  10  12  14  16  18  20  22  24
 3   6   9  12  15  18  21  24  27  30  33  36
 4   8  12  16  20  24  28  32  36  40  44  48
 5  10  15  20  25  30  35  40  45  50  55  60
 6  12  18  24  30  36  42  48  54  60  66  72
 7  14  21  28  35  42  49  56  63  70  77  84
 8  16  24  32  40  48  56  64  72  80  88  96
 9  18  27  36  45  54  63  72  81  90  99 108
10  20  30  40  50  60  70  80  90 100 110 120
11  22  33  44  55  66  77  88  99 110 121 132
12  24  36  48  60  72  84  96 108 120 132 144

最終更新日: 2009年05月04日(月) / カテゴリー: プログラミング・ソフトウェア開発


Back to top