Video: Hướng dẫn cách giải khối Rubik 3x3 nhanh nhất và đơn giản nhất 2025
Trong Ruby, bạn có thể tạo một hình chữ nhật trên màn hình bằng cách sử dụng nghệ thuật ASCII. Nếu bạn định vẽ một hình chữ nhật trên giấy đã được lấp đầy bằng một khuôn mẫu, bạn sẽ cần làm gì? Trước tiên, bạn có thể vẽ phác thảo hình chữ nhật, và sau đó bạn có thể tô màu bên trong.
Nhưng đối với chương trình của bạn trong Ruby, bạn sẽ muốn thay vì vẽ hình dạng từ trên xuống dưới cùng, mỗi dòng một lần. Làm thế nào bạn mô tả làm thế nào để làm điều đó? Giống như thế này:
-
Vẽ phần trên cùng của hình chữ nhật bằng cách sử dụng mẫu bên ngoài (hoặc cạnh) cho dòng đầu tiên.
-
Đối với mỗi đường tạo nên các cạnh và bên trong hình chữ nhật, vẽ cạnh bên trái, tất cả ở giữa, và sau đó là cạnh bên phải.
Lặp lại bước này cho đến khi bạn cần vẽ phía dưới hình chữ nhật.
-
Vẽ vùng đáy của hình chữ nhật chính xác khi bạn vẽ cạnh trên cùng.
Đây là một thuật toán để vẽ hình chữ nhật theo dòng từ trên xuống dưới.
An thuật toán chỉ là một chuỗi các bước bạn làm theo để hoàn thành một số nhiệm vụ hoặc tính toán. Trong trường hợp này, bạn đã viết ra trình tự vẽ một hình chữ nhật bằng cách quét qua từ trên xuống dưới, từng dòng.
Phiên bản Ruby của thuật toán của bạn đọc rất nhiều giống như phiên bản tiếng Anh:
-
Thiết lập hai biến số giúp bạn dễ dàng nhìn thấy những gì đang diễn ra. Bạn sẽ sử dụng lựa chọn của người dùng về kích thước hình dạng như là chiều cao và chiều rộng của hình vẽ mà bạn sẽ vẽ:
height = shape_size width = shape_size
-
Bạn sẽ vẽ hình chữ nhật theo dòng, do đó thiết lập một vòng lặp sẽ lặp lại mã của bạn cho mỗi hàng (do đó, có nghĩa là bạn cần mã bản vẽ của bạn để chạy độ cao lần):
1. upto (height) do | hàng | # Vẽ mã đi ở đây kết thúc
Vòng lặp là một cách mạnh mẽ để lặp lại mã một số lần (hoặc thậm chí một số lần vô hạn)! Ruby có một số cách để lập trình một vòng lặp. Phương pháp upto là một cách dễ dàng để tính từ một số bắt đầu đến một số cuối cùng. Đối với hình chữ nhật, bạn muốn đếm bắt đầu từ 1 cho dòng đầu tiên và kết thúc đếm khi bạn đạt đến số được biểu thị bằng chiều cao.
-
Bây giờ, để thuật toán hoạt động, bạn cần phải kiểm tra để xem hàng bạn muốn chương trình in ra sao. Bạn có ba trường hợp: hàng đầu tiên, hàng giữa và hàng cuối cùng. Thêm trong trường hợp của hàng đầu tiên ở giữa vòng lặp của bạn:
nếu hàng == 1 đặt outside_letter * width end
Nếu biến hàng bằng một, chương trình sẽ sử dụng puts để in lựa chọn của bạn cho các bên ngoài một số lần bằng chiều rộng.
Bạn sử dụng câu lệnh if nếu bạn muốn xem nếu một điều kiện nào đó là đúng hay sai.Biểu tượng == trong Ruby đặt câu hỏi: "Là điều ở phía bên trái bằng với điều ở phía bên phải của biểu tượng ==? "Nếu có, thì Ruby sẽ chạy các dòng mã cho đến khi có điều kiện khác hoặc từ khóa kết thúc.
-
Tiếp theo, thêm vào một kiểm tra để xem nếu đây là hàng cuối cùng. Từ khóa elsif bắt đầu một kiểm tra điều kiện khác và bạn đặt nó ngay trước từ khóa kết thúc trước đó. Đó cũng không phải là lỗi chính tả. Ruby chỉ có một cách vui vẻ nói "khác nếu"! Toàn bộ điều sẽ giống như sau:
nếu hàng == 1 đặt outside_letter * chiều rộng elsif hàng == cao đặt left_letter * chiều rộng kết thúc
-
Cuối cùng, bạn cần phải xử lý hiển thị của tất cả các hàng ở giữa, do đó, thêm một điều kiện cuối cùng bằng cách sử dụng từ khóa khác của Ruby. Mã này đi ngay trước từ khóa kết thúc. Đây là toàn bộ khối của Ruby:
nếu hàng == 1 đặt outside_letter * chiều rộng elsif hàng == chiều cao đặt outside_letter * width else middle = inside_letter * (width - 2) đặt "# {outside_letter} # {middle} # { outside_letter} "end
Trường hợp trung gian có vẻ phức tạp. Nó đang làm gì? Vâng, theo thuật toán của bạn, nó cần phải rút ra các cạnh trái và phải và tất cả mọi thứ ở giữa.
Biến trung bình là tính toán chuỗi đại diện cho trung tâm của hình chữ nhật. Nếu bạn lấy đi một cho nhân vật cạnh trái và một cho nhân vật cạnh phải, chiều rộng cuối cùng của khoảng giữa có chiều rộng đầy đủ trừ hai ký tự.
Câu lệnh puts cuối cùng sử dụng xử lý chuỗi để tạo ra hàng kết hợp.
-
Chạy chương trình của bạn và xem nếu bạn có bất kỳ lỗi nào. Bạn có nhận được một cái gì đó giống như những gì được hiển thị ở đây? Nếu bạn thấy một lỗi mà nói điều gì đó giống như so sánh Fixnum với String thất bại, điều này có nghĩa là Ruby đã có một thời gian khó sử dụng các giá trị bên trong shape_size như một số.
Ruby không chắc chắn làm thế nào để sử dụng dây cho các con số.Tại sao lại là vấn đề nếu bạn gõ vào một số? Vâng, được đọc trong đầu vào của bạn, nhưng nó đọc tất cả các ký tự mà bạn gõ như một chuỗi. Bạn phải giúp Ruby chuyển đổi chuỗi thành một số.
-
Thay đổi hai dòng nơi bạn đặt các biến chiều cao và chiều rộng để sử dụng phương thức to_i, có nghĩa là chuyển đổi nội dung của biến này thành một số nguyên (số):
height = shape_size. to_i chiều rộng = shape_size. to_i
Chạy lại mã của bạn. Sự thành công!
Đây có phải là hình chữ nhật thú vị nhất thế giới?