Pages

Subscribe:

Selasa, 19 November 2013

Kali 2 Matriks

Deskripsi:
Buatlah dua buah matriks dengan cara seperti pada Latihan 2, misalnya M1 dan M2. Tuliskan
isi matriks M1 dan M2 ke layar. Ukuran kolom efektif M1 = ukuran baris efektif M2.
Kalikan kedua matriks dan tuliskan hasilnya ke layar.

So the answer is :





Sabtu, 21 September 2013

Program penjumlahan pecahan

Diberikan tugas untuk penjumlahan dan perkalian pecahan. Tapi untuk kali ini, pecahan hasilnya tidak ada penyederhanaan sama sekali. Selamat mencoba :D

(klik gambar syntaxnya ya)

Kamis, 12 September 2013

Program Titik

Berikut adalah keisengan pembuat blog untuk membuat program yang diajarkan oleh dosennya di kelas. Bagi yang mau mempelajari, selamat mempelajari sendiri :D



Rabu, 22 Agustus 2012

Bayar atau Kabur




So, the answer is :


Hello World!

Description
Diberikan sebuah n, keluarkan "Hello World!" sebanyak n baris.
Input Format
Sebuah bilangan n, 0<n<100
Output Format
"Hello World!" sebanyak n baris.
 Sample Input
2
Sample Output
Hello World!
Hello World!

So, the answer is :


Bola dan Gelas

Menuju acara 17-an, Pak Dengklek mempersiapkan permainan untuk perlombaan di desanya. Permainan tersebut adalah permainan yang klasik dan kini Pak Dengklek ingin mengujinya kepada Anda. Terdapat N (1 ≤ N ≤ 100.000) buah gelas yang diletakkan terbalik lalu dijejerkan di atas meja dan diberi nomor berbeda-beda antara 1 sampai N. Di dalam salah satu gelas terbalik tersebut diletakkan sebuah bola. Lalu dua buah gelas dipilih secara acak dan ditukar posisi dan nomornya. Pemilihan dan pertukaran tersebut dilakukan sebanyak M (1 ≤ M ≤ 100.000) kali. Setelah itu, semua gelas dibuka dan bola pastilah ditemukan di bawah salah satu gelas, misalnya gelas X.
Pak Dengklek ingin agar Anda menebak di gelas nomor berapakah bola tersebut berada pada awalnya. Tidak hanya sekali, Pak Dengklek ingin Anda menebak Q (1 ≤ Q ≤ 100.000) kali untuk beberapa kemungkinan X.

Format Masukan

Baris pertama berisi dua buah bilangan bulat N dan M. M baris berikutnya masing-masing berisi dua angka X1 dan X2, yang berarti gelas bernomor X1 ditukar nomor dan posisinya dengan gelas bernomor X2 (1 ≤ X1, X2 ≤ N). Baris berikutnya berisi bilangan Q, yang merupakan jumlah pertanyaan untuk kasus bersangkutan. Q baris berikutnya masing-masing berisi sebuah bilangan yang merupakan nomor gelas X (1 ≤ X ≤ N) tempat bola berada setelah permainan berakhir.

Format Keluaran

Q buah baris, masing-masing berisi jawaban untuk tiap pertanyaan yang diberikan di masukan.

Contoh Masukan

5 6
1 3
4 2
5 2
4 5
3 2
4 1
3
2
3
4

Contoh Keluaran

1
5
3 
 

So, the answer is :

 

Parkir Truk

Pak Dengklek memiliki 3 buah truk dan ingin memarkirkannya di tempat parkir yang memberikan harga sewa tempat parkir yang berbeda-beda tergantung dari banyaknya truk yang diparkir. Bila ada 1 truk, Pak Dengklek membayar A rupiah per menit. Bila ada 2 truk, untuk setiap truk Pak Dengklek membayar B rupiah per menit. Bila ada 3 truk, untuk setiap truk Pak Dengklek membayar C rupiah per menit.
Diberikan A, B, dan C (1 ≤ C ≤ B ≤ A ≤ 100) beserta interval waktu Pak Dengklek memarkirkan truk-truknya, tentukan berapa rupiah yang harus Pak Dengklek bayar.

Format Masukan

Baris pertama berisi 3 buah bilangan bulat A, B dan C. Tiga baris berikutnya masing-masing berisi dua bilangan bulat: awal dan akhir yang menyatakan waktu truk yang bersangkutan mulai diparkir dan meninggalkan tempat parkir. Rentang waktu ini adalah 1..100 dalam satuan menit.

Format Keluaran

Sebuah baris berisi sebuah bilangan bulat yang menyatakan total biaya parkir yang harus Pak Dengklek bayar.

Contoh Masukan

5 3 1
1 6
3 5
2 8

Contoh Keluaran

33 
 
 

So, the answer is :

 

Perkalian Pak Dengklek

Pak Dengklek bosan mengalikan pasangan bilangan dengan cara biasa, sehingga ia memutuskan bahwa sejak sekarang, ia akan menggunakan cara perkalian yang berbeda. Cara perkalian Pak Dengklek adalah menjumlahkan perkalian dari semua pasang digit-digit bilangan A dan B. Misalnya, perkalian dari 123 dan 45 adalah 1 * 4 + 1 * 5 + 2 * 4 + 2 * 5 + 3 * 4 + 3 * 5 = 54.
Diberikan dua bilangan A dan B (1 ≤ A, B ≤ 1.000.000.000), tentukan hasil kalinya menurut cara Pak Dengklek.

Format Masukan

Baris pertama berisi dua buah bilangan bulat A dan B.

Format Keluaran

Sebuah baris berisi sebuah bilangan yaitu hasil perkalian A dan B dengan cara Pak Dengklek.

Contoh Masukan

123 45

Contoh Keluaran

54
 

So, the answer is :

 

Tinggi Kandang Susun

Selain bebek, Pak Dengklek berkeinginan memelihara kucing dan karena itu ia bermaksud membangun kandang untuk kucing-kucingnya. Harga tanah kini sangat mahal, Pak Dengklek tidak memiliki lahan yang cukup luas untuk membangun kandang berlantai satu, maka kandang susunlah solusi untuk tempat tidur N kucingnya (1 ≤ N ≤ 1.000.000). Namun dalam kasus ini, justru yang kita pedulikan adalah total tinggi dari kandang susun tersebut, bukan luasnya. Sekedar informasi, kucing-kucing Pak Dengklek adalah hewan yang rewel, mereka tidak ingin tempat tinggalnya lebih rendah dari batas yang sudah mereka tentukan.
Untuk tiap lantai kandang, Pak Dengklek hanya dapat memasukkan K (1 ≤ K ≤ 1.000.000) kucing secara berurutan, sehingga kucing 1 sampai K pasti akan berada di lantai pertama, kucing ke K+1 sampai 2K pasti akan berada di lantai kedua, dan seterusnya. Agar semua kucing senang, tinggi setiap lantai haruslah nilai maksimal dari batas yang ditentukan oleh kucing-kucing yang ada dalam lantai tersebut.
Tugas Anda kini adalah mencari berapa total tinggi dari kandang susun yang akan dibangun Pak Dengklek. Perlu diingat untuk alas dan atap dibutuhkan papan setebal 1 sentimeter, di antara kedua lantai pun ada sekat setebal 1 sentimeter dan tebal-tebal itu harus diperhitungkan juga dalam menentukan total tinggi kandang.

Format Masukan

Baris pertama berisi dua buah bilangan bulat N dan K. N baris berikutnya masing-masing berisi sebuah bilangan Ti (1 ≤ Ti ≤ 1.000.000) yang merupakan batas tinggi yang diinginkan oleh kucing ke-i, dalam sentimeter.

Format Keluaran

Sebuah baris berisi sebuah bilangan bulat yaitu total tinggi kandang susun yang akan Pak Dengklek bangun, dalam sentimeter.

Contoh Masukan 1

5 3
30
20
15
19
29

Contoh Keluaran 1

62

Contoh Masukan 2

2 2
2
2

Contoh Keluaran 2

4

Penjelasan

Pada contoh masukan 1, total tinggi = 62 = 30 + 29 + 1 (alas) + 1 (atap) + 1 (sekat lantai 1 dan lantai 2).


So, the answer is :



 

Runtuh

Runtuh adalah sebuah permainan yang bertujuan untuk membuat penuh satu baris dari sebuah papan menggunakan beberapa bangun yang disediakan. Jika sebuah baris penuh terisi maka baris tersebut akan dihilangkan dan sisa bangun di atasnya akan "diruntuhkan" satu demi satu turun melewati ruang yang telah kosong sampai menumpuk di atas bangun yang ada di bawahnya. Penumpukan yang terjadi dapat menghasilkan situasi seperti pada saat awal di atas yaitu terdapat baris-baris yang penuh terisi, yang selanjutnya akan dihilangkan lagi (setelah semua runtuh). Demikian berlangsung bisa berulang-ulang sampai tidak ada lagi baris yang penuh terisi.
Anda akan diberikan sebuah kondisi papan yang terdiri atas R (1 ≤ R ≤ 20) baris dan C (1 ≤ C ≤ 8) kolom dari suatu permainan ini untuk ditentukan kondisi akhirnya. Misalnya untuk papan seperti di bawah ini:
Kondisi papan setelah baris yang terisi penuh dihilangkan, akan menyisakan ruang kosong seperti di bawah ini:
Bangun-bangun yang terletak di atas baris terbawah yang dihilangkan akan diruntuhkan ke bawah sehingga kondisi papan setelah terjadi penurunan adalah seperti di bawah ini:
Dalam contoh di atas kebetulan keruntuhan hanya sekali saja. Namun, dalam beberapa kasus uji bisa aja terjadi keruntuhan berulang-ulang.

Format Masukan

Baris pertama berisi dua buah bilangan bulat R dan C. R baris berikutnya masing-masing berisi C buah karakter '0' atau '1'. Karakter '1' menandakan adanya bangun pada posisi tersebut.

Format Keluaran

R buah baris, masing-masing berisi C buah karakter yaitu kondisi akhir dari papan permainan tersebut.

Contoh Masukan

11 6
000000
000000
011100
110011
111111
111000
111111
111111
111001
001100
111011

Contoh Keluaran

000000
000000
000000
000000
000000
010000
111000
111001
111101
001110
111011


So, the answer is :


 

Bukit dan Lembah

Pak Dengklek memberikan Anda data ketinggian yang di catat dalam perjalanannya dari suatu posisi awal ke posisi akhir. Data ketinggian adalah bilangan-bilangan positif. Jalan kadang menaik, kadang menurun, kadang datar saja. Posisi di mana terjadi perubahan menaik kemudian menurun (boleh diselingi jalan datar) didefinisikan sebagai puncak dari suatu bukit. Sebaliknya, posisi terjadi perubahan dari menurun terus menaik (boleh diselingi bagian jalan yang datar) didefinisikan sebagai titik terbawah suatu lembah. Walaupun perubahan tersebut kecil saja, definisi itu tetap berlaku.
Carilah beda ketinggian terbesar antara puncak bukit dengan titik terbawah lembah berikutnya atau sebaliknya antara titik terbawah lembah dengan puncak bukit berikutnya pada data perjalanan tersebut.

Format Masukan

Banyak baris, antara 2 sampai 600.000 baris, yang masing-masing berisi sebuah bilangan bulat antara 0 sampai 1.000.000.000.

Format Keluaran

Sebuah baris berisi sebuah bilangan bulat yaitu beda ketinggian terbesar yang diperoleh.

Contoh Masukan

10
26
26
35
35
27
30
30
45
10
8
9

Contoh Keluaran

37

Penjelasan

Ada 12 data. Beda ketinggian pertama (10 ke 35) adalah 25, beda kedua (35 ke 27) adalah 8, beda ketiga (27 ke 45) adalah 18, beda ketinggian keempat (45 ke 8) adalah 37, dan beda ketinggian kelima (8-9) adalah 1. Jadi beda ketinggian tertinggi adalah 37.



So, the answer is :

 

Stack dan Queue

Dalam dunia informatika, penggunaan struktur data queue (antrian) dan stack (tumpukan) sangatlah umum. Kedua struktur data tersebut memiliki kesamaan yakni bahwa keduanya dapat diimplementasikan menggunakan array. Sedangkan perbedaannya terletak pada cara keluar masuk elemen. Struktur data queue memiliki sifat FIFO (first in, first out), artinya elemen yang pertama kali masuk juga akan keluar pertama kali. Sedangkan struktur data stack memiliki sifat LIFO (last in, first out), artinya elemen yang terakhir kali masuk akan keluar pertama kali juga.
Pak Dengklek meminta Anda untuk mensimulasikan sebuah struktur data yang merupakan gabungan antara queue dan stack. Pada struktur data ini, suatu elemen dapat masuk ke bagian awal menggunakan perintah push_front maupun bagian akhir menggunakan perintah push_back. Begitu juga proses pengambilan elemen, dapat mengambil dari bagian awal menggunakan perintah pop_front maupun dari bagian akhir menggunakan perintah pop_back. Diberikan struktur data tersebut dalam keadaan kosong, lakukan N (1 ≤ N ≤ 10.000) operasi memasukkan dan mengeluarkan elemen, dan tentukan kondisi akhir dari struktur data tersebut.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah perintah. Sesuai deskripsi di atas, terdapat 4 kemungkinan perintah yaitu:
  • push_front, memasukkan elemen ke bagian awal struktur data
  • push_back, memasukkan elemen ke bagian akhir struktur data
  • pop_front, mengeluarkan sebuah elemen dari bagian awal struktur data
  • pop_back, mengeluarkan sebuah elemen dari bagian akhir struktur data
Perintah push_front dan push_back tentunya akan diikuti sebuah elemen berupa bilangan bulat antara 1 sampai 1.000.000. Dan perintah pop_front maupun pop_back tidak akan dilakukan saat struktur data tersebut tidak memiliki elemen.

Format Keluaran

Baris-baris sebanyak jumlah elemen pada kondisi akhir struktur data tersebut. Baris-baris tersebut berisi elemen-elemen berurutan dari bagian awal sampai bagian akhir yang berada di kondisi akhir struktur data tersebut.

Contoh Masukan

7
push_back 1
push_back 2
push_front 3
push_back 4
push_front 5
pop_back
pop_front

Contoh Keluaran

3
1
2


So, the answer is :


 

Modified Stack

Stack (tumpukan) adalah salah satu tipe data penting dalam dunia pemrograman. Pak Dengklek meminta Anda untuk mensimulasikan N (1 ≤ N ≤ 1000) buah operasi terhadap sebuah stack yang terdiri dari bilangan bulat.
Mula-mula, stack yang Anda miliki adalah kosong (tidak berisi apa-apa). Lalu Anda perlu membaca perintah yang diberikan satu persatu dan mengaplikasikannya pada stack tersebut. Dua perintah dasar yang mungkin diberikan terhadap stack adalah "add X Y" atau "del Y". Perintah "add X Y" (atau biasa disebut push) berarti menambahkan Y buah bilangan bulat X pada ujung akhir stack. Sedangkan perintah "del Y" (atau biasa disebut pop) berarti menghapus Y buah bilangan bulat dari ujung akhir stack. Coba perhatikan bagaimana tipe data ini menyerupai tumpukan.
Yang unik dari stack Anda kali ini adalah bahwa ada dua buah perintah tambahan "adx X" dan "dex X". Perintah "adx X" berarti Anda perlu menambahkan X pada setiap bilangan bulat yang ada dalam stack, sedangkan perintah "dex X" berarti Anda perlu mengurangi X pada setiap bilangan bulat yang ada dalam stack.
Untuk menguji kebenaran dari operasi stack Anda, Anda perlu mencetak beberapa hal seperti berikut. Setiap kali melakukan perintah "del Y", Anda perlu mencetak satu bilangan bulat pertama yang Anda keluarkan. Setiap kali melakukan perintah "add X Y", Anda perlu mencetak banyaknya bilangan bulat yang ada dalam stack.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah perintah add X Y, del Y, adx X, atau dex X sesuai penjelasan di atas. Nilai X dan Y berada di antara 1 sampai 10.000.

Format Keluaran

Beberapa baris, sesuai dengan banyaknya perintah "add X Y" dan "del Y" yang diberikan pada masukan. Masing-masing baris berisi sebuah bilangan bulat sesuai penjelasan di atas.

Contoh Masukan

8
add 1 1
add 2 2
add 3 3
del 2
adx 2
del 2
dex 1
del 2

Contoh Keluaran

1
3
6
3
5
3

Penjelasan

Berikut ini adalah visualisasi dari contoh masukan.
awal    : []
add 1 1 : [1]           -> cetak 1
add 2 2 : [1 2 2]       -> cetak 3
add 3 3 : [1 2 2 3 3 3] -> cetak 6
del 2   : [1 2 2 3]     -> cetak 3
adx 2   : [3 4 4 5]
del 2   : [3 4]         -> cetak 5
dex 1   : [2 3]
del 2   : []            -> cetak 3 
 

So, the answer is :


 

Modified Queue

Queue (antrian) adalah salah satu tipe data penting dalam dunia pemrograman. Pak Dengklek meminta Anda untuk mensimulasikan N (1 ≤ N ≤ 1.000) buah operasi terhadap sebuah queue yang terdiri dari bilangan bulat.
Mula-mula, queue yang Anda miliki adalah kosong (tidak berisi apa-apa). Lalu Anda perlu membaca perintah yang diberikan satu persatu dan mengaplikasikannya pada queue tersebut. Dua perintah dasar yang mungkin diberikan terhadap queue adalah "add X Y" atau "del Y". Perintah "add X Y" (atau biasa disebut enqueue) berarti menambahkan Y buah bilangan bulat X pada ujung akhir queue. Sedangkan perintah "del Y" (atau biasa disebut dequeue) berarti menghapus Y buah bilangan bulat dari ujung awal queue. Coba perhatikan bagaimana tipe data ini menyerupai antrian.
Yang unik dari queue Anda kali ini adalah bahwa ada sebuah perintah tambahan "rev" yang berarti Anda perlu membalikan queue sehingga bilangan yang tadinya ada di akhir menjadi ada di awal dan sebaliknya.
Untuk menguji kebenaran dari operasi queue Anda, Anda perlu mencetak beberapa hal seperti berikut. Setiap kali melakukan perintah "del Y", Anda perlu mencetak satu bilangan bulat pertama yang Anda keluarkan. Setiap kali melakukan perintah "add X Y", Anda perlu mencetak banyaknya bilangan bulat yang ada dalam queue.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah perintah add X Y, del Y, atau rev sesuai penjelasan di atas. Nilai X dan Y berada di antara 1 sampai 10.000.

Format Keluaran

Beberapa baris, sesuai dengan banyaknya perintah "add X Y" dan "del Y" yang diberikan pada masukan. Masing-masing baris berisi sebuah bilangan bulat sesuai penjelasan di atas.

Contoh Masukan

6
add 1 1
add 2 2
add 3 3
del 2
rev
del 2

Contoh Keluaran

1
3
6
1
3

Penjelasan

Berikut ini adalah visualisasi dari contoh di atas:
awal    : []
add 1 1 : [1]           -> cetak 1
add 2 2 : [1 2 2]       -> cetak 3
add 3 3 : [1 2 2 3 3 3] -> cetak 6
del 2   : [2 3 3 3]     -> cetak 1
rev     : [3 3 3 2]
del 2   : [3 2]         -> cetak 3 
 

So, the answer is :


 

Periksa Palindrom

Palindrom adalah sebuah kata yang dibaca sama apabila urutan huruf-hurufnya dibalik. Misalnya, "apa", taat", "malam", dan lain-lain.
Pak Dengklek memberikan Anda sebuah kalimat yang terdiri atas 1 sampai 10.000 karakter. Tiap kata pada kalimat tersebut terdiri atas 1 sampai 200 karakter 'a' sampai 'z'. Tentukan kata-kata mana saja pada kalimat tersebut yang merupakan palindrom.

Format Masukan

Baris pertama berisi kalimat yang dimaksud.

Format Keluaran

Sebuah baris berisi kalimat pada masukan yang hanya terdiri atas kata-kata yang palindrom, sesuai urutan awalnya.

Contoh Masukan

apa yang di alami malam ini oleh anna dan saras tidak pernah ada

Contoh Keluaran

apa malam ini anna saras ada
 

So, the answer is :

 

Membalik Bilangan

Pak Dengklek memberikan Anda N (0 ≤ N ≤ 10.000) buah bilangan bulat antara 0 sampai 10.000.000. Cetak kembali bilangan-bilangan tersebut setelah dibalik. Misalnya, 308 dibalik menjadi 803.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah bilangan bulat yang ingin dibalik.

Format Keluaran

N buah baris, masing-masing berisi bilangan bulat pada masukan yang telah dibalik. Jangan ada angka nol berlebih di depan bilangan-bilangan tersebut.

Contoh Masukan

5
1330
7525
4025
5
12624

Contoh Keluaran

331
5257
5204
5
42621



So, the answer is :

 

Reverse

Pak Dengklek memberikan Anda sebaris teks dengan panjang antara 1 sampai 1.000 karakter. Balik urutan karakter-karakter pada teks tersebut dan cetak kembali.

Format Masukan

Baris pertama berisi sebuah teks yang ingin dibalik.

Format Keluaran

Sebuah baris yaitu teks pada masukan yang telah dibalik.

Contoh Masukan

Olimpiade Nasional

Contoh Keluaran

lanoisaN edaipmilO
 
 

So, the answer is :

 

Correction

Pernahkan Anda memakai iPhone versi 2.0.2? Fitur paling menyebalkan yang tidak bisa (setidaknya, Pak Dengklek belum bisa) dimatikan pada iPhone versi ini adalah correction suggestion saat pengguna mengetik SMS.
Pak Dengklek ingin membuat program correction suggestion ini, dengan sedikit modifikasi. Penjelasan dari algoritma ini adalah sebagai berikut. Terdapat sebuah kamus yang berisi K (1 ≤ K ≤ 5.000) buah kata yang sah, masing-masing antara 1 sampai 5.000 huruf alfabet. Setiap kali Anda menuliskan sebuah huruf, program akan mengecek potongan kata yang sah yang paling dekat dengan (potongan) kata yang Anda tulis, dan mengembalikan saran potongan kata yang sah tersebut. Bila ada beberapa kata yang sama dekatnya, tuliskan kata yang lebih dahulu muncul pada masukan.
Kedekatan dua buah potongan kata dengan panjang sama adalah jumlah kedekatan antar dua huruf yang terletak di posisi yang sama. Kedekatan antar dua huruf ditentukan oleh jarak minimal keduanya dalam urutan alphabet 'a'-'z' (sirkular, sehingga kedekatan 'a' dan 'z' adalah 1). Misalnya, kedekatan antara "dara" dan "carb" adalah 1+0+0+1 = 2.
Bantulah Pak Dengklek membuat program correction suggestion yang menyebalkan ini.

Format Masukan

Baris pertama berisi sebuah bilangan bulat K. K baris berikutnya berisi kata-kata sah yang ada dalam kamus tersebut. Baris berikutnya berisi sebuah kata (query) antara 1 sampai 5.000 karakter. Dijamin selalu ada kata dalam kamus dengan panjang lebih dari atau sama dengan query.

Format Keluaran

Baris-baris sebanyak panjang kata query. Baris ke-i berisi saran yang akan diberikan program saat pengguna sudah mengetik i huruf pertama dari query.

 

 

Contoh Masukan

5
character
charade
cats
cabaret
blade
chabter

Contoh Keluaran

c
ch
cha
blad
cabar
cabare
cabaret 
 

So, the answer is :

 

Operasi String

Pada latihan ini, program Anda harus membaca sebuah empat buah string yang kita beri nama S1, S2, S3, dan S4. Misalnya program Anda mendapat input seperti ini:
abcdehalofghi
bcd
halo
semua
Dijamin bahwa string S1 mengandung sebuah string S2 di dalamnya. Buang string S2 yang ditemukan di string S1 (dijamin ada, dan hanya satu). Kemudian sisipkan string S4 pada posisi setelah string S3 yang ditemukan di string S1 (dijamin ada, dan hanya satu). Jadi pada contoh di atas, abcdehalofghi diubah menjadi aehalofghi, lalu menjadi aehalosemuafghi. Keluarkan string hasil akhir, yang pada contoh ini adalahaehalosemuafghi.
Untuk menyelesaikan masalah tersebut, kita perlu mengenal berbagai fungsi-fungsi dan prosedur-prosedur penanganan string yang disediakan oleh library Pascal yang bisa kita gunakan. (Dapat dilihat di
http://community.freepascal.org:10000/docs-html/rtl/system/stringfunctions.html)
Fungsi-fungsi dan prosedur-prosedur yang akan kita gunakan adalah:
function length(s: string): integer;
function pos(substr: string; s: string): integer;
procedure delete(var s: string; index: integer; count: integer);
procedure insert(s: string; var source: string; index: integer);
Fungsi length akan mengembalikan panjang dari s.
Jika string s mengandung string substr, fungsi pos akan mengembalikan index pertama dari kemunculan pertama substr di dalam s (karakter pertama diberi index 1). Jika tidak ada, fungsi ini akan mengembalikan 0.
Prosedur delete akan membuang sebanyak count karakter pada string s, dimulai dengan index ke-index. Misalnya, jika s pada mulanya adalah 'Halo', delete(s, 1, 2) akan mengubah isi s menjadi 'lo'.
Prosedur insert akan memasukkan string s ke dalam string source, dimulai pada posisi index ke-index.
Untuk menyelesaikan masalah awal, kita dapat membuat program sebagai berikut:
var
    S1, S2, S3, S4: string;
begin
    readln(S1);
    readln(S2);
    readln(S3);
    readln(S4);
    
    delete(S1, pos(S2, S1), length(S2));
    insert(S4, S1, pos(S3, S1) + length(S3));
    
    writeln(S1);
end.
Pada program di atas, S2 di dalam S1 akan dibuang dari S1, dan selanjutnya S4 akan dimasukkan ke dalam S1 tepat pada posisi pos(S3, S1) + length(S3), yaitu posisi karakter pertama yang tidak termasuk S3, setelah kemunculan seluruh karakter S3 di dalam S1.
Namai program tersebut dengan nama pjj0114 dan simpanlah dengan nama 'pjj0114.PAS'.

Contoh Masukan

abcdehalofghi
bcd
halo
semua

Contoh Keluaran

aehalosemuafghi
Masih banyak fungsi-fungsi dan prosedur-prosedur lain yang mungkin berguna, yang bisa dipelajari di
http://community.freepascal.org:10000/docs-html/rtl/system/index.html
Berikut ini adalah ringkasan dari beberapa fungsi yang mungkin berguna:
procedure str(x: integer; var s: string);
Prosedur ini akan mengubah nilai integer x menjadi string, lalu dimasukkan ke dalam variabel s. Misalnya, jika x bernilai 10, s akan menjadi bernilai '10'.
function lowerCase(s: string): string;
Fungsi ini akan menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf kecil.
function upCase(s: string): string;
Fungsi ini akan menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf besar.
function chr(b: byte): char;
Fungsi ini akan mengembalikan sebuah karakter yang memiliki kode ASCII b. Misalnya chr(65) akan mengembalikan "A".
function ord(c: char): longint;
Fungsi ini akan mengembalikan nilai bilangan bulat dari sebuah tipe ordinal. Biasanya fungsi ini digunakan untuk menentukan kode ASCII dari karakter c. Misalnya, ord("A") akan mengembalikan 65.
Kombinasi chr dan ord dapat digunakan untuk mengubah sebuah karakter dari huruf kecil menjadi huruf besar, atau sebaliknya. Misalnya,chr(ord("x") + (ord("A") - ord("a"))) akan menghasilkan "X".
function abs(l: longint): longint;
Fungsi ini akan mengembalikan nilai absolut dari l. Misalnya, abs(-3) akan mengembalikan 3, dan abs(3) juga mengembalikan 3.
procedure dec(var x: integer);
procedure dec(var x: integer; decrement: integer);
Prosedur ini akan mengurangi nilai x dengan 1, atau dengan nilai decrement jika diberikan.
procedure inc(var x: integer);
procedure inc(var x: integer; increment: integer);
Prosedur ini akan menambah nilai x dengan 1, atau dengan nilai increment jika diberikan.
function sqr(x: longint): longint;
function sqr(x: real): real;
Fungsi ini akan mengembalikan kuadrat dari x.
function sqrt(x: real): real;
Fungsi ini akan mengembalikan akar kuadrat dari x.
function trunc(x: real): integer;
Fungsi ini akan mengembalikan bagian bilangan bulat dari sebuah bilangan real x. Misalnya, trunc(3.456) akan menghasilkan 3.
function round(x: real): integer;
Fungsi ini akan menghasilkan pembulatan dari sebuah bilangan real x. Pada Pascal, aturan pembulatan untuk 0.5 adalah ke arah bilangan genap. Jadi, round(1.5) akan menghasilkan 2, tetapi round(2.5) juga akan menghasilkan 2.
function pi: real;
Fungsi ini mengembalikan nilai pi (3.14159...).


So, the answer is :

 

Saling Silang

Suatu permainan iseng-iseng asah otak berikut mungkin sering Pak Dengklek mainkan. Diberikan matriks berukuran R x C (2 ≤ R, C ≤ 100) yang setiap selnya berisikan satu huruf kapital. Pada matriks terdapat sejumlah kata yang karakter-karakternya tersusun secara
  • horisontal
    • dari kiri ke kanan, atau
    • dari kanan ke kiri, atau
  • vertikal
    • dari atas ke bawah, atau
    • dari bawah ke atas, atau
  • diagonal
    • dari kiri atas ke kanan bawah, atau
    • dari kanan bawah ke kiri atas, atau
    • dari kiri bawah ke kanan atas, atau
    • dari kanan atas ke kiri bawah
Pak Dengklek meminta Anda untuk membuat program yang diberikan matriks tersebut dan N (1 ≤ N ≤ 100) buah kata yang terdiri antara 1 sampai 100 karakter, menentukan kata-kata mana saja yang ada di dalam matriks tersebut.

Format Masukan

Baris pertama berisi dua buah bilangan bulat R dan C. R baris selanjutnya masing-masing berisi C sebuah karakter yang dipisahkan oleh sebuah spasi. Baris berikutnya berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi kata-kata yang ingin dicari.

Format Keluaran

N buah baris, masing-masing berisi Y jika kata yang dimaksud ditemukan dalam matriks, atau T jika tidak ditemukan.

Contoh Masukan

6 5
B A B K D
U N I D K
L D U L O
U I T R N
H N A G A
F I U T G
6
BULUH
UDIK
HITAM
ANDINI
LIAT
ARUN

Contoh Keluaran

BULUH Y
UDIK Y
HITAM T
ANDINI Y
LIAT Y
ARUN Y

Penjelasan

Matriks pada contoh masukan adalah sebagai berikut.



So, the answer is :