Chắc đây là ngôn ngữ đầu tiên học, chưa biết tí gì mà deadline đến đít thì mới thế này. Các bô lão cứ gạch mãi // Trước chạy code py đéo hiểu sao máy chạy đc máy không, hoá ra code py2, compile py3 éo chạy đc
Chuẩn cơm mẹ nấu luôn; mà ko phải deadline đến đít mà mình mới reinstate lại nên lớp đã có problem sets nào thì phải làm hết. @haiduong87: thanks bác vì cái problem set 1. Thế ko ai thèm lấy cái thẻ dt à; dễ với mấy bác mà .
bây giờ người ta chọn Python làm ngôn ngữ đầu tiên nhiều lắm. Nói chung mới học thì nắm bắt mấy cái if else for while với function là ngon rồi. Mà cái này thì ngôn ngữ nào chả được, đâm đầu vô C làm gì...
Mấy ông trên này quen rồi ko nhớ dc cái khó của người chưa code bao giờ. Học code lần đầu mất một thời gian mới quen. Bác kiếm cuốn sách beginner làm theo mấy ví dụ của nó, rồi tự chỉnh sửa của mình vào. Chưng 2,3 chap bác quen tay, học xong for, if thì sau đó sẽ dễ hiểu hơn nhiều.
Giờ nhiều trường dùng python làm ngôn ngữ đầu tiên vì nó dễ học, gần giống với mã giả hơn. Học giải thuật nào xong thì bê qua python cái rẹt. Nhưng cũng phải thừa nhận học C/C++ trước thì nắm rõ cách hoạt động của chương trình hơn
Toàn các ông học C/C++ chỉ biết dùng Dev-C++ với Codeblock hay Eclipse, thực ra 1 chữ cách hoạt động của chương trình cũng chả biết, quy trình compile của chương trình ko biết, viết 1 cái Makefile đơn giản cũng ngọng luôn, học phí thời gian chứ để làm mẹ gì.
Lúc vào học Computer Science cần một ngôn ngữ để khi học các môn sau này có thứ để thực hành, mục đích không hoàn toàn là để sau này đi làm dùng nó. Tùy trường và chuyên ngành sẽ có ngôn ngữ nào làm ngôn ngữ đầu tiên. Về C/C++, sv VN bị như bác nói nhiều, tôi cũng thấy thằng bạn học ở BK ĐN xài Dev-C++ không biết gì về compiler nhưng đừng có vơ đũa cả nắm bảo học C/C++ phí thời gian, coi lại thử chương trình đào tạo mục đích để đạt được gì? Ra trường code C/C++ kiếm cơm hay sao mà không hiểu được sâu thế là thành đồ bỏ? Tôi đi theo hướng research, xài ngôn ngữ tùy theo project, quy trình compile không nhớ rõ nữa nhưng giờ chả thấy hồi trước phí thời gian gì. Python dễ xài vì được hỗ trợ nhiều, nhiều thư viện,... nhưng nó che quá nhiều chi tiết bên dưới, sau này chuyển qua ngôn ngữ khác cùi bắp hơn xem có méo mặt ko.
Chủ thớt chắc ếu học nữa mà ko chịu bấm drop, tưởng ông thầy drop giùm nên giờ phải cắm mặt vào cày à Viết = c++ thì em giúp đc, python chưa đc học Spoiler: Bài khó đây ạ Thím nào bảo chủ thớt cho bài dễ thì vào giúp em cái này, xin tặng gift code steam luôn ạ. Ngay ngày tết có khóc trong này về cái project AI(C++) nhưng tự xoay đc rồi, giờ thím nào optimize giúp cho nó ngon 1 chút. Project viết AI cho ConnectK game, 1 dạng giống caro của mình (nếu k = 5). Hiện tại AI em viết đập đc poor + average AI của ông thầy, good AI thì nếu đi trc mới thắng, đi sau thì tạch/hoà. Thím nào giúp em hiếp dâm đc goodAI em xin hậu tạ. Em dùng alpha beta pruning + iterative deepening search. Link của file jar + goodAI (ông thầy dùng java)
Bác cần optimize thời gian chạy hay giải thuật để đánh thắng ông thầy? Tôi chưa làm AI hơn 1 năm rồi nên code có thể chạy chậm, bác ok thì cho xin cái deadline để nghiên cứu thử. Edit: bác cho trước code cái khung được không, tôi coi sửa hàm ranking thôi
Quan trọng là evaluate game board cho chính xác, thời gian chạy chắc ko cần lắm vì với 5s AI của em chỉ search đc depth = 2 thôi nhưng có khả năng hiếp đc goodAI của ổng rồi . Có file goodAI đó, bác xem thử xem. 1h nữa em nộp bảng nháp (yêu cầu thông đít đc poorAI đã làm đc ) rồi, deadline cho bản chính thức thì hơn 10 ngày nữa lận Spoiler: evalution board double AIShell::evaluation(bool AI) { double scoreAI = 0; double scorePlayer = 0; int countAI = 0; int countPlayer = 0; bool block = false; double bias = 1.6; //check winning state //horizontal for (int i = 0; i < numCols; i++) { for (int j = 0; j < numRows - k + 1; j++) { for (int n = 0; n < k; n++) { if (gameState[j + n] == 1) countAI++; else if (gameState[j + n] == -1) countPlayer++; } if (countAI >0 && countPlayer > 0) { countAI = 0; countPlayer = 0; } else { if (countAI > countPlayer) { if (j == 0 || j + k == numRows || gameState[j - 1] == -1 || gameState[j + k] == -1) block = true; scoreAI += calScore(countAI, block); } else if (countPlayer > countAI) { if (j == 0 || j + k == numRows || gameState[j - 1] == 1 || gameState[j + k] == 1) block = true; scorePlayer += calScore(countPlayer, block); } } countAI = 0; countPlayer = 0; block = false; } } ////check vertical countAI = 0; countPlayer = 0; block = false; for (int i = 0; i < numRows; i++) { for (int j = 0; j < numCols - k + 1; j++) { for (int n = 0; n < k; n++) { if (gameState[j + n] == 1) countAI++; else if (gameState[j + n] == -1) countPlayer++; } if (countAI >0 && countPlayer > 0) { countAI = 0; countPlayer = 0; } else { if (countAI > countPlayer) { //check block if (j == 0 || j + k == numCols || gameState[j - 1] == -1 || gameState[j + k] == -1) block = true; scoreAI += calScore(countAI, block); } else if (countPlayer > countAI) { if (j == 0 || j + k == numCols || gameState[j - 1] == 1 || gameState[j + k] == 1) block = true; scorePlayer += calScore(countPlayer, block); } } countAI = 0; countPlayer = 0; block = false; } } //check digonal //left to right countAI = 0; countPlayer = 0; block = false; for (int i = 0; i < numCols - k + 1; i++) { for (int j = 0; j < numRows - k + 1; j++) { for (int n = 0; n < k; n++) { if (gameState[i + n][j + n] == 1) countAI++; else if (gameState[i + n][j + n] == -1) countPlayer++; } if (countAI >0 && countPlayer > 0) { countAI = 0; countPlayer = 0; } else { if (countAI > countPlayer) { if (i == 0 || j == 0 || i + k == numCols || j + k == numRows || gameState[i - 1][j - 1] == -1 || gameState[i + k][j + k] == -1) block = true; scoreAI += calScore(countAI, block); } else if (countPlayer > countAI) { if (i == 0 || j == 0 || i + k == numCols || j + k == numRows || gameState[i - 1][j - 1] == 1 || gameState[i + k][j + k] == 1) block = true; scorePlayer += calScore(countPlayer, block); } } countAI = 0; countPlayer = 0; block = false; } } //right to left countAI = 0; countPlayer = 0; block = false; for (int i = numCols - k; i >= 0; i--) { for (int j = numRows - 1; j >= k - 1; j--) { for (int n = 0; n < k; n++) { if (gameState[i + n][j - n] == 1) countAI++; else if (gameState[i + n][j - n] == -1) countPlayer++; } if (countAI >0 && countPlayer > 0) { countAI = 0; countPlayer = 0; } else { if (countAI > countPlayer) { if (i == 0 || j == numRows - 1 || i + k == numCols || j - k == 0 || gameState[i - 1][j + 1] == -1 || gameState[i + k][j - k] == -1) block = true; scoreAI += calScore(countAI, block); } else if (countPlayer > countAI) { if (i == 0 || j == numRows - 1 || i + k == numCols || j - k == 0 || gameState[i - 1][j + 1] == 1 || gameState[i + k][j - k] == 1) block = true; scorePlayer += calScore(countPlayer, block); } } countAI = 0; countPlayer = 0; block = false; } } //cout << "AI score: " << scoreAI << endl; //cout << "Player score: " << scorePlayer << endl; if (AI) { return scoreAI*bias - scorePlayer; } else return scoreAI - scorePlayer*bias ; } double AIShell::calScore(int count, bool block) { //best for connect-5 //const int liveWeight[] = { 2, 8, 300, 10000 }; //const int blockedWeight[] = { 1, 3, 50, 500}; //agressive //const int liveWeight[] = { 2, 50, 2000, 10000 }; //const int blockedWeight[] = { 1, 30, 500, 5000}; //defensive const int liveWeight[] = { 2, 10, 200, 10000 }; const int blockedWeight[] = { 1, 8, 50, 5000}; double score = 0; if (count >= k) return 100000; //k-1 in a row (blocked // live) if (count == (k - 1)){ if (block) score = blockedWeight[3]; else score = liveWeight[3]; } //k-2 in a row else if (count == (k - 2)) { if (block) score = blockedWeight[2]; else score = liveWeight[2]; } //k-3 in a row else if (count == (k - 3)) { if (block) score = blockedWeight[1]; else score = liveWeight[1]; } //k-4 in a row else if (count == (k - 4)) { if (block) score = blockedWeight[0]; else score = liveWeight[0]; } return score; }
Trường mình ngôn ngữ đầu tiên vẫn là Java và C++. Học Java trước rồi wa C++ thì thấy nhẹ nhàng hơn. Bây giờ thì mình đang học Data Structure trong Java và thật sự điên đầu với nó. Ông Prof. toàn lý thuyết, ko chịu program & run. Thành ra học gần cả tháng mà chả hiểu gi nhìu
Nội dung về stack, queue, hash, tree, graph... à. Trước mình học làm bài tập hiện thực đống đấy nên nắm cũng chắc, bác thử làm như vậy xem
Vớ vẩn, tỉ lệ sinh viên tự ngồi học được bao nhiêu, liệu dạy C/C++ cho số đó có ý nghĩa hay ko? Học phí thời gian ko phải là việc học là phí, mà là dạy cho đại trà là quá phí. Ai cần thì người đó học, tự học hoặc đi tìm lớp học, dạy cho 80-90% người chả cần quan tâm tí gì đến hệ thống hay mô hình cấu trúc, chỉ cần học Java với C# .Net kiếm tiền thì liệu có cần thiết ko ?