Questions tagged «chess»

国际象棋是一种战略游戏,由两个玩家在方格网格上进行。此标签用于与国际象棋或国际象棋的任何变体有关的挑战。

30
确定国际象棋方块的颜色
您的挑战是编写一个程序,从棋盘输出给定正方形的颜色。这是棋盘的外观: 您会看到正方形a1是深色的,而h1是浅色的正方形。当给定一个正方形时,您的程序需要输出dark或light。一些例子: STDIN: b1 STDOUT: light STDIN: g6 STDOUT: light STDIN: d4 STDOUT: dark 规则: 您需要提供一个使用STDIN并使用STDOUT输出dark或的完整程序light。 假设输入始终有效([a-h][1-8]) 这是代码高尔夫球,所以最短的字节数获胜! 计分板 var QUESTION_ID=63772,OVERRIDE_USER=8478;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i; body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} <script …
58 code-golf  chess 

17
边缘骑士是冷酷的
介绍 阿伦·尼姆佐维奇(Aron Nimzowitsch)是一位领先的国际象棋大师和一位有影响力的国际象棋作家。 在他的书“我的系统”中,第一章讨论了中心的重要性以及为什么要主导中心。原因很简单,当您位于中心位置时,您的棋子有更多可能的直接下一步动作,这又使玩家拥有更大的力量。 当查看骑士的不同位置及其在空板上的潜在下一步动作(以粉红色显示)时,这一点非常清楚: 目的 根据骑士的位置,评估骑士在空板上可能进行的直接下一步行动的次数。 输入规格 骑士的位置。 首先是x(列),然后是y(行)。0 0是左下角。 为简单起见,我将棋盘的标签更改为仅数字。对于我们的示例和测试案例,我们使用基于0的索引,但是您可以自由使用基于1的索引。 您可以使用任何类型的可能的输入格式,数组,函数参数等。 输出规格 空板上一个骑士的潜在直接下一步移动次数。 测试用例 3 4 => 8 4 6 => 6 7 7 => 2 1 0 => 3 测试用例采用基于0的索引。完整的值网格为: 2 3 4 4 4 4 3 2 3 4 6 6 6 6 4 3 4 …
48 code-golf  math  chess 

8
N行动者:我可以达到多少个无限局面?
单招 棋盘是无限的二维方格,就像无限的棋盘一样。值为N的零件(一个N移动器)可以移动到与N的平方根正好等于其当前平方的距离(欧几里德测得的中心到中心)的距离的任何平方。 例如: 1移动器可以移动到水平或垂直相邻的任何正方形 2移动器可以移动到对角线相邻的任何正方形 五人棋棋子骑士一样的动作 请注意,并非所有的N型移动器都可以移动。3块移动器永远不会离开其当前正方形,因为板上的正方形都不与当前正方形的根3完全相同。 多招 如果允许其反复移动,某些碎片可以到达板上的任何正方形。例如,1移动器和5移动器都可以做到这一点。2移动器只能对角移动,并且只能达到正方形的一半。一块不能移动的棋子(例如3步移动棋子)不能到达任何方格(如果不发生移动,则起始方格不算作“到达”)。 图像显示可以到达的正方形。有关悬停的更多详细信息。点击查看大图。 1步或以上移动可达到的正方形用黑色标记 用红色方块显示正好可以移动1的方格 (3移动器除外,该方格不能移动) 给定的N移动者可以达到董事会的哪个比例? 输入项 正整数N 输出量 N移动者可以达到的董事会比例 这是从0到1(包括两端)的数字 对于此挑战,允许以最低的分数(例如1/4)输出分数 因此对于input 10,1/2和0.5都是可接受的输出。作为单独的分子和分母的输出也可以接受,包括不支持浮点数和分数的语言。例如,1 2或[1, 2]。 对于整数输出(0和1),以下任何格式都是可接受的: 对于0: ,0,0.0,,0/10 1[0, 1] 为1: ,1,1.0,,1/11 1[1, 1] 计分 这是代码高尔夫。分数是代码的长度(以字节为单位)。对于每种语言,以最短的代码为准。 测试用例 格式 input : output as fraction : output as decimal 1 : 1 : …

30
StringgnirtSStringgnirtSStringgnirtS
这对您来说是一个相对简单的挑战。 给定长度为N的字符串,向前输出该字符串,然后向后输出,然后向前,然后向后输出……等等。N次。例如,如果您输入的是 Hello! 您应该输出: Hello!!olleHHello!!olleHHello!!olleH 您也可以选择输出一个尾随换行符。 您的提交可以是完整程序,也可以是函数,并且您可以采用任何合理的格式进行输入和输出。例如,您可以从STDIN / STDOUT中获取IO,从函数中获取参数,并从文件中获取返回值,等等。您可以放心地假设输入字符串将不会为空,并且仅包含可打印的ASCII。您必须在一行上输出新字符串。因此,例如,如果最后一个示例的输出是 Hello! !olleH Hello! !olleH Hello! !olleH 这不是有效的解决方案! 这里是更多测试用例: Input: a Output: a Input: abcd Output: abcddcbaabcddcba Input: OK! Output: OK!!KOOK! Input: 4815162342 Output: 4815162342243261518448151623422432615184481516234224326151844815162342243261518448151623422432615184 Input: PPCG Output: PPCGGCPPPPCGGCPP Input: 42 Output: 4224 排行榜 由于这是一个代码高尔夫挑战,因此禁止了标准漏洞,以字节为单位的最短答案胜出!但是,这也是在任何特定语言中答案最短的竞赛。尽管Java答案不太可能会击败perl或某些打高尔夫球语言的答案,但拥有最短的Java答案仍然令人印象深刻。因此,您可以使用此页首横幅查看 所有语言中最短的答案,以及 每种语言的最短答案。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N …
42 code-golf  string  code-golf  math  geometry  data-structures  repeated-transformation  code-golf  number  random  code-golf  math  rational-numbers  code-golf  ascii-art  animation  code-golf  ascii-art  number  code-golf  math  number  code-golf  data-structures  code-golf  string  parsing  code-golf  array-manipulation  random  permutations  code-golf  string  code-golf  parsing  code-golf  string  quine  code-golf  string  parsing  comment  code-golf  string  counting  natural-language  code-golf  string  decision-problem  code-golf  math  code-challenge  metagolf  test-battery  code-golf  string  code-golf  math  number  arithmetic  source-layout  code-golf  number  primes  decision-problem  code-golf  math  arithmetic  code-golf  date  code-golf  string  cryptography  code-golf  code-golf  chess  board-game  code-golf  geometry  grid  puzzle-solver  set-partitions  code-golf  number  natural-language  code-golf  ascii-art  code-golf  math  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  string  natural-language  code-golf  game  board-game  tic-tac-toe  code-golf  ascii-art  hexagonal-grid  code-golf  string  comment  code-golf  internet  code-golf  sorting  code-golf  kolmogorov-complexity  unicode  code-golf  tips  code-golf  string  natural-language  code-golf  string  kolmogorov-complexity  source-layout  hello-world  code-golf  string  kolmogorov-complexity  counting  natural-language  code-golf  random  quine  code-golf  string  math  bitwise  code-golf  permutations  code-golf  string  code-golf  arithmetic 

16
最小的棋盘压缩
编写可以对棋盘进行编码和解码的算法或程序。目标是制作棋盘的最小表示,可用于确定(一旦解码)棋手在该回合中的所有移动可能性。 编码必须能够显示: 轮到谁了。 玩家是否可以在两侧守城堡。 玩家是否可以执行陪练,如果可以,则执行哪一个棋子? 所有作品的位置。 关于cast皮的重要说明:如果白色将其国王移动一圈,然后再将其向后移动一次,则必须明确的是,此后他们无法在任一侧守城堡。如果他们移动左车子或右车子,情况​​也会一样。尽管棋盘在视觉上处于与两个回合之前相同的状态,但游戏状态已更改。此处提供更多信息:http : //en.wikipedia.org/wiki/Chess#Castling 有关通行证的重要说明:这也是一个转弯敏感动作。阅读规则以获取更多信息。http://en.wikipedia.org/wiki/Chess#En_passant 根据需要确定输入和输出。压缩力最大的道具! 您的分数取决于最坏的情况-最大可能的大小(以位为单位)。确保显示如何计算该数字以及所占金额。拍摄最小的最坏情况!

18
数字键的骑士数字
对于标准小键盘上的非零数字 789 456 123 考虑将一个国际象棋骑士放置在任何数字上,并以任意数量的正常L形跳动来移动它,找出正的十进制整数。用这种方式可以表示哪些正整数? 其中之一是38,因为骑士可以从3那里开始,然后向左和向上移动8。381并且383也是可能的。 3如果不进行跳转(允许),则它本身是可能的。5也是,但是从不能到达其他数字5,因此它是5出现该数字的唯一数字。 编写一个程序或函数,该程序或函数需要一个正的十进制整数(如果需要,可以将其作为字符串),并且如果该数字可以由骑士在数字小键盘上以上述方式表示,则打印或返回真实值,否则输出一个falsy值。 以字节为单位的最短代码获胜。抢七是较早的答案 例子 真相: 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 18, 38, 61, 81, 294, 349, 381, 383, 729, 767, 38183, 38383, 18349276, 183492761, 618349276 虚假: 10, 11, 50, 53, 55, 65, 95, 100, 180, 182, 184, 185, 186, …

24
这是Loeschian号码吗?
正整数k是Loeschian数,如果 k可以表示i*i + j*j + i*j为i,j整数。 例如,第一正Loeschian号码为:1(i=1,j=0); 3(i=j=1); 4(i=2,j=0); 7(i=2,j=1); 9(i=-3,j=3); ...注意i,j对于给定k的不是唯一的。例如,9也可以与产生的i=3,j=0。 这些数字的其他等效特征是: k可以表示i*i + j*j + i*j为i,j非负整数。(对于每对整数i,j都有一对给出相同值的非负整数k) 有一组k连续的六边形在六边形网格上形成网格化(请参见k = 4和的插图k = 7)。(由于这个属性,这些数字可在移动蜂窝通信网络中找到应用。) 在序列的OEIS页面中查看更多特征。 挑战 给定一个正整数,如果它是Loeschian数,则输出真实结果,否则,则输出虚假结果。 程序或函数应处理(例如不到一分钟)最多达1000或数据类型限制的输入。 代码高尔夫。最短的胜利。 测试用例 以下数字应输出真实结果: 1, 4, 7, 12, 13, 108, 109, 192, 516, 999 以下数字应输出虚假结果: 2, 5, 10, 42, 101, 102, 128, 150, 501, …
33 code-golf  math  number  number-theory  decision-problem  code-golf  kolmogorov-complexity  code-golf  sequence  code-golf  path-finding  chess  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  math  arithmetic  code-golf  code-golf  number  code-golf  geometry  code-golf  math  code-golf  code-golf  kolmogorov-complexity  alphabet  code-golf  regular-expression  hexagonal-grid  king-of-the-hill  path-finding  java  code-golf  string  sorting  code-golf  string  grid  code-challenge  compression  code-golf  random  code-golf  sequence  arithmetic  code-golf  number  grid  tiling  code-golf  tips  code-golf  sequence  number-theory  recursion  code-golf  string  grid  code-golf  math  number  combinatorics  permutations  string  code-challenge  code-golf  sequence  number-theory  subsequence 

6
评分Tarzan的奥林匹克葡萄摇摆常规
奥运会的葡萄树摆动者在标准的树上执行常规活动。特别是,“标准树” n具有0向上穿过的顶点n-1以及将每个非零顶点连接a到其n % a下面的顶点的边。因此,例如,标准树5如下所示: 3 | 2 4 \ / 1 | 0 因为5除以3时的余数为2,所以5除以2或4时的余数为1,而5除以1时的余数为0。 今年,泰山将捍卫他的金新套路,每个始于顶点n - 1,秋千到顶点n - 2,继续顶点n - 3,等等,直到最后他卸除到顶点0。 例行程序的分数是每个挥杆(包括拆卸)的分数之和,挥杆的分数是树内起点和终点之间的距离。因此,Tarzan在标准树5上的例程得分为6: 从摇摆4到3得分3分(向下,向上,向上), 从摇摆3到2得分(下降)一分, 从摆动2到1得分1分(向下),并且 从下来1,0得分为1分(下降)。 编写一个程序或函数,给定一个正整数n,该程序或函数将计算Tarzan例程在Standard Tree上的得分n。样本输入和输出: 1 -> 0 2 -> 1 3 -> 2 4 -> 6 5 -> 6 6 -> 12 7 -> 12 8 …
32 code-golf  math  number  number-theory  code-golf  code-golf  restricted-source  programming-puzzle  css  code-golf  parsing  code-golf  random  encryption  code-golf  ascii-art  fractal  code-golf  math  code-golf  sorting  graph-theory  path-finding  permutations  code-golf  tetris  code-golf  card-games  code-golf  math  sequence  rational-numbers  code-golf  chess  code-golf  string  geometry  grid  code-golf  ascii-art  grid  code-golf  sequence  integer  code-golf  math  number-theory  packing  polyomino  code-golf  math  code-golf  string  quine  permutations  code-golf  math  code-golf  image-processing  optical-char-recognition  code-golf  string  kolmogorov-complexity  sequence  integer  code-golf  number  permutations  palindrome  code-golf  kolmogorov-complexity  code-golf  number  sequence  string  fewest-operations  code-golf  string  kolmogorov-complexity  sequence  primes  code-golf  string  ascii-art  code-golf  string  number  alphabet  code-golf  counting  code-golf  number  sequence  number-theory  primes  code-golf  subsequence  word-search 

28
计数车移动1D
给定一个具有一排车行和/或空白空间的位置,输出可能有多少个不同的车行移动。一个新车可以向左或向右移动到一个空白处,但不能移到需要越过另一个新车的地方。当一个新手移动时,其他新手保持在原位。 例如,从该位置开始,可以进行6次移动: .R..RRR. 第一个(最左侧)菜鸟可以向左移动1个空间,或者向右移动1或2个空间(3个移动) 下一个车队只能向左移动1或2个空格(2个移动) 第三只车根本无法移动,因为它被挤压在另外两个新车之间(0步) 最后一个小车只能向右移动1个空格(移动1个空格) 请注意,一个职位可能根本没有白痴,或者根本没有空白。 输入:白名单和空白区域的非空列表(字符串,数组等)。您可以将它们表示为True/ False,1/ 0,'R'/ '.'或任意两个一致的不同单字节字符或您选择的一位数字。由您决定,哪一个表示新手,哪一个表示空白。 输出:一个非负整数。整数浮点数也可以。 测试用例 输出是左侧的数字。 6 .R..RRR. 0 . 0 R 4 R..RR 3 ...R 8 ..R..R.. 0 ...... 对于更多的测试用例,以下是所有输入,最长为5。 0 . 0 R 0 .. 1 .R 1 R. 0 RR 0 ... 2 ..R 2 .R. 1 .RR …

30
2的幂和
挑战 给定一个整数输入x其中1 <= x <= 255,返回时总结给出了两种力量的结果x。 例子 给定输入: 86 您的程序应输出: 64 16 4 2 输入: 240 输出: 128 64 32 16 输入: 1 输出: 1 输入: 64 输出: 64 如果总和中没有确定的2的幂,则输出可能包含零。 例如,输入65可以输出0 64 0 0 0 0 0 1。 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜。
31 code-golf  binary  code-golf  sequence  integer  chess  code-golf  number  arithmetic  matrix  code-golf  code-golf  combinatorics  grid  set-partitions  code-golf  array-manipulation  graph-theory  code-golf  number  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  3d  code-challenge  restricted-source  printable-ascii  code-golf  board-game  code-golf  geometry  grid  code-golf  word-puzzle  code-golf  matrix  sorting  code-golf  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  code-golf  decision-problem  code-golf  math  number  arithmetic  restricted-source  code-golf  code-golf  number  integer  matrix  code-golf  date  code-golf  matrix  code-golf  sequence  combinatorics  chemistry  code-golf  array-manipulation  popularity-contest  code-golf  code-golf  natural-language  code-golf  number  integer  sorting  substitution  code-golf  string  number  date  encode  code-golf  decision-problem  code-golf  string  subsequence  code-golf  string  alphabet  code-golf 

30
一个N×N棋盘上可以放置多少个Wazirs?
假设将名为Wazir 的新童话棋子引入国际象棋。游荡者可以从(x,y)位置移动到: (x +1,y) (x,y +1) (x -1,y) (x,y -1) 也就是说,它们像车子一样正交移动,但一次只能像国王一样移动一步。在N×N棋盘上可以放置多少个这样的游击手,以使两个游击手不能互相攻击? 在1×1的板上,只能有1个这样的棋子。 在2×2板上,可以有2个这样的块。 在3×3板上,可以有5个这样的块。 给定N,返回可以放置在N×N棋盘上的游标的数量。 这是OEIS序列A000982。 更多测试案例 7 → 25 8 → 32 100 → 5000

28
输出棋盘的所有白色或黑色方块
介绍 这就是棋盘的样子。 您可以看到这a1是一个黑色的正方形。但是,b1是浅色正方形。 任务 面临的挑战是,给定的dark,light或者both,输出所有的暗,光或所有正方形 的隔膜(如空白或换行)。所有正方形的顺序无关紧要。 测试用例 Input: dark Output: a1 a3 a5 a7 b2 b4 b6 b8 c1 c3 c5 c7 d2 d4 d6 d8 e1 e3 e5 e7 f2 f4 f6 f8 g1 g3 g5 g7 h2 h4 h6 h8 Input: light Output: a2 a4 a6 a8 b1 …

12
告诉我动作
杰克和简决定在下班前下棋。不幸的是,杰克很不擅长可视化。他发现很难找到除了典当之外的给定部件可能的移动! 您的挑战是帮助杰克找到给定棋子(典当除外)的可能选项。 万一忘记了,各个部分用以下符号表示: K:国王 问:女王 N:骑士 B:主教 R:白嘴鸦 作为一个例子,下面的图像中的奈特位于d4和能够移动到c2,b3,b5,c6,e6,f5,f3,e2。对于给定的输入: Nd4 您将产生: Nc2 Nb3 Nb5 Nc6 Ne6 Nf5 Nf3 Ne2 规则: 只要列出了所有可能的动作,输出的顺序就无关紧要 可能的动作可以用空格,换行符或任何其他定界符分隔 输入可以作为参数传递给程序,也可以通过 STDIN 程序中的空格应计算在内,因此请充分利用它 这是代码高尔夫。(请避免使用专门为此目的设计的任何工具/实用程序。)答案最短者为准!
28 code-golf  chess 

8
互相攻击皇后区
假设一个8x8的棋盘用任意两个不同的值表示,一个值是一个空的正方形,另一个值是一个皇后。在以下示例中,我将0用作空白方块,将1用作皇后。例如: 是(谁)给的 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 …

1
三维象棋
为了捍卫某人的莫名其妙的决定,人们经常说那个人在每个人的头顶上方,下着“ 3D国际象棋”。现在,您就有机会下3D象棋! 规则 3D Chess有很多变种,但是对于这个挑战,我已经做好了自己的准备。我的版本与常规国际象棋一样,除了棋子位于立方体而不是正方形内,并且现在具有更大的运动尺寸。为了使这一挑战变得简单,没有典当也没有铸造。 件运动 (指南针方向是指在标准棋盘上发生的移动,“向上”和“向下”是指在3D棋盘上垂直移动)。 国王 -在给定的回合上可以移动26个正方形:N,NE,E,SE,S,SW,W,NW; 以及上,下和上/下+指南针方向之一。 女王 -可以朝国王的方向移动,但只要她想朝这些方向移动即可。 车鸦 -可以在6个方向上移动:N,E,S,W,向上和向下, 毕晓普 -有旅行的8个triagonal方向:NE +上/下,SE +上/下,SW +上/下,NW +向上/向下 骑士 -一个轴移动2个空间,然后再移动1个空间。就像普通的国际象棋一样,骑士是唯一可以超越其他棋子的棋子。 零件测试仪 使用此代码段查看不同块在3D板上的移动方式(提示:*Test只需根据距块的绝对距离,即可查看JS中的功能,以快速确定正方形是否为有效移动。): const color = "Black"; const pieces = ["N","B","R","Q","K"]; const urls = ["https://image.ibb.co/gyS9Cx/Black_N.png","https://image.ibb.co/dknnzc/Black_B.png","https://image.ibb.co/kb3hXx/Black_R.png","https://image.ibb.co/hGO5kH/Black_Q.png","https://image.ibb.co/jApd5H/Black_K.png"]; var dragPiece; var size = 3; var index = 0; function start() { Array.prototype.add …

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.