mixiの課題丸投げをひたすら解く、Pythonで
30分プログラム、その389。mixiの(mixi)C/C++の課題丸投げコミュニティにある問題をひたすら解いてみる。ただし、Pythonで。
このコミュニティの趣旨はいかがなものかと思うけど、C言語で解かなければ誰の得にもならないからOKだろう。ボクとしても、こういう課題が集っているのはありがたいし。
連想配列の値でソート
http://mixi.jp/view_bbs.pl?id=35624291&comm_id=602606
map
に格納した値を
map>※まちがった構文
みたいな感じでintの値順にソートしたいのですが・・・・[e] => 831
[em] => 3
[i] => 191
[p] => 191
[v] => 158
[w] => 386
・・・?例えばこんな配列です。
とりあえず、大きい順にソートしてprintできればイイです。
dict = { 'e': 831, 'em': 3, 'i': 191, 'p':191,'v':158,'w':386 } def compare(x,y): return 0 xs = dict.items() xs.sort(lambda x,y: cmp(x[1],y[1])) for x in xs: print x[0]
2進数への変換と表示
http://mixi.jp/view_bbs.pl?id=35842317&comm_id=602606
int型の配列aが以下のように与えられたとき、
int a[5]={16,1,4,7,2}
配列aの各要素の値を2進数に変換し、それを順に並べたものをint型の配列bに格納するプログラムを作成し、配列bを表示をしたときに以下のようになることを確認しなさい。ただし、各要素を2進数にしたときのビット数はファイル(bit.txt)に書き出しておくこと。
・答え
10000110011110・bit.txtの例
5
1
3
3
2
a = [16,1,4,7,2] def bin(value): if value == 0: return '0' elif value == 1: return '1' else: x = value / 2 y = value % 2 return "%s%d" % (bin(x),y) b = map(bin,a) # answer print ''.join(b) # bits.txt print map(len,b)
10進数への変換と表示
http://mixi.jp/view_bbs.pl?id=35846736&comm_id=602606
int型の配列bが以下のように与えられたとき、
int b[]={1,0,0,0,0,1,1,0,0,1,1,1,1,0}
配列bをファイル(bit.txt)(*1)から読み込んだビット数に応じて切り出し、それぞれの2進数を10進数に変換し、int型の配列aに順に格納しなさい。
こちらのトピとは逆の操作です。
http://mixi.jp/view_bbs.pl?id=35842317&comment_count=0&comm_id=602606(*1)上記のトピにおいてファイルに出力したもの
b = '10000110011110' bits = [5, 1, 3, 3, 2] a = [] for l in bits: a.append(int(b[0:l],2)) b = b[l:] print a
行列式
http://mixi.jp/view_bbs.pl?id=35689031&comm_id=602606
- int型変形で構成される2行2列の二次元配列変数を宣言し、全ての要素を0に 初期化せよ
- 以下の行列式の計算を行うプログラムを作成せよ。
|a b| |e f| | |×| | |c d| |g h|ただし、a〜hの各要素はプログラム実行後にキーボードから入力を行い、
計算結果を表示できるようにすること。説明も頂けるとありがたいです。
a = [[0,0],[0,0]] b = [[0,0],[0,0]] a[0][0] = input('a> ') a[0][1] = input('b> ') a[1][0] = input('c> ') a[1][1] = input('d> ') b[0][0] = input('e> ') b[0][1] = input('f> ') b[1][0] = input('g> ') b[1][1] = input('h> ') def det(m): [[a,b],[c,d]] = m return a*d - b * c print det(a) * det(b)