2007年06月11日

Pythonコード添削道場 コード募集

来る6月30日、東大駒場キャンパスでPython Workshop the Edge 2007が開催されます。 「Pythonコード添削道場」はこのワークショップのセッションの一つで、私、西尾 泰和増田 泰さん柴田 淳さんの3人で投稿されたコードを添削するという企画です。

この企画はみなさんにコードを投稿して頂かないと始まりません。 コードの内容は自由です。自由投稿のページのコメント欄から投稿してください。

また「投稿してといわれても、ちょうどいいコードがないなぁ」という人のために、お題が7つ用意してあります。お題に挑戦してみて結果のコードを投稿するのもよいでしょう。お題の解答はそれぞれのお題のページのコメント欄から投稿してください。

コードの投稿の際に名前を書く必要はありません。 完全に匿名でも、自分にしかわからないようなハンドルネームでもOKです。その方が添削する我々も、容赦なく添削ができます。 自分のコードが容赦なく添削される機会は、そうそうあるもんじゃないですよ!ぜひこのチャンスをものにして理解を深めるきっかけにしてください。

お題は以下の7問です。

なお、投稿していただいたすべてのコードを添削する時間はないので、 投稿いただいたコードを添削しないかもしれないということをあらかじめご容赦ください。

自由投稿

このページから、自由にコードを投稿できます。 ただし、コードには「どういう処理を行うプログラムか」ということをきちんと書いてくださいね。何を目的としたプログラムかがわからなければ添削のしようもありませんから。 また、1000行もあるプログラムだとか、シンタックスエラーで実行できないコードもご容赦願いますm(_ _)m

お題7:整数とビット列の相互変換

整数とビット列の間を相互変換できる **モジュール** を作れ。 クラスでも、関数の集合でもかまわない。

お題6:名簿の並び替え

下のようなローマ字表記された名簿データがあるとする。実際は3人ではなく1万人分あるとする。ミドルネームなどはなく、名字と名前の間は半角スペース1個で区切られている。


Nishio Hirokazu
Shibata Atsushi
Masuda Yasushi

  • 上のデータファイルからH. Nishioというイニシャル表記の名簿ファイルを作成せよ。
  • イニシャル表記で、名字でABC順にソートされた名簿ファイルを作れ。名字が同じ場合は名前のABC順になること。

お題5:行列の回転

  • 行列(リストのリスト)が与えられたときに、それを90度時計回りに回転した行列を返す下のような関数を作れ。
    >>> rotate([
    	[1, 2, 3],
    	[4, 5, 6],
    	[7, 8, 9]])
    [[7, 4, 1], [8, 5, 2], [9, 6, 3]]
    

  • 与えられた引数が長方形の行列であるか(リストの中のそれぞれのリストが全て同じ長さで、入っているのが数だけであるか)をチェックする関数を作れ。

お題4:入れ子リストの中身を順に表示

整数かリストが入っているような入れ子になったリストを考える。
(例:[1, [2, 3, 4], 5, [[[6], [7, 8], 9], 10])


  • 入れ子リストが与えられたときに中身を順に表示するような関数を作れ。
  • 与えられたオブジェクトが「整数とリストだけでできている」かどうかをチェックしてTrueかFalseを返す関数を作れ。

お題3:シングルトン

Pythonでシングルトンを作れ。


シングルトンについての説明はこちら:
Singleton パターン - Wikipedia

お題2:単語数カウント

英文のテキストファイルを読み込んで単語の出現数を数えるプログラムを作れ。


例えばテキストファイルの中身が「It's fine day, isn't it? Yes, it is!」ならばit'sが1回、fineが1回、dayが1回、isn'tが1回、itが2回、yesが1回、isが1回となるように数えてよい。
(isn'tにはisが含まれているな、とか、It'sの'sはisの省略形だな、などと判断するのはとてもむずかしいので)


余力があれば出現頻度の多い順に出力するプログラムも書け。

お題1:ファイルの同期

二つのディレクトリ下のタイムスタンプを比較して、同期を取るプログラムを作りたい。


二つのディレクトリ(フォルダ)を指定すると、そのディレクトリの下の全てのファイルについて「片方にしかないファイルはもう片方へコピーし、両方にあるけどもタイムスタンプ(更新時刻)の異なるファイルは新しい方で古い方を上書きする」という処理を行うプログラムを作りなさい。

test

test


書き込みや投稿のテストはこちらへどうぞ。

カテゴリー

Powered by
Movable Type 3.34