Các bạn thân mến, Thấm thoát đã 1 năm, kì thì Codewars trở lại. Lần
này LĐ hân hạnh được sự nhiệt tình trả lời phỏng vấn của người đứng đầu bộ phận
ra đề và chấm bài. Để có thể biết thêm nhiều thông tin chi tiết xin các
bạn đọc lại bài viết "Tìm Hiểu Kì Thi CodeWars: Cơ Hội Phát Hiện Tài Năng Lập
Trình Cấp Trung Học của HP" Bài viết này chỉ bổ xung thêm vài nhận xét và
trình bày lại toàn văn cuộc phỏng vấn ngắn.
Các ảnh chụp của nhiếp ảnh gia Krodel, Mike (Photos courtesty by Krodel, Mike)
Kì Thi Codewars 2008:

Biểu tượng của Codewars 2008
- So với các năm trước bộ phận ra đề thi đã tích cực chuẩn bị ngay từ khi
kết thúc cuộc thi năm 2007 (tháng 3). Năm nay số lượng đề bài được
đầy đủ và có cả đề dành lại cho năm 2009. Việc kiểm soát cộng điểm có
thay đổi phần nào. Các bài thi sau khi đã chấm xong ngoài việc ghi chép
độc lập bởi hai nguồn khác nhau còn có 1 lần ghi chép điểm số của bài giải
đúng với số báo danh và trả về ngay lập tức cho nhóm dự thi (qua đó các em
biết chắc chắn được số điểm và bài giải của mình có được chấp nhận hay không).
Các bài giải chưa đúng hoàn toàn sẽ bị trả về ngay lập tức để các em có di
hoặc loại bỏ bài đó hoặc sửa sai bài của mình. Dĩ nhiên, người
chấm không có thêm bớt hay bình phẩm gì vào bài thi của các em. Điều cải
cách này cho thấy tinh thần công khai trong việc chấm bài.
- Kì thi này có sự hỗ trợ của hai hãng lớn về phần mềm đó là Microsoft và
VMware. Ngoài ra còn có các "đại gia" như Coca cola, Pepsi Cola, Chik-phi-la
... tham dự. Nhờ sự ủng hộ lớn này mà phần quà dành cho mỗi thí sinh tham dự
năm nay có phần hậu hỉ (1 áo có logo 2008, 1 bộ trình dịch MS Studio mới nhất,
phần mềm hổ trợ lập trình cho trò chơi, ....). Không chỉ thí sinh, những
giáo viên đi kèm theo các đội thi cũng được quà đặc biệt của Microsoft.
Trong thời gian các em làm bài thi, Microsoft đã mạnh dạn mở luôn 1 lớp cấp
tốc về cách dùng Visual Studio cho các giáo chức (đúng là họ biết cách quảng
cáo sản phẩm :-) Đặc điểm đáng lưu ý ở đây là phần thưởng cho các đội
đọat giải thì không nhiều ngoại trừ giá trị về tinh thần danh dự ngược lại các
em lại được bắt thăm trúng các giải thưởng khá năng kí như là các computer đời
mới (laptop và desktop) cũng như nhiều thứ giá trị khác như digital
camera, ...
- Việc ra đề năm nay có vài kết quả bất ngờ, đề bài số 5 chẳng hạn, thật sự
không khó ... nhưng không có đội nào trong tổng số khoảng 160 đội giải
được!!!? tổng cộng có hai bài không có đội nào giải đúng là bài số 5
(cho cả hai trình độ thường và năng khiếu) và bài 15 (dành riêng cho đội năng
khiếu).
- Số trường trung học năm nay là 60 trường trung học. Bao gồm 160 đội tuyển.
- Kết quả cũng không quá đáng ngạc nhiên là các trường trung học nổi tiếng
thường dần đầu: Trường Katy Taylor lại đạt giải nhất cho trình độ năng khiếu.
- Trong kì thi này do người tham gia ghi điểm thiếu kinh nghiệm nên, ban tổ
chức đã quyết định thống kê và kiểm tra lại toàn bộ các bài giải đúng. Thời
gian thông báo kết quả do đó bị lui lại hơn 90 phút.

Không gian thi Codewars 2008
Toàn Văn Bài Phỏng Vấn Với Ông Mark Matson
1. Can you describe yourself within HP and your role in Codewars?
Người dịch (ND): Xin ông tự giới thiệu về vai trò của ông trong HP và
Codewars?
My “real job” at Hewlett-Packard is as a Software Program Manager on platform
servers in the Industry Standard Servers group. Basically, for a given new
server, my job is to make sure all needed software, from operating systems to
BIOS to drivers, is ready to go when the server is ready to ship. I have been
involved with CodeWars since its beginning 11 years ago, back when I was
programming full-time. In 2008, I was in charge of the Problem Creation Team
(which creates the problem set given to the CodeWars competitors) and the
Scoring Team (that compiles the team scores during the actual competition).
Since all work done by HP employees for CodeWars is voluntary, everyone ends up
doing all kinds of other things to help make the contest happen – from taking
pictures to serving pizza to printing display posters.
ND: "Công việc thực sự" của tôi ở Hewlett-Packard là một Quản lý Chương Trình
Phần Mềm trên các máy chủ nền trong nhóm Industry Standard Server (Máy Chủ Tiêu
Chuẩn Công Nghiệp). Chủ yếu công việc của tôi là bảo đảm được tất cả các
phần mềm cần thiết, từ Hệ điều hành cho đến các bộ khiển BIOS được sẵn sàng
trước khi các máy chủ được gửi (bán) ra ngoài. Tôi đã tham dự với Codewars
từ 11 năm nay, từ lúc mà tôi còn là một lập trình viên toàn thời gian.
Trong năm 2008 này, tôi chịu trách nhiệm trong Nhóm Ra Đề (viết ra các đề bài
cho các đội dự thí) và Nhóm Ghi Điểm (chuyển dịch điểm số của các đội dự thi
trong suốt thời gian thi đấu). Vì mọi việc đều hoàn tất bởi các nhân viên
của HP tự nguyện cho kì thi Codewars, cho nên mỗi người cuối cùng sẽ lựa cho
mình một nhiệm vụ trong mọi loại việc để cho kì thi được tốt đẹp -- từ việc phục
vụ bánh pizza cho đến việc in các bích chương (Thực sự ông Mark đã nói
chuyện rất khiêm tốn -- Ông chủ trì bộ phận ra đề thi trong rất nhiều năm và là
người rất nghiêm túc, luận luôn điều chỉnh các phương pháp tổ chức để mỗi năm
được tiến bộ hơn, ít bị gian lận và hiệu quả hơn -ND)
2. Why HP calls it "Codewars" ? What is the meaning of this programming
contests to HP, to you, and to the students?
Tại sao lại gọi là "Codewars"? Ý nghĩa của kì thi này đối với HP, với
ông và với các học sinh là gì?
I’m not sure who came up with the name “CodeWars,” but it emphasizes, in a
fun way, that this is a real competition for programmers. We try to make it fun,
but we also want it to be a real challenge and stretch for these teams –
something that will inspire them to push a little further into their technology
education. CodeWars started as a totally grass roots effort, with a few
employees from an old Compaq software development group, some of whom had
competed in similar contests at the college level. Our goal was simply to have
an outreach to our local high-school students, and to help inspire them to
consider technology as a career. We also run an annual robotics competition, HP
Kids Day, at the middle school level. Its goal is to do the same for kids at an
earlier stage, and in particular to reach kids that otherwise might not consider
a technology career.
Tôi không rõ ai đã đem đến cái tên "Codewars", nhưng nó là để nhấn
mạnh, trong một kiểu hài hước, rằng đây là cuộc tranh tài thực sự giữa các nhà
lập trình. Chúng tôi cố gắng để làm cho nó trở nên vui vẻ, nhưng vẩn muốn
cho nó thực sự thách thức và căng thẳng cho các đội dự thi -- là những điều sẽ
gợi hứng các em nhằm thúc đẩy xa hơn chút nữa trong viẹc giáo dục công nghệ của
các em. Codewars bắt đầu hình thành từ nổ lực của một ít nhân viên đã từng
tham gia các kì thi tương tự khi còn ở cấp đại học, đến từ một nhóm phát triển
phần mềm Compaq cũ (hãng Compaq đã xác nhập vào hãng HP vào năm 2001 - ND). Mục
đích của chúng tôi đon giản là nhằm cho các học sinh địa phương đạt tới một tầm
cao, và để giúp gợi hứng cho các em xem xét một định hướng nghề nghiệp trong
công nghệ. Bên cạnh, chúng tôi còn có tổ chức cuộc tranh tài Robot thường
niên, gọi là HP Kids Day (Ngày Trẻ Em HP) cho câp độ Phổ Thông Cơ Sở. Việc
này có cùng một một mụch dích như trên, và đặc biệt để tạo diều kiện cho các trẻ
em, vì nếu không chúng sẽ không nghĩ đến nghề nghiệp trong ngành công nghê.
3. Can you share to us the best and the worst things or the funny things that
you experienced in among of the Codewars contests in the past?
Ông có thể chia sẽ với chúng tôi những kinh nghiệm vui buồn, hay dở mà ông đã
trải qua trong các kì thi Codewars?
Well, the best times are often when a team “comes out of nowhere” to perform
well at CodeWars. For example, in 2007, the team from Gonzales (a small town
southwest of Houston) High School finished 2nd in our Advanced Division – a real
surprise. Another highlight in 2007 was hosting a team from the New Orleans area
who had been directly affected by Hurricane Katrina. Thanks to the generosity of
various sponsors, we were able to fly them to Houston free of charge, and
provide lodging to them in a local hotel. That’s the kind of thing that makes a
difference in someone’s life. We’ve had all sorts of problems during the
contests that are funny in retrospect – power outages, burned pizza, scoring
problems – but what sticks with you are the kids that really get a kick out of
the whole event. We hope those kids will eventually find a career in programming
or other technology areas.
Những trải nghiệm tốt đẹp nhất thường là khi có một đội "không có tiếng tăm"
thực hiện tốt trong kì thi. Chẳng hạn, năm 2007, đội từ Trung học Gonzales
(Một thị tứ nhỏ ở Tây Nam thành phố Houston) đã đạt giải nhì trong Bộ Phận Năng
Khiếu -- là một điều thực sự làm ngạc nhiên. Một điểm sáng khác trong năm
2007 là việc lo tạm trú của một đội từ New Orleans, nơi đã trực tiếp chịu ảnh
hưởng của bão Katrina. Nhờ vào sự rộng lượng của các nhà bảo trợ, chúng
tôi đã có thể giúp họ chuyến bay đến Houston mà không phải trả tiền vé, và cung
cấp chỗ ăn ở cho họ tại một khách sạn. Đó là sự kiện mà làm thay đổi cuộc
sống của một số người. Chúng tôi đã có nhiều loại khó khăn trong thời gian
các cuộc thi diễn ra mà nhìn lại thật buồn cười -- như là mất điện, bánh pizza
bị cháy khét, các khó khăn lúc ghi điểm -- nhưng những điều đáng nhớ với các bạn
là các em đã thực sự làm được điều đáng kể trong toàn bộ sự kiện. Chúng
tôi hy vọng những đứa trẻ này sẽ dần tìm thấy một chuyên nghiệp trong lập trình
hay trong các ngành công nghệ.
4. In your idea, what kind of the programming problem would be a "good
candidate" to select for a Codewars contest ?
Theo ý Ông, kiểu đề bài nào sẽ là một "đề dự khảo tốt" có thể được lựa chọn
trong một kì thi Codwars?
A perfect CodeWars programming problem is easy and simple to state, but
challenging to solve. We don’t want to trick the students, but cause them to
really think and stretch their programming muscles.
Một đề bài lập trình tuyệt vời trong Codewars là bài dể mô tả, nhưng lại
thách đố để giải quyết. chúng tôi không muốn cài bẫy các học sinh, mà muốn bắt
họ thực sự tư duy và kéo căng các cơ bắp lập trình của họ.
5. About future, would you please share to us what can be changed, applied to
Codewars ?
Trong tương lai, Ông có thể nào chia sẻ với chúng tôi những gì có thể thay đổi ,
áp dụng cho Codewars?
Well, we are always looking at ways to improve the event. We are hoping to do
more automation next year in both the judging and scoring areas. We’d also like
to expand the number of schools participating, if not the total number of teams.
Due to changes on the HP campus here in Houston, we will also be moving to a new
location next year, and that will present its own set of challenges.
Chúng tôi lúc nào cũng tìm kiếm các phương án để tăng phẩm chất cho kì thi.
Chúng tôi hy vọng sẽ đưa vào vệc tự động hóa nhiều hơn trong năm tới trong cả
hai phương diện chấm thi và ghi điểm. Chúng tôi cũng muốn mở rộng ra cho
nhiều trường tham dự, không chỉ trong số lượng các đội dự thi. Do sự thay
đổi các cơ sở làm việc của HP ở Houston này, chúng tôi cùng sẽ phải di chuyển
địa điẻm thi trong năm tới, và sẽ phải đương đầu với nhiều thách đố.
I, on behalf of many vienamese students and educators, want to say "thank you
so much for what you share to us".
Đại diện cho nhiều học sinh và các nhà giáo xin chuyển đến Ông lời cảm ơn
chân thành cho sự chia này.
Kết Quả Thống Kê:
Khu vực Năng Khiếu
Khu Vực Hiểu Biết
|

Kết quả thống kê năm 2008 cho bộ phận năng khiếu

Một Số Đề Bài:
Để minh hoạ xin liệt ra đây trong nguyên văn một số đề bài bào gồm bài 5 (5
điểm) và bài 15 (15 điểm) là hai bài không có HS giải và bài có điểm số cao nhất
16 (17 điểm).
Houston Skyline
Write a program that will produce a silhouette of the
Houston skyline, given the height and placement of a series of buildings.
Program Input
Prompt the user for the start location (the left edge)
[1..60], the width [1..40], and height [1..20] of each building. Note that
the dimensions of a building are a measure of its interior, and does not count
the outside edges. A building of width 1 and height 6 will actually
consume 3 columns and 8 rows on the silhouette. Continue prompting for
more buildings until a zero is entered for the start location. The entire
skyline will fit within 50 columns wide and a maximum height of 20 rows.
There will be no more than 16 buildings.
Enter building #1’s
start: 3
Enter building #1’s width: 3
Enter building #1’s height: 3
Enter building #2’s start: 10
Enter building #2’s width: 5
Enter building #2’s height: 2
Enter building #3’s start: 4
Enter building #3’s width: 3
Enter building #3’s height: 7
Enter building #4’s start: 10
Enter building #4’s width: 1
Enter building #4’s height: 10
Enter building #5’s start: 0
Program output:
Output to the screen the outline of the resulting
silhouette. Smaller buildings may be completely hidden by larger ones.
+-+
| |
| |
+---+ | |
| | | |
| | | |
| | | |
++ | | |
| | | +---+
| | | |
| | | |
--+ +-+ +----------------------------------
12345678901234567890123456789012345678901234567890
Railway
Shunting Crew codewars
2008

A railway shunting crew must fulfill orders for the
formation of departing trains from the rail cars in its sidings. There are four
sidings, lettered A, B, C and D, with a limited number of
positions that a rail car may occupy: five each for A and B, three
each for C and D. The formation order will specify the
sequence of rail cars to be connected to the locomotive that occupies the
outmost position of siding A. The train will be formed from five of the
eight cars sitting in the sidings in the order specified. Rail cars may
only move to or from siding A. This means, for example, that a car cannot
move directly from siding C to siding D. Instead, it must first
move from siding C to siding A (where a free space must therefore
be available), then to siding D. In other words, all valid moves must
have siding A as the source or destination.
Write a program that prints a
series of valid rail car movements that fulfills the formation order.
Input
The input consists of three lines. The first two lines
represent the initial configuration of rail cars on the sidings. The
representation is logical, not physical. The logical siding layout looks like
this:
AAAAA+BBBBB
CCC^DDD
The + and ^ characters represent the switch. The third line
represents the formation order
L----+86321
457^---
L12345 |
|
also try these: |
L----+35841
267^---
L12846 |
L----+26381
457^---
L41732 |
Output
The program must print the siding configuration at each
step from initial configuration to fulfillment, with a blank line between each
step. Only one car may move per step. Many correct solutions are possible. It is
also possible to return to a previously visited configuration through a long
sequence of moves. However, revisiting a previous configuration is a waste of
the shunting crew’s time (never mind the judges) and will be considered an
incorrect solution. In the final train configuration, one of the rail cars must
occupy the + location of the switch. The switch must remain unoccupied in
all other steps. The program should complete within
15-20 seconds. Programs that do not complete within 60 seconds on a judge’s
machine will be considered incorrect.
L----+86321
457^---
L8---+-6321
457^---
L----+-6321
457^--8
L6---+--321
457^--8
L----+--321
457^-68 |
L7---+--321
45-^-68
L----+--321
45-^768
L5---+--321
4--^768
L54--+--321
---^768
L543-+---21
---^768 |
L54--+---21
3--^768
L542-+----1
3--^768
L54--+----1
32-^768
L541-+-----
32-^768
L54--+-----
321^768 |
L547-+-----
321^-68
L54--+----7
321^-68
L5---+---47
321^-68
L----+---47
321^568
L1---+---47
32-^568 |
L12--+---47
3--^568
L123-+---47
---^568
L1234+----7
---^568
L12345----7
---^-68
23 moves. |
Warning: Graphic Functions!
codewars 2008
Often times seeing the graph of a function is the best way
to understand its properties.
Write a program to graph a function y =
f(x) over a specified range.
Input
The
program will read one or more lines typed from the console. Each line contains
an algebraic expression of a single variable x. Valid operations include
addition, subtraction, multiplication, division, exponentiation (where ab
is represented by a^b),
parentheses, sine, cosine, and log10. The program must evaluate the
expression using standard arithmetic precedence rules: first functions and
parenthesis, then exponents, then multiplication and division, then addition and
subtraction. Back-to-back exponents must be evaluated right-to-left, all other
operations left-to-right. When correctly parsed, the input will not cause divide
by zero conditions. Trigonometric functions should operate in radians, not
degrees. The program must display a prompt to the console before each line with
the string “f(x)=”, and it must terminate when the input-line is the word END.
f(x)=7.2*cos(
(x + 3) / 4 )
f(x)=log( x+21
) * 5.771
f(x)=3 * x^2 -4
*x+ 1
f(x)=END
Output
The program must plot each function over the range -10 to
10 in a 21x21 integer grid. Output values should be truncated (always round
down). Each function must be plotted in its own grid. The program must draw X
and Y axes
..........|..........
..........|..........
..........|..........
.......*..|..........
.....**.**|..........
....*.....*..........
..........|..........
...*......|*.........
..*.......|.*........
..........|..........
-*--------+--*-------
*.........|...*......
..........|....*.....
..........|..........
..........|.....*....
..........|......*...
..........|.......*..
..........|........**
..........|..........
..........|..........
..........|..........
http://vietsciences.free.fr ,
http://vietsciences.org
Làng Đậu
| |