给我盖毯!


16

我想要一条看起来像这样的毯子。每个条带都在上方,下方,上方,下方。可以打印吗?

\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\

每行末尾的尾随空格和换行末尾都是可接受的。

记住,这是,所以字节最少的代码将获胜。

排行榜

这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。

为确保您的答案显示出来,请使用以下Markdown模板以标题开头。

# Language Name, N bytes

N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数保持标题。例如:

# Ruby, <s>104</s> <s>101</s> 96 bytes

如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字:

# Perl, 43 + 2 (-p flag) = 45 bytes

您还可以将语言名称设置为链接,然后该链接将显示在页首横幅代码段中:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


右边缘似乎未对齐。
魔术章鱼缸

左边缘是否不重叠?
xnor

@xnor抱歉,我不好。
奥利弗·倪

@carusocomputing已修复。
奥利弗·倪

10
如果您使用了沙箱,则可以在解决之前避免这些问题。
Mego

Answers:


8

Python 2,84字节

R=range(24)
for i in R:print''.join(" \// \/\\"[i+~j>>2&1^i+j>>1&2^i&4]for j in R*2)

感谢Sp3000提供的6个字节,可以将算术运算转换为按位运算。


哇...如何???
奥利弗·倪

1
i+~j>>2&1^i+j>>1&2^i&4, 也许?
Sp3000 '16

@ Sp3000这是一些不错的按位优先级。我必须记住,将算术派生的布尔值组合到索引中时。
xnor

5

Pyth,36个字节

V24sm@" \// \/\\"im<3%k8++BNdt-NdT48

在线试用:演示

说明:

我们可以通过检查3个条件来确定符号:

A := row % 8 > 3
B := (row + column) % 8 > 3
C := (row - column - 1) % 8 > 3

如果我们将其解释[A,B,C]为二进制数,则会得到以下映射:

01234567
 \// \/\

我们还可以将其解释[A,B,C]为十进制数,并在字符串中执行模块化索引查找。这没有什么不同,因为10 mod 8 = 2

现在到代码:

V24遍历N(row-idx)[0, 1, ..., 23]

sm...48映射中的数字d(column-idx)[0, 1, ..., 47]到chars并打印组合的字符串。

++BNd生成列表[N, N+d]+...t-Nd追加N-d-1。这样我们就得到了清单[N, N+d, N-d-1]m<3%k8检查每个计算得出的数字k(如果为)3 < k % 8,那么这将为列表提供条件[A, B, C]

i...T 将其转换为十进制数,然后 @" \// \/\\"在字符串中进行查找。

Python2中或多或少的相同代码:98个字节

R=range(8)
for r in R*3:print''.join(" \// \/\\"[4*(r>3)+2*((r+c)%8>3)+((r-c-1)%8>3)]for c in R*6)

只是想与Pyth保持联系,所以任何具有良好解释的正当答案都将受到我的支持。在我的第3次实验之后打算尝试Pyth :)
ElPedro

您也应该发布Python2答案...
Jerry Jeremiah

3

Perl,209 + 17 = 226个字节

运行-mList::Util=max -M5.010(第二个标志是免费的)。它没有赢得任何字节数竞赛,但这是我的解决方案。

for(0..7){@b=(1)x8;@b[$_+3..$_+7]=(3)x4;@b[7-$_..10-$_]=(2)x4;for$c(0..2){$b[$c+8]=max$b[$c+8],$b[$c];$b[5-$c]=max$b[5-$c],$b[13-$c];}push@a,sprintf("%-8s",join("",@b[3..10])=~tr[123][ /\\]r)x6;}say for@a,@a,@a

可读性:

for(0..7){
    @b=(1)x8;
    @b[$_+3..$_+7]=(3)x4;
    @b[7-$_..10-$_]=(2)x4;
    for$c(0..2){
        $b[$c+8]=max$b[$c+8],$b[$c];
        $b[5-$c]=max$b[5-$c],$b[13-$c];
    }
    push@a,sprintf("%-8s",join("",@b[3..10])=~tr[123][ /\\]r)x6
}
say for@a,@a,@a

程序性地生成每个段,然后重复图案6次,然后输出总结果3次。


哇,我不再是最长的烦恼了:)不管怎样,在Perl中做到了+1。
ElPedro '16

我本可以像其他人一样做这件事(只打印几行),但是我决定通过算法而不是显式地做事,因为我觉得这样做很酷。
加布里埃尔·贝纳米

以我的标准很酷。我采取了一种从未尝试过的方法,因为这是一个有趣的挑战。如我所说,+ 1。我的评论无意侮辱。这就是为什么我投票赞成。
ElPedro '16

3

Python 3中,174个 172 138字节

print("\n".join(o*6for o in("bbbb////"," bb//// ","  ////  "," ////bb ","////bbbb","b//  bbb","bb    bb","bbb  //b")*3).replace("b","\\"))

找到了我可以在毯子中找到的最小模式(“下”和“上”模式),将其粘贴在列表中,并添加了一些列表理解和字符串操作以解压缩所有内容。将所有转义的反斜杠替换为“ b”,然后稍后将其替换回以节省一些字节。

感谢Oliver打高尔夫球2个字节!

通过更改模式占用了34个字节-毯子的整个模式现在都在一个列表中,因此只需要一个for循环即可解开该模式。


1
欢迎来到PPCG!不错的第一篇文章!您可以在python 2中剃一个字节,我认为,您不需要使用parends进行打印。
Rɪᴋᴇʀ

1
谢谢您,Easterly Irk,我在代码高尔夫领域潜伏了太久了,所以我决定参加。:)
TheCrazyInventor,2016年

1
您可以通过删除之后0*6和之后的空格来节省两个字节u*6
Oliver Ni

1
您可以使用“ b”表示双反斜杠,而在需要单反斜杠的任何地方只需使用转义即可节省4个字节:print((("\n".join(o*6 for o in("bb////"," b//// "," //// "," ////b ",""))+"\n".join(u*6 for u in("////bb","\\// b\\","b b","b\\ //\\","")))*3).replace("b","\\\\"))
dzaima

dzaima:您的代码似乎未生成有效的覆盖。
TheCrazyInventor

3

Python 2中,171个 170 168字节

a,b,c=r"\\","/"*4," "
f,g=c*2,c+a+b+c
d=(a*2+b)*6,g*6,(f+b+f)*6,g[::-1]*6,(b+a*2)*6,('\\//'+f+a+"\\")*6,(a+f*2+a)*6,(a+"\\"+f+'//\\')*6
for e in 0,1,2:print'\n'.join(d)

不漂亮也不聪明。只需为最常用的字符串组设置变量,然后将它们组合并打印3次即可。如果我找不到更好的方法,可以稍后再尝试打高尔夫球。

通过在分配上使用原始输入保存了1个字节。谢谢@ nedla2004

-2通过分配几个变量,但仍不是严重的竞争对手


1
您可以将其定义为r“ \\”
nedla2004's

感谢@ nedla2004好点。很快将它们放在一起,以后再看。这是一个不错的开始:)
ElPedro '16

不过,最感兴趣的是*6在每个元组元素上找到绕过的方法。有任何想法吗?
ElPedro '16

1
我不知道您该怎么做,但是最后一行可以是exec r"print'\n'.join(d);"*3
nedla2004年

我只是出于兴趣而发布了一个替代方案。也将重视您的评论。
ElPedro '16

2

SOML,106 字节

3{"\\\\////”6*p" \\//// ”6*p"  ////  ”6*p" ////\\ ”6*p"////\\\\”6*p"\//  \\\”6*p"\\    \\”6*p"\\\  //\”6*p

使用我最近才添加的功能的非竞争版本:(83 67 66字节)

说明:

  →$\\→#////→@”6*p"→~3{"##@~ #@ ~$@$~ @# ~@##~\//$#\~#$$#~#\$//\~”
  →$                                                                in the further code replace "$" with "  "
    \\→#                                                            replace "#" with "\\"
        ////→@                                                      replace "@" with "////"
              ”6*p"→~3{"##@~ #@ ~$@$~ @# ~@##~\//$#\~#$$#~#\$//\~” the code to exchange stuff in

so that results in:
”6*p"→~3{"\\\\////~ \\//// ~  ////  ~ ////\\ ~////\\\\~\//  \\\~\\    \\~\\\  //\~”
”6*p"→~3{"A~B~C~D~E~F~G~H~”  modified version of the program (removing "/","\" and " " and replaced with A,B,C,ect.)
”6*p"→~                      replace in the further program "~" with ”6*p" which is:
”                            end string
 6*                          repeat the last thing in stack 6 times
   p                         output the result
    "                        start a string
resulting program: 
3{"A”6*p"B”6*p"C”6*p"D”6*p"E”6*p"F”6*p"G”6*p"H”6*p"”
shortened example:
3{"A”6*p"B”6*p"H”6*p"”
3{                      repeat 3 times
  "A”                   push "A" (original: "\\\\////")
     6*p                output it multiplied by 6
        "B”             push "B" (original: " \\//// ")
           6*p          output it multiplied by 6
              "H”       push "H" (original: "\\\  //\")
                 6*p    output it multiplied by 6
                    "”  push an empty string (shorter to do ~” than ”6*p)

2

Ruby,75个字节

1152.times{|i|$><<"\\/ /\\\\ /"[(i+j=i/48)/4&1|(i-j)/2&2|j&4]+$/*(i%48/47)}

更好地打高尔夫,除了其他参数外,还使用由j&4索引的单个8字节字符串查找,而不是可修改的4字节字符串。

Ruby,81个字节

1152.times{|i|j=i/48%8;$><<"\\#{'/\\'[j/4]} /"[(i+j)/4&1|(i-j)/2&2]+$/*(i%48/47)}

逐个字符打印斜条纹。根据每条链的有无,从4个字符的字符串中选择正确的字符。重叠字符的变化取决于哪条链位于顶部。

已评论

1152.times{|i|j=i/48%8;        #Iterate through all printable chars. j is line number.
  $><<"\\#{'/\\'[j/4]} /"[     #Print a char from "\/ /" if j/4 even or "\\ /" if odd. character changes depending which strand on top.
   (i+j)/4&1|(i-j)/2&2]+       #Print \ if (i+j)/4==0, / if (i-j)/2&2 >0, space if both false. As above if both true. 
   $/*(i%48/47)                #If on column 47, print a newline.
}

2

Perl中,132个 131 113字节

@a=((0)x4,1..4);map{say+(map$a[7-$_]?$a[$_]*$r?'/':'\\':$a[$_]?'/':$",0..7)x6;push@a,shift@a;$_%4||($r=!$r)}0..23

取消高尔夫:

use strict;
use warnings;
use feature 'say';

my @a = ((1) x 4, (0) x 4);  # print '\' if true
my @b = ((0) x 4, (1) x 4);  # print '/' if true
my $r = 0;                   # print '\' over '/' if true

for (0 .. 23) {
    say((map { $a[$_] ? ($b[$_] * $r ? '/' : '\\') : ($b[$_] ? '/' : ' ') } 0 .. 7) x 6);
    unshift(@a, pop(@a));    # circular shift to left
    push(@b, shift(@b));     # circular shift to right
    $r = !$r if !($_ % 4);   # change print priority
}

2

05AB1E,37个字节

使用CP-1252编码。

24FNU48FXXN+XN-<)8%3›J" \// \/\"è?}¶?

在线尝试!

说明

使用Jakube的pyth答案中专门解释的mod-8技巧。

24F                                    # for N in [0 ... 23] do:
   NU                                  # save N in X
     48F                               # for N in [0 ... 48] do:
        XXN+XN-<)                      # push [X,X+N,X-N-1]
                 8%                    # mod each by 8
                   3›                  # compare with 3
                     J                 # join
                      " \// \/\"è?     # index into string and print
                                  }    # end inner loop
                                   ¶?  # print newline

2

Python,245 236 234 233 230 216 212 198 195字节

好的,比我的上一个(和其他任何答案)要长,但会对这种方法的反馈感兴趣。

for a in(40,4496,6200,5456,3240,1188,720,228)*3:print((`a%6561/2178`+`a%2178/729`+`a%729/243`+`a%243/81`+`a%81/27`+`a%27/9`+`a%9/3`+`a%3/1`)*6).replace('0','\\').replace('1','/').replace('2',' ')

编辑

-9由于@ nedla2004在球上的作用远胜于我

-2通过将lambda移出循环,从而损失2个缩进空间

通过使用-1 in' '*3代替,in 0,1,2因为h无论如何我都不使用。这只是一个柜台。

-3为什么,为什么,为什么在第二个for和打印之间留一个换行符和两个缩进?晚了。明天再来。

-14实际上可以完全失去lambda,仅在print语句之后直接包含base 3解码器。看起来很乱,但毕竟这是代码高尔夫球:)

-4没有设置整数列表变量的意义。只需在第二个for循环中直接使用它即可。

-14并且没有点使用外循环。只需将整数元组乘以3(从@ nedla2004无耻地窃取,得到200以下:)

-3通过使\ = 0,/ = 1和space = 2来保存3。这使得整数列表更短,因为基数3中的三个现在具有前导0。

它是如何工作的(确实如此)

由于仅使用3个字符:

  1. l是8个重复模式的列表,作为它们的基数3表示的整数等效项,假定““ = 0,” \“ = 1和” /“ = 2

  2. lambda print语句后的第一个代码是从整数到基数3字符串的轻量级转换器

  3. 第一个循环循环3次,第二个循环打印每行,每行以基数3个字符乘以6,并替换为/,\或空格​​。

我确定我可以使用正则表达式来代替嵌套的replace(),但是我太累了,无法立即尝试。这只是一个实验,比我以前的Python工作还要长,但是只发布了关于该方法的任何评论(并且还因为我以前从未在base 3中工作过,所以我很喜欢开发转换器)。


1
您可以只删除基数为3的转换中的第一个除法。
nedla2004年

由于某种原因,这会导致我较早出现问题,但只是尝试过,现在就可以使用。非常感谢您比我更清醒。我将重新编辑答案(您刚刚为我节省了9个字节:))
ElPedro

1
我重写了以3为基的转换,它不再是lambda,我必须使其成为函数,但它可能能够转换回lambda。您可以在此处找到该功能。
nedla2004年

谢谢。我认为可以将两者结合使用,但这可能是明天晚上的工作:)再次感谢您的评论。
ElPedro '16

1
我把它降低到169,在这里
nedla2004年

2

Ruby,135个字节

puts [3320,1212,720,2172,6520,4144,2920,3184].map{|e|(e.to_s(3).rjust(8,"0").gsub("0"," ").gsub("1","\\").gsub("2","/"))*6+"\n"}.join*3

数字数组对应于每行的每个组成部分,转换为以3为基数:= 0,\= 1,/= 2,然后转换为十进制。但是,gsub()调用太大。

而且,刚才,我看到了@ElPedro的回答。:-(只是巧合。


e.to_s(3).rjust(8,"0")("%8s"%e.to_s(3)); gsub("0"," ").gsub("1","\\")..gsub("2","/")tr("013"," \\/"); "\n"$/; .join*""。您还可以通过将数组中的所有数字除以4并替换e为来保存字节(e*4)
约旦

糟糕,我想应该是tr("021"," /\\")
乔丹


2

PHP 157126字节

接受注释中的@Titus列表中的更改...我很生气,我错过了应该捕获的第1点,但是我不知道存在strtr(),这是大多数节省的地方-Titus不错!

新:

while($i<32)echo$b=strtr([3322,' 322 ','0220',' 223 ',2233,12013,3003,13021][$i++%8],['  ','\\','//','\\\\']),"$b$b$b$b$b\n";

旧:

<?$a=[zzyy,' zyy ',syys,' yyz ',yyzz,xysxz,zssz,xzsyx];while($i<32){$b=$a[$i++%8];$b=str_replace([z,x,y,s],['\\\\','\\','//','  '],$b);echo"$b$b$b$b$b$b
";}

因为所有的反斜杠都需要转义,所以可以节省大量空间来打包成不同的字符并将其替换为输出,然后一旦我调用str_replace(),便应尽可能频繁地使用它。


1
如果使用,则可以删除open标签-r。使用以下五个步骤来保存另外30个字节:ideone.com/wt4HGB 1)$a[...]直接用作str_replace参数而不是对其进行分配。2)strtr代替str_replace。3)用数字代替字母。4)将分配包括在回显中。5)不要分配$a,请使用它。
泰特斯(Titus)

1

Python 2中,169 161 165 160 155 154 152

基于@ElPedro的答案,并做了一些小改进。要查看说明,请参阅其答案。这是Python 2,尽管似乎在括号附近print

通过使用变量保存了8个字节 replace这仅适用于字符串,使用函数会更长。

看到@ElPedro意识到他们不需要l,所以我节省了4个字节,我也没有。

通过不翻转来节省5个字节range(8),而不是使用+=r附加到r的后面,而是将r添加到新数字的末尾。尝试使用 repl.it

通过窃取@ElPedro的新值列表节省了5个字节。

通过去除之间的空间保存1个字节in(

通过删除变量a,节省了2个字节。

for x in(40,4496,6200,5456,3240,1188,720,228)*3:
 r=''
 for i in range(8):r=`x/3**i%3`+r
 print(r*6).replace('0','\\').replace('1','/').replace('2',' ')

您可以通过删除之间的空间节省1 in(在第一
ElPedro

Also I have lost three bytes by reordering the sequence of which numbers represent each character in the base 3 list. See my answer for explanation. feel free to copy. As far as I am concerned this one is a joint effort and I'm happy to see that my original idea had at least some potential :)
ElPedro

您不需要a=3**i。只需使用for i in range(8):r=x / 3 ** i%3 +r即可保存一对。运算符优先级负责其余的操作:)
ElPedro

不知道如何定界字符串转换字符。解析器在我的最后一条评论中将其删除,因此不要只是复制并粘贴我的建议,否则它将被打破:)
ElPedro

好点,我明白了。
nedla2004

1

PHP,184字节

<?$p=['1111////',' 11//// ','  ////  ',' ////11 ','////1111','1//  111','11    11','111  //1'];for($j=0;$j<3;$j++)for($i=0;$i<8;$i++)echo str_replace(1,'\\',str_repeat($p[$i],6))."\n";

输出:

C:\PHP>php make-me-a-blanket.php
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\

0

Batch, 152 bytes

@call:l
@call:l
:l
@for %%s in (\\\\//// " \\//// " "  ////  " " ////\\ " ////\\\\ "\//  \\\" "\\    \\" "\\\  //\")do @echo %%~s%%~s%%~s%%~s%%~s%%~s

String processing in Batch sucks, so this is probably the best approach. The call-and-fall-through is very slightly shorter than a nested for loop. At least I don't have to quote my backslashes!


0

APL, 110 bytes

I'm new to APL, so this is a simplistic solution.

A←48⍴'\\\\////'⋄B←48⍴' \\//// '⋄C←48⍴'  ////  '⋄F←48⍴'\//  \\\'⋄G←48⍴'\\    \\'⋄24 48⍴A,B,C,(⊖B),(⊖A),F,G,⊖F  

Here's my approach: note that after the first 8 lines of the blanket, the pattern repeats itself. Therefore I only need to define the first 8 lines, and then I can repeat them 3 times. Also note that each line repeats itself after the first 8 characters. Therefore to define a single line I only need to define the first 8 characters and then repeat them 8 times.

Here's an ungolfed solution:

A←48⍴'\\\\////'⋄ ⍝ set A to a 48 element vector (48⍴) of repeated '\\\\////'s
B←48⍴' \\//// '⋄ ⍝ set B to a 48 element vector (48⍴) of repeated ' \\//// 's
C←48⍴'  ////  '⋄ ⍝ ...
D←48⍴' ////\\ '⋄ ⍝ Note that this is actually the reverse of vector B
E←48⍴'////\\\\'⋄ ⍝ Note that this is actually the reverse of vector A
F←48⍴'\//  \\\'⋄
G←48⍴'\\    \\'⋄
H←48⍴'\\\  //\'⋄ ⍝ Note that this is actually the reverse of vector F

24 48 ⍴ A,B,C,D,E,F,G,H ⍝ Make a 24 by 48 character matrix (24 48⍴) by concatenating A,B...H
                        ⍝ and repeating the string until the matrix is full

I noted above that D is the reverse of B, E is the revers of A, and H is the reverse of F. In my actual code, I take advantage of this by not defining D,F, or H and using the reverse function :

24 48⍴A,B,C,(⊖B),(⊖A),F,G,⊖F


0

Ruby, 132 bytes

puts Zlib.inflate Base64.decode64 "eJzt0bENADAMAsGeKdggC/3+cyQRC+A2ipuT3RgJgHWGUjm6VXb2Vjn/3KpJ/qtIPlp1v+XSKZKPVk3y/x5+D6/3sAEUXQ+Q"

very simple answer.


0

Haskell, 96 bytes

f n=n`mod`8`div`4
putStr$unlines[["\\ //\\ \\/"!!(f(x-y)+2*f(x+y)+4*f y)|x<-[0..47]]|y<-[0..23]]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.