Là lập trình viên, xem chúng tôi flex không thú vị lắm. Hôm nay chúng ta thay đổi điều đó! Trong thử thách này, bạn sẽ lex và flex hexaflexagons.
Trong khoảng
Để xem video giới thiệu, hãy xem (các) video viharts trên flexagons
Một hình khối là một hình dạng mà bạn có thể uốn cong để lộ các khuôn mặt khác với mặt trên và mặt dưới; chúng tôi đang tạo ra một hexahexaflexagon, có 6 mặt. Xem hình ảnh bên dưới về cách gấp hexahexaflexagon ra khỏi dải giấy.
A
cho thấy cả hai mặt của dải. Hai hình tam giác màu trắng được dán lại với nhau. Đây là cách bạn sẽ uốn nó:
Dưới đây là sơ đồ các trạng thái có thể và mối quan hệ của chúng:
Các vòng tròn màu đại diện cho 6 hình tam giác có cùng số từ hình ảnh đầu tiên. Mỗi circes có hai màu - phần dưới cùng đại diện cho mặt sau (những gì bạn sẽ thấy nếu bạn lật hình tròn của mình xung quanh), mà bạn không cần phải xem xét trong thử thách này.
Các vòng tròn màu xám ở chế độ nền đại diện như thế nào bạn có thể uốn cong flexagon của bạn trong bất cứ tiểu bang đưa ra: có 4 cách khác nhau để flex nó, chúng ta gọi là những Left
, Right
, Up
và Down
. Bạn không thực sự uốn cong theo các hướng này, điều quan trọng là một số đối diện với nhau.
Nếu bạn ở trung tâm, bạn có thể sử dụng Left
và Right
đi đến những trung tâm khác. Để ra khỏi trung tâm bạn sử dụng Up
và Down
. Nếu bạn không ở trung tâm, bạn không thể sử dụngLeft
hoặc Right
.
Left/Down = clockwise
Right/Up = anti-clockwise
Thử thách
Tạo một chức năng hoặc chương trình lấy đầu vào trên 18 mặt trước và 18 mặt sau của hình uốn cong, một chuỗi các mặt trái, phải, lên và xuống và trả lại 8 mặt có thể nhìn thấy sau các uốn cong.
Xây dựng ví dụ tính toán:
flex "hexaflexaperplexia"
"flexagationdevices"
[Right, Right, Left]
Divide a strip of paper into 18 triangles:
1/2\3/1\2/3\1/2\3/1\2/3\1/2\3/1\2/3 Front
4/4\5/5\6/6\4/4\5/5\6/6\4/4\5/5\6/6 Back
Write "hexaflexaperplexia" on the front of the paper strip:
1/2\3/1\2/3\1/2\3/1\2/3\1/2\3/1\2/3
hexaflexaperplexia
123123123123123123
h a e p p x Face 1, Initially the front face
e f x e l i Face 2, Initially the back face
x l a r e a Face 3, Initially hidden
Write "flexagationdevices" on the back of the paperstrip:
4/4\5/5\6/6\4/4\5/5\6/6\4/4\5/5\6/6
flexagationdevices
445566445566445566
fl at ev Face 4, up from 3
ex io ic Face 5, up from 2
ag nd es Face 6, up from 1
Flex it [Right, Right, Left]
The initial visible face is 1: "haeppx"
flexing Right ..
The current visible face is 2: "efxeli"
flexing Right ..
The current visible face is 3: "xlarea"
flexing Left ..
The current visible face is 2: "efxeli"
flexed [Right, Right, Left]!
outputting "efxeli"
Ví dụ triển khai: http://jdoodle.com/a/18A
Đầu vào và đầu ra dự kiến:
> hexaflexaperplexia flexagationdevices RRL
= efxeli
> loremipsumdolorsit hexaflexamexicania RUU
= riuort
> abcdefghijklmnopqr stuvwxyz1234567890 UL
= I can't flex that way :(
> abcdefghijklmnopqr stuvwxyz1234567890 RRRRLLUDDUUUULDD
= uv1278
Quy tắc
- Bạn có thể lấy đầu vào và trả lại đầu ra theo bất kỳ cách hợp lý nào
- Nếu đầu vào là không thể, bạn nên chỉ ra một cách khác biệt với đầu ra thông thường
- Áp dụng sơ hở tiêu chuẩn
- Đây là
Codegolf
. Mã ngắn nhất trong byte thắng.
|b/=0=[]!!1
gì? Bạn có thể lưu một vài byte viết lại một số chức năng theo kiểu không điểm:\(a,_)(b,_)->a==b
->(.fst).(==).fst
,(!)=(q.).zip.cycle