Pages

Selasa, 20 Mei 2014

Bahas Soal "Ready for Challenge?" TOKI Learning

Source : http://tokilearning.org/problem/1642


Ready for Challenge?

Batas Waktu1 detik
Batas Memori32 MB

Deskripsi

Diberikan sebuah pertanyaan, jawablah dengan YA atau TIDAK.

Format Masukan

Satu baris string S yang merupakan sebuah pertanyaan.

Format Keluaran

Satu baris berisi jawaban dari pertanyaan yang diajukan. Jawaban berupa YA atau TIDAK.

Contoh Masukan 1

Apakah Ammar ganteng?

Contoh Keluaran 1

YA

Contoh Masukan 2

Apakah ada orang yang lebih ganteng daripada Ammar?

Contoh Keluaran 2

TIDAK

Contoh Masukan 3

Apakah semua orang ganteng?

Contoh Keluaran 3

TIDAK

Contoh Masukan 4

Apakah hanya ada satu orang di muka bumi yang memang ganteng?

Contoh Keluaran 4

YA

Contoh Masukan 5

Apakah kegantengan itu bersifat mutlak?

Contoh Keluaran 5

YA

Contoh Masukan 6

Apakah orang yang belum ganteng dapat menjadi ganteng jika berhasil menyelesaikan soal ini?

Contoh Keluaran 6

YA

Contoh Masukan 7

Apakah orang yang tidak berhasil menyelesaikan soal ini juga ganteng?

Contoh Keluaran 7

TIDAK

Contoh Masukan 8

Apakah setiap orang memang diharuskan menjadi ganteng?

Contoh Keluaran 8

YA

Contoh Masukan 9

Apakah kegantengan itu hanya sebatas permainan?

Contoh Keluaran 9

TIDAK

Contoh Masukan 10

Apakah semua ini serius?

Contoh Keluaran 10

TIDAK

Batasan

  • Panjang string S minimal 1 dan tidak lebih besar daripada 1000.
  • Karakter pada string S hanya berupa huruf kecil, huruf kapital, spasi, dan tanda tanya.
  • Dijamin bahwa string S tidak memiliki spasi pada awal maupun akhir string dan tidak terdapat adanya 2 spasi yang letaknya bersebelahan.
  • Dijamin bahwa terdapat tepat satu karakter tanda tanya pada S dan terletak di akhir string.


Perhatikan setiap case yang ada, YA atau TIDAK jawaban terlihat dari banyaknya kata pada setiap kalimat/case yang diberikan.
Jika jumlah kata pada case yang diberikan ganjil maka keluaran YA
Jika jumlah kata pada case yang diberikan genap maka keluaran TIDAK

Namun hal yang membuang-buang waktu jika harus membuat algoritma penghitung kata lagi. Cara yang tepat adalah dengan memperhatikan Batasan yang diberikan.
Dikatakan bahwa

  • Panjang string S minimal 1 dan tidak lebih besar daripada 1000.
  • Karakter pada string S hanya berupa huruf kecil, huruf kapital, spasi, dan tanda tanya.
  • Dijamin bahwa string S tidak memiliki spasi pada awal maupun akhir string dan tidak terdapat adanya 2 spasi yang letaknya bersebelahan.
  • Dijamin bahwa terdapat tepat satu karakter tanda tanya pada S dan terletak di akhir string.
Dari batasan yang diberikan kita dapat memanfaatkan jumlah spasi yang ada ditengah kalimat.
Jika jumlah kata genap maka jumlah spasi ganjil dan sebaliknya

Hal yang dilakukan untuk menyelesaikan kasus ini adalah memperhatikan setiap karakter yang diinput. Dari batasan didapat bahwa setiap kalimat selalu diakhiri dengan tanda tanya (?)

untuk sementara dapat dibuat code sbb

repeat
    read(c);
    if(c=' ') then <kosong>
until(c='?');

Masih ada code yang kosong. Yang akan diisi pada <kosong> adalah banyaknya spasi yang ada pada kalimat.
Sebagian orang akan berpikir mengisi bagian kosong diatas dengan
     i:=i+1; atau inc(i);
Mari kita analisa keluaran akhir i
Jika i=1,3,5,7,9,11,dst maka cetak TIDAK dan i=2,4,6,8,10,dst maka cetak YA.
Untuk lebih menghemat penggunaan memori maka cara diatas dapat diganti dengan penggunaan booelan. Caranya dengan mengganti keaadaan boolean setiap spasi ditemukan.
Mis. "

Contoh Masukan 1

Apakah Ammar memang ganteng?
Kita misalkan booelan b diinisialkan bernilai TRUE
ketika spasi pertama ditemukan ubah menjadi FALSE
ketika spasi kedua ditemukan ubah menjadi TRUE
ketika spasi ketiga ditemukan ubah menjadi FALSE

Didapat jika hasil akhir booelan FALSE maka jumlah spasi ganjil dan sebaliknya
sehingga bagian <kosong> dapat diisi dengan b:=not(b); 
maka code sementara

Selasa, 15 Oktober 2013

Refleksi Matriks | Soal TOKI Learning Center

 Jawaban  + Pembahasan




//-----Unit Library------------------------------
#include <stdio.h>

//-----Program Utama-----------------------------
int main(){
//-----Deklarasi variabel------------------------
    int i,j,status,solusi,m,N;
    int A[75][75],B[75][75];

//-----Input Matriks A---------------------------   
    scanf("%d %d",&m,&N);
    for(i=1;i<=N;i++){
        for(j=1;j<=N;j++){
            scanf("%d",&A[i][j]);
        }   
    }

//-----Input Matriks B---------------------------   
    scanf("%d %d",&m,&N);
    for(i=1;i<=N;i++){
        for(j=1;j<=N;j++){
            scanf("%d",&B[i][j]);
        }
    }
   

Kamis, 15 Agustus 2013

Bahas Soal Terbaru - Strings... Strings Everywhere... | TOKI Learning Center

Link Soal : http://tokilearning.org/problem/1495

sebenarnya cukup tegang dengan soal ini :D
but it's not a reason.

Ok, langsung saja



Ingat :
Pada semua kasus, total banyak karakter pada N buah string (tidak termasuk s) yang ada pada masukan tidak melebihi 200 000. Selain itu, masing-masing dari N buah string itu panjangnya tidak melebihi panjang s.

  • Subtask 1 (30 poin): panjang s melebihi nol tapi tidak melebihi 1000. 1 <= N <= 1000.
  • Subtask 2 (70 poin): panjang s melebihi nol tapi tidak melebihi 100 000. 1 <= N <= 100 000.

Format Masukan

Baris pertama masukan berisi sebuah string s sesuai pada deskripsi soal. Kemudian, baris kedua berisi sebuah bilangan bulat N. Pada N baris berikutnya, masing-masing berisi sebuah string a[i].


Format Keluaran

Sebuah baris berisi sebuah bilangan bulat yang merupakan banyaknya string dari N buah string yang merupakan subsequence dari s.

apa itu subsequence???
subsequence itu maksudnya apakah string tersebut merupakan bagian dari string sebelumnya
misalnya
string S=asbcdefghijklmnopqrstuvw
string A=defghij
string B=mno
string C=ghj
string D=klmo

maka A dan B termasuk subsequence dari S sedangkan C dan D tidak.


Bagaimana mendapatkan 200000 karakter sedangkan string hanya memuat 255 karakter???
Bisa,,, gunakan array of char.


Mulai Pembahasan :

Pertama siapkan sebuah kode algoritma untuk menginput karakter yang sampai sepanjang 200000 karakter itu spt ini.

Sabtu, 27 Juli 2013

Algoritma bilangan Fibonacci dan Konstanta Golden Ratio

Untuk menghasilkan bilangan Fibonacci ke-N  atau F(N) selalu digunakan cara F(N)=F(N-1)+F(N-2).
Biasanya algoritma yang digunakan sbb :

------------------------------------------------------------------------------
fungsi fibo(masukan N{ berjenis long/longint} ) keluaran {berjenis long/longint}
mulai
         jika {if} (N=1) maka fibo=0
         tetapi jika {else if} (N=2) maka fibo=1
         selain itu {else} maka fibo=fibo(N-1)+fibo(N-2);
selesai
------------------------------------------------------------------------------

Deret Fibonacci sbb : 0 1 1 2 3 5 8 13 21 34 55 ... dst
untuk N>2 jika dimisalkan

Jawaban Soal Programming, sini masuk!!!!

Problem :
Pak Ali sedang meneliti tentang keunikan dari bilangan fibonacci. Kita tahu bahwa bilangan fibonacci ke-n didapat dari dua bilangan fibonacci sebelum nya yaitu fibonacci ke-(n-1) dan ke-(n-2). Ditengah sela penelitian nya ia mencoba-coba menghitung angka pada fibonacci tsb. Pada saat itu ia telah menulis sebanyak sembilan deret bilangan fibonacci, sbb :
0 1 1 2 3 5 8 13 21 , kemudian ia menghitung

Rabu, 17 April 2013

Pembahasan Soal Sphere Online Judge problem No.11

Hallo para sobat blogger, khususnya para programmer pemula.

Kali ini saya akan membahas soal pemrograman dari situs web Sphere Online Judge problem nomor 11. 

Silahkan diterjemahkan sendiri soalnya ini.


The most important part of a GSM network is so called Base Transceiver Station (BTS). These transceivers form the areas called cells (this term gave the name to the cellular phone) and every phone connects to the BTS with the strongest signal (in a little simplified view). Of course, BTSes need some attention and technicians need to check their function periodically.
ACM technicians faced a very interesting problem recently. Given a set of BTSes to visit, they needed to find the shortest path to visit all of the given points and return back to the central company building. Programmers have spent several months studying this problem but with no results. They were unable to find the