Halo teman-teman, apa kabar? Kali ini saya ingin membahas sedikit tentang salah satu problem yang ada di web rosalind.info. Judulnya ialah "Calculating Protein Mass". Sebagai acuan, teman-teman bisa cek dahulu problem yang akan kita bahas (disini).
Di problem ini kita akan diberi sebuah string yang merupakan urutan suatu protein. Kemudian tugas kita ialah menentukan total massa dari urutan protein tersebut. Kita bisa mennghitung total massa protein tersebut dengan menjumlahkannya huruf per huruf menggunakan tabel massa protein.
Berikut kode pengerjaannya (dalam bahasa java) :
- static void solve() {
- Scanner sc = new Scanner(System.in);
- String s = "";
- while (sc.hasNext()) {
- s += sc.next();
- }
- HashMap<Character, Double> pair = new HashMap<>();
- pair.put('A', 71.03711 );
- pair.put('C', 103.00919);
- pair.put('D', 115.02694);
- pair.put('E', 129.04259);
- pair.put('F', 147.06841);
- pair.put('G', 57.02146 );
- pair.put('H', 137.05891);
- pair.put('I', 113.08406);
- pair.put('K', 128.09496);
- pair.put('L', 113.08406);
- pair.put('M', 131.04049);
- pair.put('N', 114.04293);
- pair.put('P', 97.05276 );
- pair.put('Q', 128.05858);
- pair.put('R', 156.10111);
- pair.put('S', 87.03203 );
- pair.put('T', 101.04768);
- pair.put('V', 99.06841 );
- pair.put('W', 186.07931);
- pair.put('Y', 163.06333);
- Double res = 0.0;
- for (char chs : s.toCharArray()) {
- res += pair.get(chs);
- }
- out.printf("%.3f\n", res);
- }
Pertama, kita salin dahulu tabel tabel massa proteinnya ke dalam HashMap (baris 7-27). Setelah itu, baru kita dapat menjumlahkan urutan protein diatas huruf per huruf (baris 28-31). Hasilnya ialah dalam format Double; dan di baris 32 saya menggunakan "%.3f\n" untuk format 3 angka dibelakang koma.
Seperti yang teman-teman lihat; diatas, saya memakai fungsi next() (baris 5) untuk meng-input data string. Sebelumnya saya juga menggunakan hasNext() (baris 4) karena fungsi tersebut mampu meng-input data yang tidak diketahui jumlahnya. Fungsi tersebut sangat cocok jika dipakai untuk menangani input dengan format FASTA. Sedangkan untuk output-nya saya memakai fungsi out.printf() . Fungsi tersebut juga adalah modifikasi dari fungsi System.out.printf() yang merupakan fungsi default di java. Untuk lebih jelasnya teman-teman bisa melihat kode tambahan untuk memodifikasi fungsi tersebut (input maupun output) di versi lengkap kode saya di github.
Sekian dari saya. Jika teman-teman ingin menanyakan sesuatu, teman-teman bisa menulisnya di kolom komentar. Semoga bermanfaat dan sampai jumpa di artikel berikutnya!
Referensi :
Sumber gambar 1 :https://www.facebook.com/ProjectRosalind/
No comments:
Post a Comment