Bài đăng

Đang hiển thị bài đăng từ Tháng 4, 2019

Ứng dụng thuật toán Minimax viết AI cho trò chơi Tic Tac Toe

Hình ảnh
Ứng dụng thuật toán Minimax viết AI cho trò chơi Tic Tac Toe Trong bài viết này, mình sẽ giải thích về thuật toán minimax mình sử dụng để viết trò chơi này. Nhưng trước hết mình nên giải thích cho mọi người hiểu về AI là gì nhỉ! AI(Artificial Intelligence) có khá nhiều định nghĩa. Chúng ta hãy xem nguồn gốc về định nghĩa AI để hiểu rõ hơn. Vào tháng 10/1950, nhà bác học Alan Turning đã suy nghĩ về một chương trình AI. Ông tự hỏi liệu máy tính có thể suy nghĩ như con người không? Ông đưa ra một trò chơi như sau: Trò chơi gồm có 3 thành viên tham gia, gồm hai người và một máy tính. Một người sẽ làm người đặt ra câu hỏi, và hai thành viên kia sẽ trả lời (dưới dạng ẩn danh). Trò chơi diễn ra đến khi người đặt câu hỏi không phân biệt được đâu là câu trả lời của người, đâu là câu trả lời của máy, thì khi đó máy tính coi như là đã “suy nghĩ” như con người. Thế chúng ta có thể hiểu rằng, AI xem như là trí thông minh của máy tính, xây dựng bằng cách mô phỏng lại suy nghĩ của con ...

Trang web giúp mình luyện code

Hình ảnh
J Trang web giúp mình luyện code J Dạo gần đây mình có tìm tòi các trang web về luyện giải thuật để nâng cao kỹ năng lập trình của mình. Trước đây mình có qua trang Codingame, chiến code với mọi người thì khá là vui nhưng cũng không hợp với mình vì bên đó giải bài tập chỉ cho thời gian ngắn và đề bài hơi khó đọc. Mình bỏ 1 thời gian rồi sau đó lên mạng để tìm trang học code. Rồi mình tìm thấy một trang khá là hay, đó là Hackerrank (không phải quảng cáo gì đâu nhé 😂 ). Trang web này không chỉ giúp mình luyện thuật toán, nó còn luyện cho mình về các cú pháp, về toán học và rất nhiều thứ: Khi bạn luyện tập, người ta sẽ cung cấp cho bạn thứ hạng để mình dễ dàng nhận thấy chặng đường bạn luyện đến đâu: Mỗi bài tập sẽ có mức độ khó dễ và tỉ lệ người giải quyết bài toán để mình có thể chọn lựa mức độ bài tập phù hợp với khả năng bản thân: Đa số các bài tập này đều có mô phỏng về tình huống thực tế, và các bài tập giải thích các đoạn test rất rõ ràng: Tất nh...

Cùng tìm hiểu String trong Java nào

Hình ảnh
Cùng tìm hiểu String trong Java nào Trong lập trình nói chung, String là một mảng gồm các kí tự. Khái niệm có vẻ đơn giản, nhưng trong Java, người ta không chỉ dừng lại ở mức đơn giản như thế. Hôm nay mình sẽ tập trung vào 2 mục tiêu: 1.   Các thành phần của String 2.   Tổ chức lưu trữ trong String Phần 1: Các thành phần của String String bản chất là một đối tượng được tạo thông qua lớp String. Vì Java có cung cấp mã nguồn của các lớp nên chúng ta cùng nhau khai thác nó để hiểu rõ hơn nhé. Vì là đối tượng nên chúng ta sẽ xem thuộc tính của nó trước: Như chúng ta thấy, lớp String có 2 thuộc tính: value[] và hash (ở phiên bản cũ thì có 4 thuộc tính: value[], offset, count và hash (xem chi tiết tại: http://www.docjar.com/html/api/java/lang/String.java.html ) ). Đầu tiên ta thấy rõ value[] là một mảng gồm các char, vậy tức là String trong Java được biểu diễn dưới hình thức của char array. Để đảm bảo hơn, ta thử soi hàm length() của class String thực hiện thế...