Nhờ vả về ngôn ngữ lập trình python.

Thảo luận trong 'Thư giãn' bắt đầu bởi Karya, 27/2/15.

  1. 25512345

    25512345 C O N T R A Lão Làng GVN

    Tham gia ngày:
    24/7/08
    Bài viết:
    1,814
    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 =))
     
  2. Karya

    Karya Donkey Kong Lão Làng GVN

    Tham gia ngày:
    27/12/09
    Bài viết:
    423
    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à .
     
  3. kaiba_seto2004

    kaiba_seto2004 Race ... Race ... Revolution Lão Làng GVN

    Tham gia ngày:
    11/12/04
    Bài viết:
    7,491
    Nơi ở:
    Rockport City
    Uả chưa có kinh nghiệm code sao lại chọn Python rồi đâm đầu vào nhể? :|
     
  4. INTP

    INTP T.E.T.Я.I.S

    Tham gia ngày:
    16/5/11
    Bài viết:
    639
    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ì...
     
  5. Quả đấm thép

    Quả đấm thép Hồng nhan bạc mệnh

    Tham gia ngày:
    4/1/11
    Bài viết:
    598
    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.
     
  6. anhhuy1605

    anhhuy1605 Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    11/11/07
    Bài viết:
    711
    Nơi ở:
    Đà Nẵng
    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
     
  7. Funnnny

    Funnnny Will Code Python For FOOD Moderator

    Tham gia ngày:
    2/8/05
    Bài viết:
    9,406
    Nơi ở:
    Hanoi, Vietnam
    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ì.
     
  8. anhhuy1605

    anhhuy1605 Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    11/11/07
    Bài viết:
    711
    Nơi ở:
    Đà Nẵng
    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.
     
  9. hell_angel7602

    hell_angel7602 C O N T R A Lão Làng GVN

    Tham gia ngày:
    5/2/06
    Bài viết:
    1,836
    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 à :5cool_big_smile: Viết = c++ thì em giúp đc, python chưa đc học :5cool_sweat:

    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)
     
  10. anhhuy1605

    anhhuy1605 Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    11/11/07
    Bài viết:
    711
    Nơi ở:
    Đà Nẵng
    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
     
    Chỉnh sửa cuối: 28/2/15
  11. hell_angel7602

    hell_angel7602 C O N T R A Lão Làng GVN

    Tham gia ngày:
    5/2/06
    Bài viết:
    1,836
    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 :5cool_big_smile:. 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 :5cool_big_smile:) rồi, deadline cho bản chính thức thì hơn 10 ngày nữa lận
    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;
    }
     
  12. anhhuy1605

    anhhuy1605 Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    11/11/07
    Bài viết:
    711
    Nơi ở:
    Đà Nẵng
    Còn nhiều thứ cần hỏi, bác cho cái yahoo hay skype để liên lạc đi
     
  13. Becks04eve

    Becks04eve Liu Kang, Champion of Earthrealm

    Tham gia ngày:
    28/5/07
    Bài viết:
    5,330
    Nơi ở:
    SoCal
    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 :1onion52:
     
  14. anhhuy1605

    anhhuy1605 Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    11/11/07
    Bài viết:
    711
    Nơi ở:
    Đà Nẵng
    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 :D
     
  15. Becks04eve

    Becks04eve Liu Kang, Champion of Earthrealm

    Tham gia ngày:
    28/5/07
    Bài viết:
    5,330
    Nơi ở:
    SoCal
    Hiện tại đang học linkedlist, nhưng ko hiểu gì lắm.
     
  16. anhhuy1605

    anhhuy1605 Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    11/11/07
    Bài viết:
    711
    Nơi ở:
    Đà Nẵng
    Qua C++ hiện thực thử đi là hiểu ngay :)) GG đầy tut
     
  17. ren_momo2

    ren_momo2 Chrono Trigger/Cross Lão Làng GVN

    Tham gia ngày:
    16/6/09
    Bài viết:
    6,532
    java không có con trỏ thì học linked list chả hiểu gì là phải :))
     
  18. 25512345

    25512345 C O N T R A Lão Làng GVN

    Tham gia ngày:
    24/7/08
    Bài viết:
    1,814
    Thế không ai giúp chủ thớt nốt cái kia ah? :))
     
  19. Funnnny

    Funnnny Will Code Python For FOOD Moderator

    Tham gia ngày:
    2/8/05
    Bài viết:
    9,406
    Nơi ở:
    Hanoi, Vietnam
    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 ?
     
  20. webvn.200

    webvn.200 Youtube Master Race

    Tham gia ngày:
    11/2/15
    Bài viết:
    32
    py chưa đc học nghe nói thằng google dùng thằng này học căn bản C C++
     

Chia sẻ trang này