• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Các đề tài, cuộc thi, chủ đề chung của diễn đàn

Điều hành viên: Điều hành

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

[Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Gửi bàigửi bởi vo_minhdat2007 » CN 05/09/2010 6:21 pm

Chào các bạn,

Nhằm giúp làm sôi động thêm diễn đàn và góp phần giúp các bạn nâng cao kỹ năng lập trình cho các thành viên Câu lạc bộ VB, đặc biệt là VB.NET, 2 mod của box VB.NET & C# là vo_minhdat2007 và Uzamaki Naruto quyết định mở một loạt các chủ đề về lập trình.

Mục đích: Giúp thành viên vận dụng kiến thức lập trình của mình để giải quyết những vấn đề thực tế do đề bài đưa ra, từ đó nâng cao kĩ năng.
Đối tượng: Tất cả thành viên diễn đàn, trừ BQT (Admin, SMOD, MOD). Advance Member được quyền tham gia. Tuy nhiên, Admin, SMOD, MOD vẫn có thể gửi đáp án để làm cơ sở nhận xét. Advance Member được tham gia, nhưng nếu có kết quả hòa giữa Advance Member và thành viên thường thì sẽ ưu tiên cho thành viên.
Quy định:
- Mỗi tuần sẽ có 1 topic được mở ra, đưa ra đề bài, đưa lên mục chú ý.
- Các bài giải sẽ được gửi cho MOD vo_minhdat2007 bằng chức năng nhắn tin của diễn đàn hoặc email vo_minhdat2007@yahoo.com.vn . Mục đích là để các bạn tự suy nghĩ ra cách giải tốt nhất đối với mình.
- Sau vài ngày, MOD sẽ đưa các bài giải của các bạn lên và nhận xét, chấm điểm và xếp hạng. Các bạn sẽ tiếp tục thảo luận nếu có giải pháp hay hơn, hoặc đưa ra các nhận xét. Vài ngày sau thì bắt đầu kì mới.
- Chú ý: Trong phần tính điểm có tính cả điểm xử lí tình huống lỗi, kể cả lỗi dữ liệu đầu vào!

Đáp án:
Mỗi đề bài đưa ra sẽ bao gồm yêu cầu, kèm theo 1 form mẫu (ở đây dùng VS2008, các bạn dùng bản cũ hơn thì xem cách downgrade ở box Thắc mắc VB.NET & C#) nếu các bạn không muốn thiết kế lại form. Khi gửi đáp án các bạn có 2 cách:
- Gửi cả project qua email hoặc chức năng nhắn tin (đã ghi ở mục trên).
- Chỉ gửi code bằng chức năng nhắn tin của diễn đàn, code được cho vào thẻ code tương ứng, và phải chạy được khi mình copy vào form mẫu đã post.

Giải thưởng:
Hiện tại do chưa có tài trợ nên mình rất tiếc không thể có giải thưởng cho các bạn, nhưng mục đích chính là để nâng cao kỹ năng xử lí tình huống thực tế, nên mong các bạn tham gia cho vui :)



KÌ 3


Tình huống:
Tết nào ở chỗ mình cũng tổ chức Hội chợ rất vui :D Dù còn vài tháng nữa mới đến Tết nhưng mình nhờ các bạn làm giúp phần mềm này, để đến Tết có thể vui chơi Hội chợ nhé :P

Yêu cầu:
Trong khu Hội chợ chia thành các gian hàng hình vuông (bản thân khu hội chợ cũng là hình vuông cạnh N, với N < 10). Mình muốn tham gia (đi qua) tất cả các gian hàng trò chơi. Tuy nhiên, cũng có các ô mình không muốn đi qua (mấy gian hàng chém đắt quá, hoặc là mấy người bán nước mất vệ sinh đó mà :P), được đánh dấu màu đen. Vậy bạn tìm giúp mình có bao nhiêu cách đi mà mỗi ô chỉ đi qua 1 lần, bắt đầu từ ô (1, 1) và kết thúc tại ô (1, N), tọa độ có dạng (x, y) tương ứng (cột, dòng)?

Hình ảnh


Ngoài ra, chỉ giúp mình 1 cách đi bất kì luôn nha :D

Hình ảnh


Dữ liệu vào là file có đuôi KNLT, nội dung đối với hình minh họa 2:

  1. 000000
  2. 100000
  3. 100000
  4. 100000
  5. 100000
  6. 000000


Trong đó 0 là ô có thể đi qua, 1 là ô không thể đi qua. Các bạn chỉ ra đường đi bằng cách đánh số theo thứ tự các ô đi qua, liệt kê 1 cách là được.

Trong project gửi sẵn mình cũng thiết kế luôn thủ tục để vẽ lưới Label, các bạn có thể dùng. Yêu cầu là chọn tập tin, đổi màu ngay các ô không đi qua được thành màu đen.

Sau khi nhấn nút "Tính số đường" đi thì ghi kết quả ra Label bên dưới.

Nhấn nút "Đường đi bất kì" thì ghi kết quả vào ô lưới.

Thời gian giới hạn: 10s/test. Dữ liệu vào không cần kiểm tra.




ĐÁP ÁN


Nhìn chung, 3 chương trình các bạn gửi đều chạy được các test đơn giản, nhưng chỉ có chương trình của bạn alexanderdna là chạy được 7x7 ô trắng, riêng bạn NovaFooc có kiểm tra trường hợp có ô bị cô lập để đưa ngay đáp án.

Trong các test, riêng test 9 khá khó, các bạn tham khảo nhánh cận mà mình đưa ra để chạy được test 9 nhé. Test 10 bản chất chỉ là 6x6 ô trắng, nhưng còn ô bao ngoài mà thôi, với lượng thời gian chạy không đáng kể! Dưới đây là 10 test của mình (vì có 10 test nên các bạn có 0.5đ/test):

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Xếp hạng:

1. alexanderdna (8/10)
2. NovaFooc (7.5/10)
3. T7 (5.5/10)



Hình đại diện của người dùng
T7
Thành viên danh dự
Thành viên danh dự
Bài viết: 415
Ngày tham gia: T.Năm 24/05/2007 8:19 pm
Đến từ: Long Xuyên - An Giang
Been thanked: 12 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi T7 » CN 05/09/2010 6:35 pm

Bài này phải áp dụng 1 ít kiến thức đồ thị rồi ^^!
While (i <= you) i++;

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi vo_minhdat2007 » CN 05/09/2010 6:45 pm

Khỏi cũng làm được :D Test của anh dễ chịu lắm :P

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi alexanderdna » T.Hai 06/09/2010 12:41 pm

Hừm, có hơi hám đệ quy đây.

Nhưng mà 10 giây thì hơi "ép giá". Sau khi suy nghĩ té khói, thì tôi cũng tìm được cách. Nhưng thời lượng cứ tăng lên như phép lũy thừa vậy. Phép thử ở cỡ 6x6 còn dưới 10 giây. Lên tới 7x7 thì chạy riết không biết chừng nào mới xong. :((

Chắc phải có độc chiêu. Còn không, thì khả năng bản thân có hạn rồi. :P

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi vo_minhdat2007 » T.Hai 06/09/2010 6:39 pm

Hì, các bạn yên tâm, mình cho N lên 10 thì cũng đã cho thêm những ô không đi được, mình không đặt test N>7 mà test trống không đâu ;)

Thử thách thực sự của mình dành cho các bạn là N=7 thôi :)

[mod=vo_minhdat2007]Các bạn vui lòng không spam trong chủ đề này[/mod]

Hình đại diện của người dùng
Kasper
Guru
Guru
Bài viết: 1062
Ngày tham gia: T.Sáu 16/05/2008 10:54 am
Has thanked: 2 time
Been thanked: 76 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi Kasper » T.Ba 07/09/2010 8:28 am

Không cho đi theo đường chéo à? Hình ví dụ 1 với 4 ô nếu cho đi theo đường chéo thì sẽ có hơn 1 đáp án.

bắt đầu từ ô (1, 1) và kết thúc tại ô (1, N)?


kết thúc tại ô (1,N) hay ô (N,1)? (dòng, cột) hay (cột, dòng)? Hình ví dụ 2 tính theo (cột, dòng)
Lành tợ tòng, ác tợ hoa,
Nhà hòa muôn việc đều nên.

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 948
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 66 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi NoBi » T.Ba 07/09/2010 9:09 am

Đạt có thể cho thêm vài hình ví dụ cụ thể nữa đi, anh xem thấy cũng chưa hiểu đề bài lắm.
:>

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi vo_minhdat2007 » T.Ba 07/09/2010 10:13 pm

Cái này tính theo qui tắc hình học, tọa độ dạng (x, y). Tức là đi vào ô góc trên bên trái, đi ra ô góc dưới bên trái.

Hình đại diện của người dùng
Kasper
Guru
Guru
Bài viết: 1062
Ngày tham gia: T.Sáu 16/05/2008 10:54 am
Has thanked: 2 time
Been thanked: 76 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi Kasper » T.Tư 08/09/2010 8:06 am

Có cho phép đi theo đường chéo không. Xem hình.
Hình 1 thì okay rồi, vậy đi theo hình 2 thì có được không?
Lành tợ tòng, ác tợ hoa,
Nhà hòa muôn việc đều nên.

NovaFooc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 307
Ngày tham gia: T.Ba 11/08/2009 3:27 pm

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi NovaFooc » T.Tư 08/09/2010 10:06 am

theo như bài mẫu thì hình như là không có đi chéo :)

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi vo_minhdat2007 » T.Tư 08/09/2010 6:31 pm

À, xin lỗi quên trả lời. Theo ví dụ thì N=2 (2x2) thì chỉ có 1 cách đi, bạn có thể đoán ra là cho phép đi chéo hay không rồi đúng không ;)

Hình đại diện của người dùng
lungocqua
Guru
Guru
Bài viết: 1225
Ngày tham gia: T.Ba 18/08/2009 11:51 am
Đến từ: Phú Hữu - Nhơn Trạch - Đồng Nai
Been thanked: 5 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3

Gửi bàigửi bởi lungocqua » T.Năm 09/09/2010 10:00 pm

Máy mình chậm quá! Đề này xin không tham gia! :)
Ta đã trở lại và quên hết tất cả! :D

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 10/09/2010 5:44 pm

Hì, tiếc thật. Mới có 2 bài tham gia thôi. Chủ nhật mình kết thúc kì này nhé. Từ kì này mình ghi chú thêm mức độ của đề, mình sẽ cho đề khó-dễ xen kẻ để tạo cơ hội cho các bạn ;)

Ghi chú: Hiện trong 2 bài của các bạn T7 và alexanderdna vẫn chưa bài nào chạy nổi test N=7 và không có ô chặn. Hi vọng các bạn tìm được NHÁNH CẬN phù hợp ;)

htpc

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Gửi bàigửi bởi htpc » T.Sáu 10/09/2010 6:11 pm

Hàng cuối cùng coi như khỏi xét vì chỉ có 1 đường từ phải -> trái. Cái khó là xét nút nào đi sẽ về đích, nút nào đi sẽ bế tắc :D

NovaFooc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 307
Ngày tham gia: T.Ba 11/08/2009 3:27 pm

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Gửi bàigửi bởi NovaFooc » T.Sáu 10/09/2010 8:02 pm

vo_minhdat2007 đã viết:test N=7 và không có ô chặn

là 7x7 ô trống ah ?
k0 chuyên về mấy thuật toán, nói nhánh cận nhưng chẳng bit là gì lun :">

Hình đại diện của người dùng
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Bài viết: 1259
Ngày tham gia: T.Năm 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 time
Been thanked: 137 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Gửi bàigửi bởi VuVanHoanh » T.Bảy 11/09/2010 8:33 pm

Ọa, chẳng anh nào pm cho thằng em này cả, đến lúc vào thì đã sắp hết thời gian rồi. Hjx
:(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :(( :((
Thôi, đành để kỳ sau vậy! Hjx
Với lại các anh dùng vb.net nên có nhiều công cụ hố trợ hơn. Em dùng vb6 nên ít có các công cụ để draw. Vậy nên em mong anh Đạt lần sau cho đề phù hợp với cả vb6 và vb.net nhá. Để có nhiều thành viên vb tham gia hơn. Chứ nếu đề bình thường ở vb.net thì cũng là bài khó đối với vb6 (vì k0 có công cụ hỗ trợ nhiều). Mong anh xét duyệt ý kiến.
Em cảm ơn, mong gặp anh ở kỳ thi lần sau
Since 2008...
One love! :x

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Gửi bàigửi bởi alexanderdna » T.Bảy 11/09/2010 10:38 pm

Nhơn dịp mần cái này, phát hiện ra một chuyện trước giờ mình ít để ý: phiên bản Release chạy mau hơn bản Debug. Chắc do tập tin biên dịch kiểu Debug có chứa nhiều lệnh dùng cho việc chẩn lỗi và truy vết lỗi quá, nên chậm thấy thương!

Dịch kiểu chẩn lỗi, thời gian tăng gấp đôi;
Dịch ra thường thôi, thời gian bớt phân nửa;
CPU mạnh nữa, thời gian còn tí tẹo;
Giải thuật mà có mẹo, chương trình chạy cái vèo!

NovaFooc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 307
Ngày tham gia: T.Ba 11/08/2009 3:27 pm

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Gửi bàigửi bởi NovaFooc » CN 12/09/2010 6:46 am

mới có 3 bài ah, chưa thấy bài của bác Nobi (chắc lại k0 rảnh rồi :-? )
mà mấy topic này bị "giấu" sâu quá nên khá nhìu người bỏ wa :( treo 1 cái bảng thông báo nho nhỏ trên đầu 4rum thì hay wa

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 948
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 66 time
Liên hệ:

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Gửi bàigửi bởi NoBi » CN 12/09/2010 10:14 am

Mấy cái đề thi này ngoài khả năng nên không dám tham gia.
Có thông báo trên đầu forum rồi, kg thấy sao mà yêu cầu nữa?!.
:>

NovaFooc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 307
Ngày tham gia: T.Ba 11/08/2009 3:27 pm

Re: [Cuộc thi] Kỹ năng lập trình - Kì 3 [Khó]

Gửi bàigửi bởi NovaFooc » CN 12/09/2010 10:53 am

ah thấy rồi, tại liếc qua tưởng là nội quy :">


Quay về “Đề tài chung”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách