Questions tagged «optimization»

对于那些侧重于优化其他标签未涵盖的方面的挑战。

4
元胞自动机的多元投票
细胞自动机中有一个非常重要的问题,称为多数问题: 多数问题或密度分类任务是找到准确执行多数投票的一维元胞自动机规则的问题。 ... 给定一个总状态为i + j的两态细胞自动机的配置,其中i处于零状态,j处于一个状态,对投票问题的正确解决方案必须最终将所有单元设置为零i> j,并且如果i <j,最终必须将所有单元格设置为1。如果i = j,则未指定所需的最终状态。 尽管已经证明,没有任何一种细胞自动机可以在所有情况下解决多数问题,但是有许多规则可以在大多数情况下解决。Gacs-Kurdyumov-Levin自动机在随机初始条件下的准确度约为78%。GKL规则并不复杂: 半径为3,表示该单元格的新状态取决于之前的7个单元格:自身,右侧的3个单元格和左侧的3个单元格。 如果当前是一个单元格O,则其新状态是其自身的大部分状态,该单元格位于其左侧,而单元格3向左移动。 如果当前是一个单元格1,则其新状态是其自身的大部分状态,该单元格位于其右侧,而单元格3则位于其右侧。 这是一个例子: 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 …

9
唯一分开的像素
对于N x N的图像,请找到一组像素,以使不存在超过一次的分隔距离。也就是说,如果两个像素被隔开一定距离d,则它们是由恰好分离的仅两个像素ð(使用欧几里德距离)。注意,d不必是整数。 面临的挑战是要找到比其他任何人都更大的此类集合。 规格 无需输入-对于该竞赛,N固定为619。 (由于人们一直在问-数字619并没有什么特别之处。选择它的大小足够大,不可能提供最佳解决方案,而它又足够小,可以显示N by N图像,而Stack Exchange不会自动缩小该图像。显示的最大尺寸为630 x 630,因此我决定使用最大的质数,但不要超过该值。) 输出是用空格分隔的整数列表。 输出中的每个整数代表一个像素,以英语阅读顺序从0开始编号。例如,对于N = 3,位置将按以下顺序编号: 0 1 2 3 4 5 6 7 8 您可以根据需要在跑步过程中输出进度信息,只要可以轻松获得最终得分结果即可。您可以输出到STDOUT或文件,也可以输出到最容易粘贴到下面的堆栈代码判断中的任何内容。 例 N = 3 选择的坐标: (0,0) (1,0) (2,1) 输出: 0 1 5 获奖 分数是输出中位置的数量。在那些得分最高的有效答案中,最早的发布该得分的答案将获胜。 您的代码不必是确定性的。您可以发布最佳输出。 相关研究领域 (感谢Abulafia的Golomb链接) 尽管这两个问题都不相同,但是它们在概念上都相似,并且可能为您提供解决方法的思路: 哥伦布尺:一维情况。 Golomb矩形:Golomb直尺的二维扩展。对所有N求解NxN(平方)情况的一种变体,称为Costas阵列。 请注意,此问题所需的点不受与Golomb矩形相同的要求。通过要求从每个点到另一个的向量是唯一的,Golomb矩形从1维情况开始延伸。这意味着可以有两个点在水平方向上隔开2个距离,也可以在两个点之间垂直隔开2个距离。 对于此问题,标量距离必须唯一,因此水平间距和垂直间距都不能为2。此问题的每个解决方案都是一个Golomb矩形,但并非每个Golomb矩形都是一个有效的解这个问题。 上限 丹尼斯在聊天中很有帮助地指出 …

1
给定一个圆的列表,输出包含最小矩形的区域
将为您提供半径列表,您必须输出它们都将适合的最小矩形区域。 例如,给定列表,[5,3,1.5]您将输出157.460。 这是图像: 宽度为15.7460,高度为10,因此面积为157.460 规则: 您可以通过stdin或function参数获取列表,通过stdout或function return输出答案。 半径最多有2个小数位。 该列表的长度在2到6之间。 输出应精确到小数点后3位或更多。 如果需要,π= 3.1416。 测试用例: [5,3,1.5] = 157.460 [9,4,8,2] = 733.431- 在这里工作。 [18,3,1] = 1296.000 以字节为单位的最短代码获胜。

3
重箱堆叠
您有一堆沉重的箱子,并且希望将它们堆叠在尽可能少的堆叠中。问题是您不能在一个盒子中堆放更多的盒子,因此不能容纳更多的盒子,因此较重的盒子必须放在盒子的底部。 挑战 输入:整箱重量列表,以千克为单位。 输出:描述盒子堆栈的列表列表。这必须使用最少数量的堆栈作为输入。要成为有效的堆栈,堆栈中每个盒子的重量必须大于或等于其上方所有盒子的重量之和。 有效堆栈的示例 (按从下到上的顺序) [3] [1,1] [3,2,1] [4,2,1,1] [27、17、6、3、1] [33,32,1] [999,888,99,11,1] 无效堆栈的示例 (按从下到上的顺序) [1,2] [3,3,3] [5、5、1] [999、888、777] [4、3、2] [4321、3000、1234、321] 示例测试用例 1个 IN: [1, 2, 3, 4, 5, 6, 9, 12] OUT: [[12, 6, 3, 2, 1], [9, 5, 4]] 2 IN: [87, 432, 9999, 1234, 3030] OUT: [[9999, …

13
给我一个最小的魔法总和
保持简短的挑战。 您会得到4个数字:p1,p2,p3和p4。 数字的魔术总和定义如下: magic_sum = |p1 - p2| + |p2 - p3| + |p3 - p4| + |p4 - p1| 仅允许更改以上整数值之一(p1,p2,p3或p4)。您需要更改该值,以使这些值的神奇总和达到最小值。 例如: p1,p2,p3,p4 = 17,-6、15、33。在这种情况下,魔法总和的值为78。 您可以在此处将-6更改为16,魔法总和的值将变为36,这是可达到的最小值。 请记住,数字可以是正整数或负整数。 这是代码高尔夫球,因此代码胜利中最少的字节。布朗尼指出在娱乐语言上使用实用语言。愿4日与您同在。 重申: 样品1 输入1 17 -6 15 33 输出1 36 说明1 -6可以替换为16,这使我们可以达到的最小魔术总和。 样品2 输入2 10 10 10 10 输出2 0 or 2 两者都可以接受 …

2
神经网络可以识别素数吗?
背景 识别素数似乎不适合(人工)神经网络。但是,通用逼近定理指出,神经网络可以逼近任何连续函数,因此特别应该可以表示一个人想要的任何有限支持的函数。因此,让我们尝试识别前百万个数字中的所有质数。 更准确地说,因为这是一个编程网站,所以我们将其设为2 ^ 20 = 1,048,576。低于此阈值的质数为82,025或大约8%。 挑战 您能找到将神经网络正确分类为素数或不素数的20个整数吗? 出于此挑战的目的,神经网络的大小是表示它所需的权重和偏差的总数。 细节 目标是最小化单个显式神经网络的大小。 您网络的输入将是一个长度为20的矢量,其中包含整数的各个位,分别用0和1或-1和1表示。这些的顺序可以是最高有效位在前或最低有效位在前。 网络的输出应为单个数字,以便在某个截止值以上将输入识别为质数,而在同一截止值以下则将输入视为非质数。例如,正数可能表示素数(负数不是素数),或者大于0.5可能意味着素数(小于0.5则不是素数)。 在所有2 ^ 20 = 1,048,576个可能的输入上,网络必须是100%准确的。如上所述,请注意,此范围内有82,025个素数。(因此,始终输出“非素数”的精度为92%。) 用标准的神经网络术语来说,这可能称为过拟合。换句话说,您的目标是完美拟合素数。可能使用的其他词语是“训练集”和“测试集”相同。 该挑战不考虑“可训练”或“可学习”参数的数量。确实,您的网络可能包含硬编码的权重,下面的示例完全是硬编码的。取而代之的是,所有的重量和偏见是考虑的参数和计数。 训练或生成您的神经网络所需的代码长度与您的分数无关,但是发布相关代码当然值得赞赏。 基准线 作为基准,可以“记住”所有82,025个素数,总重量和偏差为1,804,551。 请注意,下面的代码包含许多内容:工作示例,工作测试代码,使用已知神经网络库的神经网络的有效定义,“硬编码”(或至少不是“训练有素”)神经网络,和分数的有效衡量。 import numpy as np bits = 20 from keras.models import Sequential from keras.layers import Dense from sympy import isprime # Hardcode some weights weights = …

1
为简单的反向波兰符号编程语言优化编译器
描述 虚构编程语言(IPL)使用波兰语反向表示法。它具有以下命令: 一世 -输入数字并将其推入堆栈 Ø堆栈的非破坏性输出顶部(数量保留在堆栈上) d-丢弃栈顶 整数 -将这个数字压入堆栈 +-* -从堆栈中弹出两个数字,执行相应的操作并将结果推回。IPL中没有划分。 IPL仅适用于整数,并用于简单计算。IPL程序写在一行上,并用空格分隔。空字符串是有效的IPL程序。 IPL计划: i i + o 输入两个数字,将它们加在一起并输出结果。 可以压入堆栈的输入数字和整数在[-999,999]范围内,但是输出可以是任意数字。如果您的语言不支持大数字,则可以。 输入/输出格式 您可以选择任何输入/输出格式,只要可以理解和读取/写入即可:字符串,列表,标记等。 任务 为您提供了一些IPL程序,您需要对其进行优化(减少长度): i 12 + 3 + o d 2 3 + d 优化后将成为 i 15 + o 您不必保留堆栈状态,但是输入和输出的数量及其顺序应与原始程序和优化程序相匹配。 所以IPL程序: -40 i * 2 * o i + 3 1 …

3
实施简化字距调整
介绍 字距调整是指调整文本字母之间的间距。例如,考虑Top用以下三个字形写的单词: ##### ..... ..... ..#.. ..... ..... ..#.. ..##. .###. ..#.. .#..# .#..# ..#.. .#..# .#..# ..#.. ..##. .###. ..... ..... .#... ..... ..... .#... 我们可以用点填充字形之间的间隙并完成它,但是间隙看起来太宽了。相反,我们将字形滑动到左侧,以便它们几乎可以接触: #####........ ..#.......... ..#..##..###. ..#.#..#.#..# ..#.#..#.#..# ..#..##..###. .........#... .........#... 看起来好多了!请注意,的条形图T在的左边框上方o。在此挑战中,您的任务是为此类矩形字形实现一个简单的字距调整程序。 字距调整过程 考虑具有.和#形状相同的两个矩形2D字符数组。在简单的字距调整过程中,我们首先将数组并排放置,中间放置一列.s。然后,我们将#右阵列中的每一个向左移动一步,直到#左右阵列中的s正交或对角相邻。字距调整的结果是引入相邻s 之前的步骤#。您的任务是实施此过程。 让我们举个例子: Inputs: ..### #.... #.... ..##. ...#. ...## ..### ....# Process: …
24 code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

2
计算尽可能大的字符串可能的最大运行次数
[此问题是计算字符串的运行的后续步骤] p字符串的周期w是任何正整数p,因此w[i]=w[i+p] 只要定义了该方程式的两边。让per(w)表示最小周期的大小w。我们说一个字符串w是周期iff per(w) <= |w|/2。 因此,非正式地,定期字符串只是由重复至少一次的另一个字符串组成的字符串。唯一的麻烦是,在字符串的末尾,我们不需要重复的字符串的完整副本,只要整个字符串至少重复一次即可。 例如,考虑字符串x = abcab。per(abcab) = 3作为x[1] = x[1+3] = a,x[2]=x[2+3] = b并且没有更短的期限。abcab因此,该字符串不是周期性的。但是,字符串ababa是周期性的per(ababa) = 2。 随着越来越多的例子abcabca,ababababa并且abcabcabc也是周期性的。 对于那些喜欢正则表达式的人,此程序可以检测字符串是否为周期性的: \b(\w*)(\w+\1)\2+\b 任务是在更长的字符串中找到所有最大的周期性子字符串。这些有时在文献中称为运行。 子字符串w是最大的周期性子字符串(运行),如果它是周期性的,也不w[i-1] = w[i-1+p]是w[j+1] = w[j+1-p]。非正式地,“运行”不能包含在具有相同时间段的较大“运行”中。 由于两次运行可以表示出现在整个字符串中不同位置的相同字符串,因此我们将按间隔表示运行。这是按照间隔重复的上述定义。 在字符串中运行(或最大周期性子串)T是时间间隔 [i...j]与j>=i,使得 T[i...j] 是一个带有句点的周期词 p = per(T[i...j]) 最大。从形式上讲,也不T[i-1] = T[i-1+p]是T[j+1] = T[j+1-p]。非正式地,该运行不能包含在相同期间的较大运行中。 用RUNS(T)字符串形式的运行集表示T。 运行示例 在串四个最大的周期性子(运行)T = atattatt是T[4,5] = tt,T[7,8] = …

3
最小矩形盖
矩形盖 假设您有一个位矩阵,例如以下。 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 我们想找到这个矩阵的矩形封面。它是矩阵的一组矩形子集,其中不包含任何0,但一起包含所有1。子集不需要是不相交的。这是上述矩阵的矩形封面示例。 +----+ +----+ |1 1| 0 0 0 …

5
触发斜槽并保护头奖
您将要参加游戏节目。挑战之一如下: 第一个房间包含大量相同的球。 第二个房间包含一系列滑槽,每个滑槽都具有一个传感器,该传感器可以计算放置在其中的球的数量。放置在滑槽中的球将无法回收。 在将一定数量的球(其触发计数)放入其中后,每个滑槽都将触发。当它触发时,它会闪烁灯光,发出声音并毫无疑问地触发它。 您必须触发N滑道才能继续下一个挑战。 您知道触发计数,但不知道计数与斜道之间的对应关系。 您有机会将球从第一个房间带到第二个房间。将球放入滑槽后,您将无法再返回更多球。 您拿到的每个球都会从累积奖金中扣除。 显然,您想确保自己能够通过挑战,但是想要最大程度地减少累积奖金损失。编写程序,函数,动词等以告诉您您需要多少个球。 例 假设触发计数为2、4和10,并且您需要触发2个滑槽才能通过。有一个策略,可以传10个球:在第一个溜槽中最多放置4个球,在第二个溜槽中最多放置4个球,在第三个溜槽中最多放置4个球。由于三个滑道之一仅在触发2个球后才触发,因此您总共只能使用10个球。没有可以保证少于10个的策略,因此这是正确的输出。 输入项 输入由一个整数触发计数的数组和一个给出要触发的溜槽数的整数组成。您可以按任意顺序输入两个输入,并且如果需要,可以输入第三个输入与数组的长度。 您可以假设所有输入均大于零,并且必须触发的溜槽数量不超过溜槽数量。 您还可以假设计数是排序的(升序或降序),只要您在回答中清楚说明即可。 输出量 输出应为单个整数,给出最佳策略所需的球数。 测试用例 格式: N counts solution 1 [2 4 10] 6 2 [2 4 10] 10 3 [2 4 10] 16 1 [3 5 5 5 5 5 5 5 5 5] 5 2 …

2
使用“子向量反转”优化排序
这是最小操作挑战,其目标是使用最少的反转将向量排序为升序。您的算法只能使用“子向量反转” 1对向量进行排序,但是它可以将其他运算用于算术运算,循环,检查其是否已排序等。算法执行的子向量反转的次数是其得分。 1个“子向量反转”: 在向量中选择一个数字范围,然后反转该范围内的元素。 举一个简单的例子,如果从vector开始{4,3,2,1},则可以用许多不同的方式对其进行排序: 反转整个向量。显然,这是最短的方法,因为它只需要一次逆转即可:{4,3,2,1} -> {1,2,3,4} 您可以执行冒泡排序的一个版本,该过程需要6个冲销: {4,3,2,1} -> {3,4,2,1} -> {3,2,4,1} -> {2,3,4,1} -> {2,3,1,4} -> {2,1,3,4} -> {1,2,3,4} 您可以从前三个元素开始,然后是最后三个元素,最后是两个第一个和最后两个,这需要进行4次交换: {4,3,2,1} -> {2,3,4,1} -> {2,1,4,3} -> {1,2,4,3} -> {1,2,3,4} ... 等等。有无数的可用选项(您可以根据需要重复执行任何操作)。 规则和要求: 对于包含100个数字的列表,您的代码必须在不到一分钟的时间内完成。您可以自己安排时间,但是请公平地玩2。 您必须存储所执行的所有交换的开始索引和结束索引,以便可以验证解决方案。(我将在下面解释这是什么意思)。 该代码必须是确定性的。 您可以根据需要使用任何格式的输入:数字矢量,链表,带长度的数组...任何您喜欢的格式。 您可以对向量的副本执行任何您喜欢的操作。这包括尝试不同的冲销并检查哪个效率最高。蛮力强行完全可以,但是要遵守时间限制。 分数是5个测试向量的翻转总数。抢七局将加盖日期戳。 例: 4 1 23 21 49 2 7 9 …

23
ASCII艺术八边形
给定输入整数n > 1,输出边长由n字符组成的ASCII八角形。请参阅以下示例: n=2 ## # # # # ## n=3 ### # # # # # # # # # # ### n=4 #### # # # # # # # # # # # # # # # # #### n=5 ##### # # # # # # …
22 code-golf  ascii-art  code-golf  geometry  code-golf  balanced-string  code-golf  cops-and-robbers  code-challenge  cops-and-robbers  code-golf  code-golf  random  cryptography  code-golf  array-manipulation  number  code-challenge  integer  code-golf  math  integer  code-golf  math  math  parsing  image-processing  test-battery  math  number  combinatorics  fastest-code  code-golf  code-golf  math  number-theory  rational-numbers  polynomials  code-golf  math  geometry  code-golf  code-golf  number-theory  primes  factoring  code-golf  restricted-source  code-golf  string  decision-problem  counting  code-golf  math  sequence  fibonacci  code-golf  array-manipulation  counting  code-golf  array-manipulation  number-theory  code-golf  array-manipulation  code-golf  random  code-golf  string  hexadecimal  code-golf  string  code-challenge  sorting  code-golf  number  floating-point  code-golf  sorting  code-golf  decision-problem  fibonacci  code-golf  number  combinatorics  code-golf  string  code-golf  math  code-golf  electrical-engineering  code-golf  javascript  code-golf  base-conversion  code-golf  array-manipulation  matrix  binary-matrix  code-golf  kolmogorov-complexity  python  perl  ruby  code-golf  number  code-golf  optimization  integer-partitions  code-golf  string  code-golf  ascii-art 

2
整数线性规划
介绍 为整数线性规划编写一个求解器。 挑战 您的任务是编写整数线性规划(ILP)的求解器。在ILP中,给出了一组未知数(所有都是整数)的线性不等式,目的是找到线性函数的最小值或最大值。 例如,对于不等式(示例取自“ 混合整数线性规划”) 4x+2y-15≤0 x+2y- 8≤0 x+ y- 5≤0 - x ≤0 - y ≤0 和目标函数3x+2y,目标函数的最大值应为12(x=2,y=3),而最小值应为0(x=y=0)。 输入以2d数组形式给出(或遵循标准规范的任何等效形式),每一行对应一个不等式,最后一行除外。数组中的数字是系数,该≤0部分始终被省略。如果n每一行中都有元素,则意味着存在n-1未知数。 数组的最后一行对应于线性函数。列出系数。 例如,上面问题的输入数组是 [[4,2,-15],[1,2,-8],[1,1,-5],[-1,0,0],[0,-1,0],[3,2,0]]. 输出应该是最小和最大,以任何合理的形式给出。 对于以下问题(上述问题排除了两个限制): [[4,2,-15],[1,2,-8],[1,1,-5],[3,2,0]]. 最大值仍然是12,但最小值不存在,目标函数可以具有任意大的负值(就绝对值而言)。在这种情况下,程序应12按照由应答者确定的虚假值输出。另一种情况是根本没有解决方案,例如, [[4,2,-15],[-1,-2,7],[-1,0,3],[0,1,0],[3,2,0]]. 在这种情况下,也应输出虚假值。最好能分辨出目标函数的“最优值”是无穷大的情况以及根本没有解的情况,但这不是必须的。 输入仅包含不等式和目标函数的整数系数。所有未知数也是整数。不等式的系数矩阵被保证具有满分。 测试用例 归功于@KirillL。在原始测试套件中发现错误并加深我对ILP问题的理解。 Input Output [[4,2,-15],[1,2,-8],[1,1,-5],[-1,0,0],[0,-1,0],[3,2,1]] [1,13] [[4,2,-15],[1,2,-8],[1,1,-5],[3,2,0]] [-inf, 12] [[4,2,-15],[-1,-2,7],[-1,0,3],[0,1,0],[3,2,0]] [NaN, NaN] [[-1,-1,-1,-1,-1,8],[1,1,1,1,0,0],[5,5,5,5,6,7]] [55, inf] [[-1,-1,-1,-1,-1,8],[1,1,1,1,0,0],[0,0,0,0,0,4]] [4, 4] [[4,2,-15],[-1,-2,7],[-1,0,3],[0,1,0],[0,0,4]] [NaN, …

11
水果套袋厂
您的任务是建立一种算法(程序或函数),以优化将水果从传送带包装到袋子中并发送给零售商的过程,从而优化最大数量的袋子。 每个袋子必须至少具有一定的重量,但是任何多余的重量都会损失利润,因为该重量可用于填充另一个袋子。您的装袋机始终将n水果排在前列,并且只能选择将这些n水果中的任何一种添加到正在处理的(单个)袋子中。它不能超出n队列中的第一个元素。该程序始终准确知道袋子中已经有多少重量。 可视化的另一种方法是在传送带n的末端装上一个尺寸大小的装载区,在该传送带上必须在新水果到达之前从中取出水果。丢弃所有剩余的水果和末尾的未装满袋子。 输入项 队列中水果的权重列表/数组(正整数) 袋子的最小总重量(正整数) 前瞻n(正整数) 输出量 您的算法应以所有适合您和您的语言的方式为所有袋子返回水果中的重量,无论是标准输入还是返回值或其他。您应该能够在计算机上在一分钟内运行该程序并计算分数。 例 Total weight 1000, lookahead of 3 and fruit queue: [171,163,172,196,156,175,162,176,155,182,189,142,161,160,152,162,174,172,191,185] One possible output (indented to show how the lookahead affects the bagging): [171,163,172, 156,175, 176] [162, 155,182,189, 161,160] [152,162,174,172,191,185] 计分 我将为您准备的10000个橙子批次在六次运行中测试您的算法,并且前瞻性从2到7(包括两端)。您应将它们包装在重量至少为1000个的袋子中。橘子的平均重量为170,标准偏差为13(如果有帮助的话)。 您的得分将是六次跑步的总和。最高分获胜。不允许出现标准漏洞。 Haskell中的简单示例实现和测试套件样板

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.