回答链斐波那契


25

(灵感来自ASCII的95个字符... 95电影行情

挑战

给定输入n,输出nth 斐波那契数。您可以使用01建立索引,请在您的提交中注明。很简单,是吗?要注意的是,您必须采用上一个答案的字符集,从中删除两个字符,然后添加一个单独的字符。单独的字符必须

  • 不是来自前一个答案的字符集
  • 来自(可打印的ASCII,空格,换行符,水平制表符)的集合

因而你总字符集的大小将正好一个比前一个上回答的更小的集合。

最初的答案

第一个提交必须包含一个子集(所有可打印的ASCII,空格,换行符和水平制表符),并且删除了两个字符。此后的每个提交都必须将其答案限制为这种原始的纯ASCII格式(这意味着您不能添加Unicode或扩展ASCII字符……很抱歉,APL等人,Jelly)。

实例和说明

  • 假设第一个答案在C中,并且包含(几乎所有可打印的ASCII,换行符和水平制表符),并从其字符集中省略%^。然后,第二个提交必须从上一个字符集(几乎所有可打印的ASCII,换行符和水平制表符)中删除两个字符,并添加%^。也许这是一个单行的PowerShell答案,而忽略了换行符。等等。
  • 如果上一个答案print(){}!*+的字符集为12个字符,则您提交的内容可能有print(){}!10个字符和一个附加字符,print(){!+10个字符和一个附加字符,依此类推。
  • 如果以前的答案有print(){}!*+其字符集(12个字符),提交的内容可能具有print()&(8个字符)作为它的字符集,因为12 - 8 > 1
  • 如果以前的答案有print(){}!*+其字符集(12个字符),提交的内容可能不会print(){}!(10个字符),再加上额外的字符*作为其字符集,因为即使那是11个字符,则*包括在上一组。
  • 并非您的字符集中的每个字符都必须对提交内容有所帮助。例如,如果先前的答案print(){}!*+以其字符集为准,并且您的语言具有内置功能,!可以计算斐波那契数列并#启动注释,则您的提交可能!#print(){}仍然有效。
  • 您可以多次使用字符集中的同一字符。例如,假设您的字符集为!*#_,您的答案可能是!!!**#**#_!!并且将是可接受的。
  • 除了您的代码(并且解释也不错!)之外,还请明确列出您的字符集,以使以后的提交更加容易。

获奖

挑战的获胜者将是发布第二个最新提交的人(即不是最后发布的人,因为他们打破了链条)。

最终规则

通常的规则适用:

  • 同一个人不能连续发布两次
  • 如果一个答案被认为是无效的(例如,它使用了禁止字符或计算不正确),则需要将其删除(以及所有后续的答案也都将其链接)
  • 张贴“同时”的两个用户将不得不保留较早的提交
  • 同一语言不能连续发布两次。为了该规则的目的,相同家族的语言(例如,Python 2和Python 3)被视为“相同语言”。

最后的事情:

  • 如果按“最旧的”排序,则此帖子效果最佳,以便正确排列答案。
  • Kyle Gullion在这里用Python构造了一个代码检查器,以验证您是否丢失或使用错误的字符。

只需简单说明一下:1)我们的程序是否必须包含我们正在使用的完整字符集,还是可以使用较小的字符集?(对于极简主义的语言来说很重要,例如大脑(fuck | flak),一元语言等。)2)您说同一语言不能连续两次发布。只要同一语言不在同一行中,可以多次发布吗?
DJMcMayhem

1
我建议您添加第一个,因为如果发布第一个,它可能会破坏这一挑战
Xcoder先生17年

1
@DeadPossum它基于字符,而不是整个字符数。删除两个并添加一个可确保最终可用字符池减少,并在将来的答案上施加创造力。
AdmBorkBork

3
@ Mr.Xcoder我对PPCG社区充满信心,如果有人故意弄乱了我,我保留在聊天中称他们为傻瓜头的权利。
AdmBorkBork

3
抛出代码检查器,使感兴趣的人的生活变得更轻松。
Kyle Gullion '17

Answers:


6

1. C

包含{}

#if 1
#define Q !"$&'",./=@[]^_\`|*
int WERTYUIOPASDFGHJKLZXCVBNM34567890(qwrtyuopasghjklzxcvbm)<%
	return qwrtyuopasghjklzxcvbm<2?1:WERTYUIOPASDFGHJKLZXCVBNM34567890(~-qwrtyuopasghjklzxcvbm)+WERTYUIOPASDFGHJKLZXCVBNM34567890(qwrtyuopasghjklzxcvbm-2);
%>
#endif

在线尝试!

我希望我做对了。


1
好吧,开枪。我发布脑力激荡的答案仅几秒钟,而现在这几乎是不可能的。:/
DJMcMayhem

@DJMcMayhem不,你只是爱等待某人添加一个{}这样你就可以再添加其他。
AdmBorkBork

@DJMcMayhem很好,如果有人添加{},那么您可以添加另一个和Brain-Flak答案。
betseg

1
我注意到这个答案没有*。是否允许我们从字符集中省略字符,而仍然将它们“包含”,还是被忽略了?
格雷格·马丁

@gregMartin 2?1*1将解决此问题。
Magic Octopus Urn'4

5

2. Mathematica

不含}Z或者水平制表符。(已包括{。)

(* !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY
[\]^_`\abcdefghijklmnopqrstuvwxyz{|~ *)
Fibonacci

前两行只是注释;最后一行是内置函数,使用Only True True Super Cosmically Ordained Indexing,其中输入0和1分别产生输出0和1(我不知道该叫0索引还是1索引)。


5

8. 八度

已添加U和删除+以及-。解决方案不包含+-`01AEI或制表符。

% !"#$&\'*./256789:<>?BCDFGHJKLMNOPQRSTUVWXYZ\\_abceghijklnpqrstuvwyz{|}~
f=@(x)([mod(4,3) mod(4,3);mod(4,3) mod(4,4)]^x)(3)

基于Fibonacci矩阵


您确实有t...
Anthony Pham

\t是在Python中打印制表符(我用来检查答案)的方式,我将对其进行编辑以使其更加清晰。
Kyle Gullion '17

斐波那契矩阵是一个好主意!
路易斯·门多

5

33,MATL

添加-,删除()。解决方案不包含!&'()/\01?AEIKLMNPSTWZ`dmwz{}|~,制表符,空格或换行符。

5X^Hq+G^Hq5X^-G^-HG^5X^*Hqqq^*Yo%"#$,.2346789:;<=>@BCDFJOQRUV[]_abcefghijklnprstuvxy

在MATL Online上尝试

固定错误:01和在结尾处\(在后面%)被无意留在了注释中。删除它们不会破坏功能。尝试将其答案从32移至33,以保持其有效性。如果需要删除它,请告诉我,我会做的。


1
欢迎来到PPCG!:)
betseg

谢谢,现在已修复。0 1和\在最后的注释中(%之后),因此将其删除不会影响程序的功能。真抱歉,我毁了这个锁链。

也许最流畅的解决方法是将Python 3答案计算为#32,并让您更改以使其成为#33?似乎您有多余的角色:)
格雷格·马丁

你或许应该删除-从不包含列表,因为你加它
fənɛtɪk

5

36. Java

新增\。已删除qx。不使用!&'()/1?AEIKLMNPSTWZ`dmnqtwxz{}|~[],制表符或空格。

\u002f\u002f"#$%*:>@BCGHJOQRUVXY^_jk
class
Fibo\u006eacci\u007b
i\u006e\u0074
fib\u0028i\u006e\u0074
\u006e\u0029\u007b
i\u006e\u0074
lo\u0077=0,high=3-2,\u0074e\u006Dp;
for\u0028i\u006e\u0074
i=3-2;i<\u006e;i++\u0029\u007b
\u0074e\u006Dp=lo\u0077;
lo\u0077=high;
high=high+\u0074e\u006Dp;
\u007D
re\u0074ur\u006e
lo\u0077;
\u007D
public
s\u0074a\u0074ic
voi\u0064
\u006Dai\u006e\u0028\u0053\u0074ri\u006eg\u005b\u005Db\u0029\u007b
Fibo\u006eacci
a=\u006ee\u0077
Fibo\u006eacci\u0028\u0029;
for\u0028i\u006e\u0074
i=3-2;i<=20;i++\u0029\u007b
\u0053ys\u0074e\u006D.ou\u0074.pri\u006e\u0074l\u006e\u0028a.fib\u0028i\u0029\u0029;
\u007D
\u007D
\u007D

我知道我可能要等更长的时间,但我想确保在为时已晚之前将其发布。该类不仅定义了一个接受整数n并返回该斐波那契数的函数,而且还出于娱乐目的为您打印了前20个数字。我试图通过用普通的Java语言编写本本的尽职调查,没有偷偷摸摸的打高尔夫球,然后我逐个删除了非法字符,直到我们找到了现在看到的那个生物。

在线尝试!


2
这就是您想要的原因0
Christopher

ang,看来您已经断链了。:-(
AdmBorkBork '17

@AdmBorkBork b-但我删除了q和x:[谁需要那些!我可以删除任何内容

@Poke现在已经一周了,所以我“赢了”。现在要发布另一个答案
Christopher

@DownChristopher haha​​ aw:[

5

37. Python 2

读过x。不使用!&'()/1?AEIMNPSTWZdmnqtwz{}|~[],空格,制表符或`。删除了K和L。

f=u"\u0074"
b=u"\u006D"
i=u"\u0028"
j=u"\u0029"
h=u"\u006e"
r=2.2360679775
s=u"\u002F"
exec"p="+i+"3-2+r"+j+s+"2"
exec"g=i"+h+"pu"+f+i+j
exec"pri"+h+f+i+"i"+h+f+i+i+"p**g-"+i+"-p"+j+"**-g"+j+s+"r"+j+j
#$%´:;<=>@BCGHJOQRUVXY^agklopvy

有评论:

f=u"\u0074" #t
b=u"\u006D" #m
i=u"\u0028" #(
j=u"\u0029" #)
h=u"\u006e" #n
r=2.2360679775 #sqrt(5)
s=u"\u002F" #/
exec"p="+i+"3-2+r"+j+s+"2" #p=(3-2+r)/2 = (1+sqrt(5))/2 = phi
exec"g=i"+h+"pu"+f+i+j #g=input()
exec"pri"+h+f+i+"i"+h+f+i+i+"p**g-"+i+"-p"+j+"**-g"+j+s+"r"+j+j #print(int((p**g-(-p)**-g)/r))

这种方法使用斐波那契数列的通称。


不错的第一答案!更不用说我只添加了一个:P
Christopher's

4

3. 脑筋急转弯

不含Z~A,或水平选项卡。(重新包含}

({}<(())>){({}<(({})<>)<>({}{}<<>({}<>)>)>[()])}{}{}
# !"$%&'*+,-./0123456789:;=?@BCDEFGHIJKLMNOPQRSTUVWXY\^_`abcdefghijklmnopqrstuvwxyz|

在线尝试!


4

5,哈斯克尔

删除AEIOU并添加标签Z

-- #!"$%&'*./23456789;:<>?@BCDFGHJKLMNPQRSTVWXYZ[\]^`abcdeghijklmopqrstuvwxyz{|}~,_
f 0 = 1
f 1 = 1
f n = f (n-1) + f (n-2)

在线尝试!


3
我不再喜欢你了……我需要3个元音。并且您接受了EM
Christopher

所以我使用了另一种语言
Christopher

3

12. Python 3

添加的:已删除{;不包含{};`01AEIPQx或制表符。

#!"#$%&\',./23456789?@BCDFGHJKLMNORSTUVWXYZ[\]^_abcdgjkmopqrvwyz|~:
def fib(n,a=3-2,b=3-2):
 if n==2-2:
  return a
 a, b = b, a + b
 return fib(n-1,a,b)

你的意思是你搬走了{;,不是};
L3viathan

3

6. 脑筋急转弯

({}<(())>){({}<(({})<>)<>({}{}<<>({}<>)>)>[()])}{}{}
# !"$%&'*+,-./0123456789:;=?@BCDFGHJKLMNOPQRSTVWXY\^bcdfghjklmnopqrstvwxyz|

在线尝试! 不使用tabAEIU`_,并重新添加O


我做了CW,因为我只更改了一些代码,所以我不会为其他工作获得不公平的代表。
Christopher

3

26. Prolog(SWI)

新增%。已删除NK。不使用&*01AEIKLMNPSTWZ`dmrwz{}],Tab或换行符。

a(X,B):-X<3,B is 4-3;C is X-4-(-3),D is X-2,a(C,G),a(D,F),B is G-(-F).%!"#$'/56789=>?@HJOQRUVY[\^_bcefghjklnopqtuvxy|~

在线尝试!


3

34.动脑子

添加了换行符,已删除nt。不使用!&'()/\01?AEIKLMNPSTWZ`dmntwz{}|~,制表符或空格。(也许我们现在可以获取一些2D语言了)

0索引。输入/输出是按字节值。

,[->]+>+<<[->>[->+<]<[->+<]>>[-<+<+>>]<<<]>>.
"#$%*23456789:;=@BCDFGHJOQRUVXY^_abcefghijklopqrsuvxy

在线尝试!


@戳完成。我加回了
Christopher

2

4,Python 2

已删除AEIZ,添加了标签~

# !"$%&'*-./23456789;<>?@BCDFGHJKLMNOPQRSTUVWXY[\]^`chjklmpqsvwxyz{|}

def f(x):
 a=0
 b=1
 for _ in range(x):
  a,b = a+b,a
 return a

在线尝试!


2

11. 标准ML(mosml)

新增+。已删除:}。不包含:}0`1AEIPQx或制表符。

(* !"#$%&\',./23456789;<>?@BCDFGHJKLMNORSTUVWXYZ[\]^_abcdgjkmopqrvwyz{|~ *)
fun f s = if s = 2-2 then 2-2 else if s = 3-2 then 3-2 else f (s-4+2) + f (s-3+2)

SML是不是在TIO,我用了莫斯科毫升品种,但有一个在线SMLNJ解释这里


2

10. C

添加m,删除PQ。不包含+`01AEIPQx或制表符。

编译器标志: -lm

//!"#$%&'*346789:<=>?@BCDFGHJKLMNORSTUVWXYZ[\]^_acfghkmvyz|.

double fib(i){
    double j = -(-~-2-sqrt(5))/2;
    return floor((pow(j,i)-pow(-j,-i))/sqrt(5));
}

在线尝试!


.您的评论中仍然缺少。
L3viathan

2

9. Python 2

添加-,删除mx。不含+`01AEImx或制表符。

# --!"$%&'*./29;:<>?@[\]^345678BCDFGHJKLMNOPQRSTUVWXYZabcdeghijklopqrstuvwyz{|}~,_

def fibonacci(n):
    elif n==(2/2):
        return 2-2
    elif n==2:
        return 2/2
    else:
        return fibonacci(n-2/2)-(-(fibonacci(n-2)))

递归Python函数!向后加所有斐波那契数,直到n为1。


你忘了大写字母添加到您的代码
康纳尔奥布莱恩

1
看起来您仍然还有1345678BCDFGHJKLMNOPQRSTUVWXYZ
回弹针

@KyleGullion先前的答案在其字符集中没有1或反引号
Anthony Pham

我提出了一个编辑建议,以表明我的意思。
Kyle Gullion '17

2

18. 八度

添加;和删除的f空间。解决方案不包含{}:`*%01AEIPQfrd,没有制表符,没有换行符和空格字符。

g=@(x)([4-3,4-3;4-3,4-4]^x)(3)#!"$&'+./256789<>?BCDFGHJKLMNORSTUVWXYZ\_abcehijklmnopqstuvwyz|~

答案8相同,只是带有更多SML憎恶:P


不要故意破坏太多。进行一些友好的“竞争性合作”是很好的,但是答案链挑战的未阐明目标是使它们尽可能长时间地进行下去。:)
AdmBorkBork's

1
Octave和SML之间只有一点乐趣。此外,我认为,适时的Lenguage答案最终会取得成功。
Kyle Gullion '17

2

23.标准ML(mosml)

我们又去了。添加Q,删除}]。不使用%&*+01:AEILMPZ`dmrzM{}],制表符或换行符

fun f x = #2("!#$\\',.23456789<>?@BCDFGHJKNOQRSTUVWXY[/;^_abcgjkopqvwxy|~", if x = 2-2 then 2-2 else if x = 3-2 then 3-2 else f (~(~(x-4)-2)) + f (x-(~3-2)))

@Emigna对,对不起。然后我会允许Q
L3viathan

2

25. 杰姆

添加+回来,删除ST。不使用%&*01AEILMPSTZ`dmrz{}]Ww,制表符或换行符。

基本上是我较老的答案的一部分,但是这个答案使用一些诡计多端的方法来规避括号的缺失。

q~"XX"a:~'|("_(j\((j+"'|)'j+++~e# !$,-./23456789;<=>?@BCDFGHJKNOQRUVY[^bcfghiklnopstuvxy

0索引。

在线尝试!


2

27. JavaScript

添加*,删除"'。不使用"&'01AEIKLMNPSTZ`dmrz{}]Ww,制表符或换行符。

f=a=>a<2?3-2:f(a-3+2)+f(a-4+2)/* !#$,.56789;%@BCDFGHJOQRUVXY[\^_bceghijklnopqstuvxy|~*/

2

28. 哈斯克尔

f=length"":scanl(+)(length"f")f;g=const(f!!)"#$%*,./23456789<>?@BCDFGHJOQRUVXY[\\^_bijkpquvxy|~"

在线尝试!用法:g 3给出2

添加",删除<space>-。不使用&'-01AEIKLMNPSTZ`dmrz{}]Ww或任何白色斑点。


2

30. 标准毫升

添加:,删除+?。不包含!&'+-01?AEIKLMNPSTWZ`dmrwz{}或任何空格。

fun$(a,b,x)n=if(length(x)=n)then(length(a))else$(b,a@b,()::x)n;("#%*./23456789<>BCDFGHJOQRUVXY\\^_cjkopqvy|~";$([],[()],[]))

第一部分fun$(a,b,x)n=if(length(x)=n)then(length(a))else$(b,a@b,()::x)n定义了一个函数$,该函数n使用一元列表编码来迭代计算斐波那契数。参数的长度x表示当前数字, a并且b是长度fib(length(x)-1)和的列表fib(length(x))。如果n等于,length(x)则返回length(b),否则递归添加,ab通过列表串联,并x通过()向其添加元素来递增。

第二部分("#%*./23456789<>BCDFGHJOQRUVXY\\^_cjkopqvy|~";$([],[()],[]))是在串被丢弃,一个序列$([],[()],[])是函数的初始化$a = 0b = 1并且x = 0,导致其计算第n个Fibonacci数匿名函数。


2

32,Python 3

exec(chr(2**2+2**5+2**6)+chr((3^2)+2**2+2**5+2**6)+chr(2+2**2+2**5+2**6)+chr(2**5)+chr(2+2**2+2**5+2**6)+chr(2**3+2**5)+chr(2**3+2**4+2**5+2**6)+chr((3^2)+2**3+2**5)+chr(2+2**3+2**4+2**5)+chr(2+2**3)+chr(2**5)+chr((3^2)+2**5+2**6)+chr((3^2)+2**2+2**3+2**4+2**5)+chr(2**4+2**5)+chr(2+2**3)+chr(2**5)+chr(2+2**5+2**6)+chr((3^2)+2**2+2**3+2**4+2**5)+chr((3^2)+2**4+2**5)+chr(2+2**3)+chr(2**5)+chr(2+2**2+2**5+2**6)+chr((3^2)+2+2**2+2**3+2**5+2**6)+chr(2+2**4+2**5+2**6)+chr(2**5)+chr((3^2)+2+2**2+2**3+2**4+2**6)+chr(2**5)+chr((3^2)+2**3+2**5+2**6)+chr(2+2**2+2**3+2**5+2**6)+chr(2**5)+chr(2+2**4+2**5+2**6)+chr((3^2)+2**5+2**6)+chr(2+2**2+2**3+2**5+2**6)+chr((3^2)+2+2**2+2**5+2**6)+chr((3^2)+2**2+2**5+2**6)+chr(2**3+2**5)+chr(2**3+2**4+2**5+2**6)+chr((3^2)+2**3+2**5)+chr(2+2**3+2**4+2**5)+chr(2+2**3)+chr(2**5)+chr(2**5)+chr((3^2)+2**5+2**6)+chr(2**2+2**3+2**5)+chr(2+2**5+2**6)+chr(2**5)+chr((3^2)+2**2+2**3+2**4+2**5)+chr(2**5)+chr((3^2)+2**5+2**6)+chr((3^2)+2+2**3+2**5)+chr(2+2**5+2**6)+chr(2**2+2**3+2**5)+chr((3^2)+2**5+2**6)+chr(2+2**3)+chr(2**5)+chr(2+2**4+2**5+2**6)+chr((3^2)+2**2+2**5+2**6)+chr(2**2+2**4+2**5+2**6)+chr((3^2)+2**2+2**4+2**5+2**6)+chr(2+2**4+2**5+2**6)+chr(2+2**2+2**3+2**5+2**6)+chr(2**5)+chr((3^2)+2**5+2**6))#"$%,.789:;<=>@BCDFGHJOQRUVXY[]_abfgijklnopqstuvy

添加r和删除|~。解决方案不包含!&'/\-01?AEIKLMNPSTWZ`dmrwz{}|~,没有制表符,没有换行符和空格字符。


2

39. Python 2

新增0。已删除@^。不使用!^&'()/1?@AEIMNPSTWZdmntwz{}|~[] `,Tab或换行符。

C=u"f=la\u006Db\u0064a\u0020X:3-2if\u0020X<2else\u0020f\u0028X-3+2\u0029+f\u0028X-2\u0029";exec""+C#$%*,.57>BFGHJKLOQRUVY_ghjkopqrvy

不带转义序列的exec参数:

f=lambda X:3-2if X<2else f(X-3+2)+f(X-2)

在线尝试!


2

38.马特

新增q。已删除0 <newline>。不使用!&'()/1?AEIKLM0NPSTW{Z`dmntwxz}|~[],制表符,换行符或空格。

5X^Hq+G^Hq5X^-G^-HG^5X^*Hqqq^*Yo%"#$,.2346789:;<=>@BCDFJORUV_abcefghijklprsuvy

在线尝试


这个答案不起作用,它包含q
Kyle Gullion

{什么时候读过的?
破坏的柠檬

(您仍在使用{根据不使用的列表)
销毁的柠檬

答案37使用x,您没有删除它,但受到限制。您可以在评论的末尾添加x吗?受限列表还显示您不使用q,因此您需要删除它。
NieDzejkob

没关系,发送了修改
NieDzejkob

1

7,Python 2

重新包含_。删除了以下字符:tabAEIU`,以及(只是有点讨厌)01。否则,只需复制Wheat Wizard的答案(因此,社区Wiki)。

# !"$%&'*./456789;<>?@BCDFGHJKLMNOPQRSTVWXY[\]^chjklmpqsvwxyz{|}

def f(x):
 a=2-2
 b=3-2
 for _ in range(x):
  a,b = a+b,a
 return a

在线尝试!


1

13. 标准ML(mosml)

新增x。已删除:r。不包含:;{}0`1AEIPQr或制表符。

(* !"#$%&\',./23456789<>?@BCDFGHJKLMNORSTUVWXYZ[\]^_abcdgjkmopqvwxyz|~ *)
fun f s = if s = 2-2 then 2-2 else if s = 3-2 then 3-2 else f (s-4+2) + f (s-3+2)

在我们几乎排除了C风格的语言之后,让我们开始研究Python。这个答案几乎与答案11相同。


1

14. 八度

添加r和删除了换行符和空格。解决方案不包含{}:;`01AEIPQ,没有制表符,没有换行符和空格字符。

f=@(n)round(((2/2+sqrt(5))/2)^n/sqrt(5))%!"#$&'*-,.346789<>?BCDFGHJKLMNORSTUVWXYZ[\]_abceghijklmpvwyz|~

基于封闭式公式(7)


1

16. 八度

添加/和删除*和空格。解决方案不包含{}:;`*%01AEIPQ,没有制表符,没有换行符和空格字符。

f=@(n)round(((2/2+sqrt(5))/2)^n/sqrt(5))#!"$&'-,.346789<>?BCDFGHJKLMNORSTUVWXYZ[\]_abceghijklmpvwyz|~

答案14相同,只是对SML和Python的直接攻击:P


打的好。我知道我能做什么。
L3viathan '17

1

15.标准ML(mosml)

增加了空间并删除了%/。不包含{}:;`01AEIPQ,制表符或换行符。

fun f s = if s = 2-2 then 2-2 else if s = 3-2 then 3-2 else f (s-4+2) + f (s-3+2) (* !"#$&\',.23456789<>?@BCDFGHJKLMNORSTUVWXYZ[\]^_abcdgjkmopqrvwxyz|~ *)
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.