作为程序员,看着我们伸缩并不是很有趣。今天我们改变了!在这个挑战中,您将使用lex和flex六面体。
关于
有关视频介绍,请在flexagons上观看viharts视频
柔版是您可以弯曲以露出顶部和底部以外的其他面的形状;我们正在制作六面六面体。参见下图,了解如何从纸条上折叠六六边形。
A
显示了条带的两侧。两个白色三角形粘合在一起。这是您如何调整它:
以下是可能的状态及其关系的图表:
彩色圆圈代表与第一个图像相同编号的6个三角形。每个圆圈都有两种颜色-最下面的圆圈代表背面(如果在哪里可以翻转柔印,您会看到什么),在此挑战中无需考虑。
背景中的灰色圆圈代表你如何展示你的flexagon在任何给定的状态:有4点不同的方式来弯曲它,我们称这些Left
,Right
,Up
和Down
。您实际上并没有朝着这些方向弯曲,重要的一点是,有些方向是相反的。
如果您在中心位置,可以使用Left
并Right
转到其他中心位置。要离开中心,请使用Up
和Down
。如果您不在中心,则无法使用Left
或Right
。
Left/Down = clockwise
Right/Up = anti-clockwise
挑战
创建一个函数或程序,该函数或程序将柔性版的18个正面和18个背面上应有的内容,左,右,上,下弯曲的序列作为输入,并在弯曲后返回8个可见面。
详细的示例计算:
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"
实施示例:http://jdoodle.com/a/18A
输入和预期输出:
> hexaflexaperplexia flexagationdevices RRL
= efxeli
> loremipsumdolorsit hexaflexamexicania RUU
= riuort
> abcdefghijklmnopqr stuvwxyz1234567890 UL
= I can't flex that way :(
> abcdefghijklmnopqr stuvwxyz1234567890 RRRRLLUDDUUUULDD
= uv1278
规则
- 您可以以任何合理的方式接受输入并返回输出
- 如果无法输入,则应以与常规输出不同的方式进行指示
- 适用标准漏洞
- 这是
Codegolf
。以字节为单位的最短代码获胜。
|b/=0=[]!!1
?您可以节省一些字节,以无点样式重写某些函数:\(a,_)(b,_)->a==b
->(.fst).(==).fst
,(!)=(q.).zip.cycle