Đây là đầu của tôi:
\ /-- -|
/ -\ | | |
\ \ \ \ |
--\ | \ | |
/ |--| / / |
/|- //--| / |
| | || //\ |
| \ /| // \ |
Nó bao gồm chính xác tám sợi tóc. Mái tóc của tôi quá dài. Vui lòng cắt từng sợi riêng lẻ theo chiều dài tôi chỉ định.
Đầu vào
Điểm thu hút chính trong phần này là đầu tóc thực sự. Đây là một đại diện đồ họa, được mã hóa bằng màu sắc, cùng với một hình ảnh động , dành cho người lười biếng:
Và đây là một đặc điểm kỹ thuật đầy đủ cho một bộ lông là gì:
- Các sợi lông cá nhân, mà chúng tôi sẽ gọi cho sợi , sẽ được thực hiện ra khỏi
/
,\
,|
, và-
các ký tự ASCII, từ nay về sau được gọi là nguyên tử . - Toàn bộ phần đầu của âm thanh (tất cả các chuỗi kết hợp) sẽ là
c
các cột theor
hàng, trong đóc
≥ 1 vàr
≥ 2. - Mỗi sợi sẽ ...
- bắt đầu ở hàng cuối cùng của đầu (hàng
r
- 1). - có độ dài
l
trong đól
≥ 2.
- bắt đầu ở hàng cuối cùng của đầu (hàng
- Các sợi có thể được phân tích cú pháp bằng phương pháp sau:
- Bắt đầu ở dưới cùng của sợi. Đây sẽ là một
/
,|
hoặc\
nguyên tử, mà chúng ta sẽ gọi là gốc . (Các chuỗi được phân tích cú pháp từ trái sang phải, được sắp xếp theo gốc.) - Tìm nguyên tử chỉ về phía gốc.
- Một
|
nguyên tử chỉ lên và xuống. Một-
nguyên tử chỉ trái và phải (nhưng không bao giờ có thể chỉ vào gốc vì chỉ rễ có thể ở hàng dưới cùng). Một/
nguyên tử chỉ từ trái xuống và lên phải, và một\
nguyên tử thì ngược lại. - Sẽ luôn có chính xác một nguyên tử hướng về nguyên tử gốc.
- Một
- Tìm một nguyên tử chưa sử dụng (một nguyên tử chưa phải là một phần của bất kỳ sợi nào) chỉ về phía nguyên tử này và cũng không nằm dưới nguyên tử này (tóc không thể mọc xuống, nhưng lệch sang một bên là được).
- Nếu có số không, bạn đã đạt đến cuối chuỗi!
- Nếu có một, đây là nguyên tử tiếp theo của sợi. Lặp lại bước 3 với nguyên tử này. (Nguyên tử này hiện được đánh dấu là "được sử dụng" cho mục đích của bước 3, vì nó là một phần của chuỗi.)
- Sẽ không bao giờ có nhiều nguyên tử không sử dụng ở đây tại bất kỳ điểm nào trong đầu.
- Bắt đầu ở dưới cùng của sợi. Đây sẽ là một
Các định dạng đầu vào sẽ là:
- Một cái đầu tóc. Có thể là đầu vào nguyên trạng (đầu vào đa dòng với dòng mới theo nghĩa đen) hoặc với một dấu phân cách bạn chọn thay cho dòng mới. Lưu ý rằng đầu sẽ luôn là một hình chữ nhật; tức là khoảng trắng theo sau sẽ được thêm vào khi cần thiết (tóc thẳng kỳ lạ ở bên phải chỉ là để loại bỏ khoảng trắng kéo dài thêm để tránh nhầm lẫn).
- Một số ≥ 1 chỉ định số lượng tóc cần cắt. Điều này sẽ được mô tả chi tiết trong phần tiếp theo.
Bạn có thể chấp nhận đầu vào cho một chức năng, sử dụng STDIN / STDOUT, v.v. (bất cứ điều gì hợp lý ).
Đầu ra
Đầu ra của bạn sẽ là đầu tóc với kiểu tóc được áp dụng. Để cắt tóc, chỉ cần giảm độ dài của từng sợi tóc theo số lượng được chỉ định (sẽ luôn là 1 hoặc lớn hơn), bắt đầu từ điểm cuối của tóc di chuyển về phía chân tóc. Tuy nhiên, luôn luôn để nguyên gốc!
Đây là một ví dụ đơn giản. Nói đầu vào cho đầu là
\
/
|
|
Với đầu vào thứ hai là 2
, bạn sẽ cắt hai nguyên tử khỏi chuỗi và nhận được kết quả là
|
|
Và với một đầu vào 42
, đầu ra sẽ chỉ là
|
Lưu ý rằng khoảng trắng trước và sau đầu hoàn toàn không liên quan; bạn có thể cắt thêm các dòng mới hoặc bạn có thể thêm nhiều phần đệm. Không thành vấn đề, miễn là đầu vẫn còn nguyên. (Bạn có thể làm bất cứ điều gì bạn muốn với khoảng trắng ở cuối.)
Các trường hợp thử nghiệm
Đối với tất cả các trường hợp thử nghiệm, ví dụ được trình bày ở phần đầu của bài đăng này sẽ được sử dụng.
Độ dài cắt tóc = 1:
/- |
/ \ | |
\ \ \ \ |
--\ | \ | |
/ |-- / / |
|- //--| / |
| | || // |
| \ /| // \ |
Độ dài 3:
|
\ |
--\ | \ |
/ |-- / / |
|- // | / |
| || // |
| \ /| // \ |
Độ dài 7:
|- / |
| | / |
| \ /| // \ |
Độ dài 1337:
| \ /| // \ |
Chấm điểm
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ giành chiến thắng!
-
trong chuỗi thứ ba từ các điểm bên trái tại |
chuỗi thứ tư từ bên trái
-
, không phải những gì nó trỏ tới . Ví dụ, |
điểm không trỏ đến /
chuỗi đầu tiên, nhưng nó được trỏ đến bởi /
. .
-
nên tham gia vào chuỗi thứ tư , không phải thứ ba.