Tampilkan postingan dengan label coding. Tampilkan semua postingan
Tampilkan postingan dengan label coding. Tampilkan semua postingan

Kamis, 04 Februari 2021

Typo in Count Letter Coding in examples (Python For Every One Cay Horstmann)

A simple program that counts the number of times each letter of the English alphabet occurs. Make your own file in *.txt. There are 26 letters of the alphabet for which we must maintain a count, we can use a list of 26 counters represented by integer values.
letterCounts = [0] * 26 # Create a list with 26 elements initialized to 0.
 

The number of occurrences for letter "A" will be maintained in counts[0], the count for
letter "B" in counts[1] and so on all the way through counts[25] for letter "Z".

Use ord function. By subtracting the code for the letter A, one obtains a value between 0 and 25 that can be used as an index to the letterCounts list:
 

code = ord(char) - ord("A")
letterCounts[code] = letterCounts[code] + 1
 

Note that all lowercase letters must be converted to uppercase before they are
counted. This is the program: 


Well it coudn'twork.... We have to add one lines like this: 


Input file read should be written twice or the code would only read the first letter.

Minggu, 06 Agustus 2017

Menyelesaikan Maze Secara Otomatis Menggunakan Algoritma Dijkstra

Ini adalah tulisan anak ke 1 usia 16 tahun yang sedang mempelajari Algoritma Komputer.

Algoritma Dijkstra adalah algoritma untuk mencari jalur tersingkat dari satu titik ke satu titik lainnya. Algoritma ini dapat digunakan untuk menyelesaikan sebuah maze.


Ini adalah salah satu gambar "maze sederhana" yang sudah diselesaikan oleh program yang menggunakan algoritma dijkstra:
Gambar asli berukuran 10px x 20px

Pada waktu itu, teknik yang digunakan adalah teknik rekursi dari sini, Memang berhasil, tetapi, ketika dicoba dengan maze yang lebih besar, program tewas dan tak mampu menyelesaikan maze.


Teknik lainpun dicoba, kali ini yang digunakan adalah teknik loop dari buku Competitive Programmers Handbook. Teknik ini mudah ditulis, singkat, dan mudah dimengerti, tidak seperti kebanyakan algoritma dijkstra yang lain. Kebanyakan algoritma pada umumnya susah dimengerti dan menggunakan banyak baris code, walaupun sama sama menggunakan teknik looping.


Teknik ini berhasil menyelesaikan maze yang lebih besar. Ini adalah hasilnya:

Kemudian dicoba lagi dengan maze yang lebih besar:

Pada maze ini, program memilih untuk tidak melewati maze, tetapi ia "memotong jalan" (lewat sebelah kiri):


Setelah jalur untuk memotong jalan tersebut ditutup:

Akhirnya jalur maze diberi warna:



Kemudian program dibuat supaya bisa bergerak secara diagonal:



Mulai mencoba maze yang lebih rumit:

Maze yang jauh lebih rumit:
Maze diatas diselesaikan dalam waktu kurang dari 2 menit.


Maze ini diselesaikan dalam waktu kurang dari 17 detik:




Kilas Balik Menyelesaikan Maze. 
Pada tahun 2009 ketika berumur 7 tahun saya menyelesaikan maze secara manual dan 8 tahun kemudian menyelesaikan maze yang sama dengan Algoritma Dijkstra. Cerita di tahun 2009 dapat dilihat di sini.



Source code ada di github (mungkin akan dikembangkan kemudian) .