ponnhide / kadai

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

プログラミング課題

問題1 Fizz buzz

1~100までの数字で、 3で割り切れれば、「Fizz」を表示する 5で割り切れれば、「Buzz」を表示する 3と5で割り切れれば、「Fizz Buzz」を表示する 上記以外の場合は、そのままの数字を表示する

基本 上記の問題文を実現するコードを、for文によるループを使って実装してください。

応用 上記の問題文を実現するコードを、リスト内包表記のみをつかって実装してください。 リスト内包表記については以下のlinkが参考になる。 https://qiita.com/y__sama/items/a2c458de97c4aa5a98e7

問題2 ランダム選択

  1. 文字’A’が50個,文字’a’が50個入ったリスト(計100個)を用意する。例;[‘A’,’A’,…,’a’,’a’]
  2. そのリストからランダムに50個文字を選ぶ。 選んだ50個の文字を2倍にして計100文字のリストを作る。 3.で作ったリストを対象に,2.以降を繰り返す。 リストの中が一種類の文字 (Aかa)になるまで繰り返し,繰り返し終わったら何回繰り返したかを出力する。 ※リストじゃなくて文字列作ってやってもいいです。

ランダムな選択であっても、選択を繰り返せばリストの中身は必ずAもしくはaのみになります。ならなかったらプログラムがおかしい。 進化遺伝学等の授業を受けていれば学んでるかもしれませんが、「遺伝的浮動」の仕組みも基本的に上記のプログラムと同じです。余裕があれば、リストの要素数等を変えることによって、終了までにかかる繰り返し回数がどう変化していくのか観察してみてください。

問題3 自然選択

ランダムな文字列から目的とする文字列に変異と選択のみで到達するプログラムを作ろう。 簡単な流れとしては,

  1. 目的文字列と同じ長さでランダムな文字列を100個作る。
  2. 100個の各文字列の中から,目的文字列と一番似てるものを取り出す。
  3. その文字列の中の数文字を別の文字に変化させた文字列を100個作る。
  4. 生成された文字列が目的文字列と一致するまで,2.と3.を繰り返す。 使用する文字列は大文字アルファベットのみで,空白とか記号とかは使わなくて良いです。 目的とする文字列は仮に,”METHINKITISAWEASEL“とする。

これのネタ元は https://en.wikipedia.org/wiki/Weasel_program

問題4 GC含量、Codon frequency

  1. seq = “ATGGGAACCCTTTGAGATATTCC” のGC含量を出力してください。GC含量:全文字中の’G’,'C’文字の割合。
  2. Escherichia coli str. K-12 substr. MG1655のGenBankファイルを入力にして、1000bp毎に区切ってゲノムのGC含量を計算してください。計算結果は、pythonのmatplotlibもしくはRのggplotを利用して図示してください。
  3. Escherichia coli str. K-12 substr. MG1655の 各アミノ酸に対応するコドンの使用頻度(codon frequency)計算し、tableを作成してください。

Escherichia coli str. K-12 substr. MG1655 GenBankファイルのlink ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.gbff.gz

pythonでGenBankファイルを扱う場合はBiopythonを使うのがおすすめです。 http://biopython.org/

codon frequency tableの模範解答 http://www.kazusa.or.jp/codon/cgi-bin/showcodon.cgi?species=83333

About