Fibonacci işlevi veya dizisi


115

Fibonacci dizisi sırayla her sayıda kendinden önce gelen iki sayının toplamı numaraları, bir dizisidir. Dizideki ilk iki sayının ikisi de 1'dir.

İşte ilk birkaç terim

1 1 2 3 5 8 13 21 34 55 89 ...

Aşağıdakilerden en kısa kodu yazın:

  • Fibonacci dizisini uçsuz olarak oluşturur.

  • Verilen dizinin th terimini nhesaplar n. (Ya 1 ya da sıfır dizinlenmiş)

Standart giriş ve çıkış formlarını kullanabilirsiniz.

(Birinin seçtiğiniz dilde diğerinden daha kolay olması durumunda her iki seçeneğe de yer verdim.)


Bir fonksiyon için n, oldukça büyük bir dönüş değeri (en azından bilgisayarınızın normal sözcük boyutuna uyan en büyük Fibonacci numarası) desteklenmelidir.


Liderler Sıralaması

Yanıtlar:


48

Perl 6, 10 karakter:

Anonim sonsuz fibonacci dizi listesi:

^2,*+*...*

İle aynı:

0, 1, -> $x, $y { $x + $y } ... Inf;

Böylece onu bir diziye atayabilirsiniz:

my @short-fibs = ^2, * + * ... *;

veya

my @fibs = 0, 1, -> $x, $y { $x + $y } ... Inf;

Ve ilk on bir değeri (0'dan 10'a kadar) ile alın:

say @short-fibs[^11];

veya:

say @fibs[^11];

Bekleyin, anonim listeden de ilk 50 numarayı alabilirsiniz:

say (^2,*+*...*)[^50]

Bu döner:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
10946 17711 28657 46368 75025 121393 196418 317811 514229 832040
1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169
63245986 102334155 165580141 267914296 433494437 701408733 1134903170 
1836311903 2971215073 4807526976 7778742049

Ve bazı basit kriterler:

real    0m0.966s
user    0m0.842s
sys     0m0.080s

İle:

$ time perl6 -e 'say (^2, *+* ... *)[^50]'

EOF


Bunun ^2yerine ikame olarak bile düşünmezdim 0,1. +1
Konrad Borowski

2
Bu artık geçerli değil, |^2,*+*...*aynı sayıda bayt olan gibi yazmanız gerekecek 0,1,*+*...*.
Brad Gilbert

5
Perl çok garip.
Cyoce

1
Bu cevap hangi Perl 6'da yazılmıştır?
Hesap MakinesiFeline

3
@CalculatorFeline GLR (Great List Refactor) olarak bilinen ve 2015-12-25 tarihinde yayınlanan ilk resmi sürümden kısa bir süre önce olan büyük bir değişiklik oldu. Bu kod o zamana kadar işe yarayacaktı.
Brad Gilbert

73

Brainfuck, 22 vuruş

+>++[-<<[->+>+<<]>>>+]

Bellek bandı boyunca yavaş yavaş hareket eden Fibonacci dizisini oluşturur.


5
Güzel! Litterally güzel! Ya da belki hayır ...
Zaten

2
Bu, sıkıştırılmış beyin tıkanıklığında 3.344 veya 4 bayttır. (6 ln (22)) / ln (256)
Will Sherwood

24
16 bayt:+[[<+>->+>+<<]>]
primo

3
14 bayt:+[.[>+>+<<-]>]
Charlim

2
Tabii @Stefnotch, kısa olanı yıkıcı. Yukarıdaki çözelti, 16 baytlık çözeltinin de yaptığı gibi, bant üzerindeki fibonacci dizisi ile sona ermektedir.
primo


37

C # 4, 58 bayt

Akış (69; 65, zayıf yazılmışsa IEnumerable)

(İçin bir usingyönerge varsayarak System.Collections.Generic.)

IEnumerable<int>F(){int c=0,n=1;for(;;){yield return c;n+=c;c=n-c;}}

Tek değer (58)

int F(uint n,int x=0,int y=1){return n<1?x:F(n-1,y,x+y);}

6
Verilen nbir uint, n==0kısaltılabilir n<1. Ve akış, jenerik tipten sonra alanı keserek ve xgerekenden daha geniş bir kapsamda ilan ederek birkaç karakter kazandırabilir . Aslında, xtamamen hendek :n+=c;c=n-c;
Peter Taylor

1
@Peter: Teşekkürler, biraz zaman aldığımda düzenleme yapacak.
Jon Skeet

Tek değerli versiyonunuz özyinelemeli lambda ifademin cevap verdiği sürece ... güzel!
Andrew Gray

1
@ wizzwizz4 Yanılmıyorsam, !nçalışırsa, o zaman sadece nşartlı çevirirseniz gerekir .
Şubat'ta saat

3
@JonSkeet Aw. Ve işte ben :-) ... Ben C # de Jon Skeet dayak vardı düşünüyordum
wizzwizz4

32

GolfScript, 12

Şimdi, sadece 12 karakter!

1.{.@.p+.}do

+1 iyi iş çıkardın. Eğer 13 karakterden daha kısa yaparsanız, cevabınızı hemen kabul edeceğim (elbette, birisi daha kısa bir cevap vermezse). :-P
Chris Jester-Young,

1
Ben bir meydan okumaya bayılırım. Bitti! ;-)
jtjacques

Güzel, sen kazandın. En azından, birisi daha kısa bir şey yapana kadar (eğer mümkünse). :-P
Chris Jester-Young,

5
Bu tanım neredeyse 'Fibonacci' ismi kadar kısa! +1
agent-j

23

> <> - 15 karakter

0:nao1v LF a+@:n:<o

Yine de istersen kısaltabilirsin 0:nao1v LF a+@:n:<o. ... 15 :) Aslında bu da çıktı biraz daha okunabilir hale getirir verir
tomsmeding

5
13 karakter:01r:nao$:@+$r
randomra 16:15

21

J, 10 karakter

Yerleşik Taylor serisi katsayılarının hesaplanmasında kullanılması çok az aldatma olabilir. Burada öğrendim .

   (%-.-*:)t.

   (%-.-*:)t. 0 1 2 3 4 5 10 100
0 1 1 2 3 5 55 354224848179261915075

2
@ditsu (q:^-^:p) 6, 64 729p'nin eşit olduğu yerdir. J muhtemelen iyidir ne yaptığını bilmeceler. :)
randomra

2
Daha da iyisi: (<:^-^:>) 4öyle 81ve <:^-^:> 4öyle 53.5982.
randomra

2
Burada gösterilen emoji, tüm J kodunun neye çaba göstermesi gerektiğidir. Bir yandan, başka bir alternatif +/@:!&i.-9 bayt kullanıyor.
mil,

1
@miles Çok hoş! Benimkinden tamamen farklı olduğu için göndermelisin.
randomra

21

Hexagony ,18 14 12

6 bayt için teşekkürler Martin!

1="/}.!+/M8;

Expanded:

  1 = "
 / } . !
+ / M 8 ;
 . . . .
  . . .

Çevrimiçi deneyin


Eski cevap Bu, görüntülerin ve açıklamaların yeni Hexagony kullanıcıları için yararlı olabileceği için bırakılmıştır.

!).={!/"*10;$.[+{]

Expanded:

  ! ) .
 = { ! /
" * 1 0 ;
 $ . [ +
  { ] .

Bu, yeni satırlarla ayrılmış Fibonacci dizisini yazdırır.

Çevrimiçi deneyin! Yine de dikkatli olun, çevrimiçi tercüman sonsuz çıktıdan hoşlanmıyor.

açıklama

Bu program için iki "alt program" vardır, her biri kullanılan iki IP'den biri tarafından çalıştırılır. İlk rutin yeni satırları yazdırır, ikincisi Fibonacci hesaplama ve çıktısını yapar.

İlk alt yordam ilk satırda başlar ve süre boyunca sağdan sola hareket eder. Önce bellek göstergesindeki değeri yazdırır (sıfır olarak başlatılır) ve ardından bellek göstergesindeki değeri arttırır 1. İşlemden sonra, IP önce başka bir bellek hücresine geçiş yapan üçüncü bir satıra atlar, sonra yeni bir satır yazdırır. Bir yeni satır pozitif bir değere sahip olduğundan (değeri 10), kod her zaman sonraki beşinci satıra atlayacaktır. Beşinci satır, hafıza göstergesini Fibonacci numaramıza döndürür ve ardından diğer alt rutine geçer. Bu alt rutinden geri döndüğümüzde, IP bir no-op uyguladıktan sonra üçüncü satıra geri dönecektir.

İkinci alt program sağ üst köşeden başlar ve Güneydoğu'ya doğru hareket etmeye başlar. Bir ameliyattan sonra, ikinci hat boyunca Batı'ya yolculuk etmek için sıçradık. Bu satır, bellek işaretçisini bir sonraki konuma taşımadan önce mevcut Fibonacci numarasını yazdırır. Ardından IP, önceki ikiyi kullanarak bir sonraki Fibonacci sayısını hesapladığı dördüncü satıra atlar. Daha sonra, ilk alt rutine geri kontrol verir, ancak programın kontrolünü yeniden ele geçirdiğinde, ikinci çizgiye geri döndüğü sırada, başlangıçta Batı'yı işaret etmek için kullanılan ayna üzerinde zıpladığı yere kadar bir sıçrama ile karşılaşıncaya kadar devam eder.


Ön Güzel Resimler!

Resmin sol tarafı programdır, sağ tarafı hafızayı temsil eder. Mavi kutu ilk IP'dir ve her iki IP de yürütülecek bir sonraki talimatı gösterir.

enter image description here

Not: Resimler yalnızca resim düzenleme programları ile benzer şekilde sınırlı becerilere sahip kişilerce görülebilir: PI, *operatörün kullanımının daha net olması için en az 2 yineleme daha ekleyecektir .

Not 2: Sadece en çoğunu yazdıktan sonra alephal'ın cevabını gördüm , ayrılma nedeniyle hala değerli olduğunu düşündüm, ancak programlarımızın gerçek Fibonacci bölümleri çok benzer. Ayrıca, bu, birden fazla IP kullandığımda gördüğüm en küçük Hexagony programı, bu yüzden yine de saklamanın iyi olacağını düşündüm: P


Güzel resimler yapmak için kullandıklarınızla bağlantı kurmalı , daha sonra esolangs.org/wiki/Hexagony linkini yazmalısınız .
mbomb007

1
@ mbomb007 Her kareyi elle oluşturmak için gimp'i kullandım, sonra görüntüleri bir gif web sitesine yükledim. Bununla birlikte, bu işlem sırasında birkaç kez, bunun ne kadar sıkıcı olduğunu düşünerek yapmak için bir araç yapmayı düşündüm.
FryAmTheEggman,

@FryAmTheEggman Etkileyici! Bir meydan okuma yap. Eminim birileri cevap verecektir. : D, balığın çevrimiçi tercümanına benzer bir web sitesi oluşturabilseniz daha iyi.
mbomb007

@ mbomb007 Bu sitede bir meydan okuma için biraz iddialı olabilir, muhtemelen gerçekten geniş olmaktan çok acı çekeceğini söylemekten değil. Bunu göndereceğimi sanmıyorum, ancak sunmanın iyi bir yolunu düşünüyorsanız, kendiniz yapmaktan çekinmeyin. Ayrıca, Timwi'nin altıgenlik için bir C # ide oluşturduğuna inanıyorum, ancak onu hiç kullanmadım çünkü mono ile uğraşmadım.
FryAmTheEggman,

1
@ mbomb007 Bu arada, ide burada yaşıyor , bu arada, en son bağlamayı unuttu.
FryAmTheEggman,

18

İnek , 108

 MoO moO MoO mOo MOO OOM MMM moO moO
 MMM mOo mOo moO MMM mOo MMM moO moO
 MOO MOo mOo MoO moO moo mOo mOo moo

17

Python 2,34 bayt

Python, özyinelemeyi kullanarak ... işte bir StackOverflow geliyor!

def f(i,j):print i;f(j,i+j)
f(1,1)

15

Jöle , 3 bayt

+¡1

Çevrimiçi deneyin!

Nasıl çalışır

+¡1    Niladic link. No implicit input.
       Since the link doesn't start with a nilad, the argument 0 is used.

  1    Yield 1.
+      Add the left and right argument.
 ¡     For reasons‡, read a number n from STDIN.
       Repeatedly call the dyadic link +, updating the right argument with
       the value of the left one, and the left one with the return value.

¡ sola iki link göz atar. Sadece bir tane olduğundan, bu döngünün gövdesi olmak zorunda. Bu nedenle girişten bir sayı okunur. Komut satırı argümanları olmadığından, bu sayı STDIN'den okunur.


12

Golfscript - tek numara - 12/11/10

Stdin'den girdi almak için 12 karakter:

~0 1@{.@+}*;

Zaten yığında giriş için 11 karakter:

0 1@{.@+}*;

0'ı Fibonacci sayısı 0 olarak tanımlamak için 10 karakter:

1.@{.@+}*;

1
Opsiyon "n, verilen Fibonacci sayısını hesaplar". Yani hendek ~ve sizi 11 karakterden nyığını üzerinde ve ayrılmak F_nyığın.
Peter Taylor

12

Yakut

29 27 25 24 Karakter

p a=b=1;loop{b=a+a=p(b)}

Düzenleme: sonsuz bir döngü yaptı. ;)


13
b=a+a=bbir palindrom olduğunu fark eden var mı? :)
st0le

2
evet st0le did :)
gnibbler

Partiye geç kaldığımı biliyorum, ama biri b=a+a=bparçanın nasıl çalıştığını açıklayabilir mi? Kafam etrafına dolanmış gibi gözükmüyor.
Bay Llama

3
@GigaWatt, Bu şekilde düşün, Talimatlar soldan sağa idam edilir ... yaninewb=olda+(a=oldb)
st0le

2 karakter kullanarak tasarruf edebilirsiniz loop:p 1,a=b=1;loop{p b=a+a=b}
Patrick Oscity

11

Mathematica, 9 karakter

Fibonacci

Yerleşik işlevlere izin verilmiyorsa, işte açık bir çözüm:

Mathematica, 33 32 31 karakter

#&@@Nest[{+##,#}&@@#&,{0,1},#]&

#&@@Nest[{#+#2,#}&@@#&,{0,1},#]&32 karakter.
Chyanog

1
@chyanog 31:#&@@Nest[{+##,#}&@@#&,{0,1},#]&
Sayın Sihirbaz

1
@ Mr.Wizard 24 karakter (26 bayt):Round[GoldenRatio^#/√5]&
JungHwan Min

1
veya 23 karakter (27 bayt):Round[((1+√5)/2)^#/√5]&
JungHwan Min

10

DC (20 bayt)

Bir bonus olarak, bile şaşkın;)

zzr[dsb+lbrplax]dsax

EDIT: Yeterince uzun süre beklerseniz, fibonacci dizisindeki tüm sayıları yazdırdığını belirtebilirim.


13
Ben şaşırtılmış demem - şaşkın kodun anlaşılmasının zor olması gerekiyordu ve dc gittiği sürece buradaki kod tamamen basittir.
Nabb

10

başlangıç , 12 bayt

Prelude'un gerçekten oldukça rekabetçi olduğu birkaç zorluktan biri:

1(v!v)
  ^+^

Bu gerektirir Python yorumlayıcısını değerleri karakterler yerine ondalık sayılar olarak basan .

açıklama

Prelude'da, tüm satırlar programın sütunlarını hareket ettiren komut işaretçisi ile paralel olarak yürütülür. Her satırın sıfıra başlatılan kendi yığını vardır.

1(v!v)
  ^+^
| Push a 1 onto the first stack.
 | Start a loop from here to the closing ).
  | Copy the top value from the first stack to the second and vice-versa.
   | Print the value on the first stack, add the top two numbers on the second stack.
    | Copy the top value from the first stack to the second and vice-versa.

Döngü sonsuza kadar tekrar eder, çünkü ilk yığında asla 0 üstünde yer olmaz.

Bunun Fibonacci dizisini baştan başlattığını unutmayın 0.


10

Altıgen , 6 bayt

Rekabetçi değil çünkü dil sorudan daha yeni.

1.}=+!

Ungolfed:

  1 .
 } = +
  ! .

Fibonacci dizisini herhangi bir ayırıcı olmadan basar.


2
Bunun, sayılar arasında herhangi bir ayırıcı yazdırmaması gibi küçük bir sorunu var. Bu tamamen mücadelede tam olarak belirtilmemiş. (Ve ben gerçekten biri Hexagony kullanıyor. :))
Martin Ender

9

TI-BASIC, 11

Efsanevi TI-BASIC golfçü Kenneth Hammond ("Weregoose") tarafından, bu siteden . O (1) zamanda çalışır ve 0'ın Fibonacci dizisinin 0'ıncı terimi olduğunu düşünür.

int(round(√(.8)cosh(Anssinh‾¹(.5

Kullanmak:

2:int(round(√(.8)cosh(Anssinh‾¹(.5
                                     1

12:int(round(√(.8)cosh(Anssinh‾¹(.5
                                     144

Bu nasıl çalışıyor? Eğer matematiği yaparsanız, bunun sinh‾¹(.5)eşit olduğu ortaya çıkar ln φ, bu yüzden (1/φ)^ndüzeltme terimini kullanmak yerine yuvarlayan Binet formülünün değiştirilmiş bir sürümüdür . round((9 ondalık basamağa yuvarlak) yuvarlama hataları önlemek için gereklidir.


8

K - 12

nVe n-1Fibonacci sayısını hesaplar .

{x(|+\)/0 1}

Sadece nthFibonacci numarası.

{*x(|+\)/0 1}

+1 Fena değil! Bunu sadece bir karakter küçültebilirseniz (ve test etmem için bir yol sağlarsanız) cevabınızı kabul edeceğim. :-)
Chris Jester-Young

Bunu küçültmenin tek yolu, işlevi bilinen bir numaraya yapılan çağrı ile değiştirmek olacaktır: n (| + \) / 0 1 Bu tercümanı kullanarak test edin .
isawdrones


7

Java, 55

Buradaki çoğu dilin özlüğü ile rekabet edemiyorum, ancak n'inci sayısını hesaplamak için oldukça farklı ve muhtemelen daha hızlı (sabit bir zaman) yolu sunabilirim:

Math.floor(Math.pow((Math.sqrt(5)+1)/2,n)/Math.sqrt(5))

nn = 1 ile başlayan girdidir (int veya long). Kullandığı Binet formülü ve bunun yerine çıkarma yuvarlar.


Bu çözümü seviyorum
Andreas

Bu benim için işe yaramaz gibi gözüküyor, ancak erken ve bir şey eksik olabilir! Dizideki 0ilk sayı olduğu varsayıldığında , bu 0, 0, 1, 1, 3, 4, 8, 12, 21, 33ilk 10 sayı verir
Shaggy

@Shaggy Ayy! Üzgünüm, şimdi bir hata düzeltildi.
Hans-Peter Störr

6

Yakut, 25 karakter

st0le'ın cevabı kısaldı.

p 1,a=b=1;loop{p b=a+a=b}

6
Aslında onu daha da kısaltabilirsiniza=b=1;loop{p a;b=a+a=b}
Ventero

6
Yani onun cevabını mı karıştırdın? : P
mbomb007

6

FAC: İşlevsel APL, 4 karakter (!!)

Benim değil, bu nedenle topluluk wiki olarak gönderildi. FAC, Hai-Chen Tu’nun 1985’te doktora tezi olarak önerdiği bir APL lehçesidir. Daha sonra Alan J Perlis ile birlikte “ FAC: A Functional APL Language ” adlı bir makale yazdı . Bu APL lehçesi "tembel dizileri" kullanır ve sonsuz uzunluktaki dizilere izin verir. Bir işleci "iter" olarak tanımlar (Bazı özyinelemeli dizilerin kompakt tanımlamasına izin vermek için ) .

Monadiç ("unary") vakası temelde Haskell'in olup , olarak iteratetanımlanmaktadır (F⌼) A ≡ A, (F A), (F (F A)), …. Diyadik ( "ikili") durumunda iki değişken için benzer bir şekilde tanımlanır: A (F⌼) B ≡ A, B, (A F B), (B F (A F B)), …. Bu neden faydalıdır? Görünüşe göre bu tam olarak Fibonacci dizisinin sahip olduğu nüksetti. Aslında, verilen örneklerden biri

1+⌼1

tanıdık dizi üretmek 1 1 2 3 5 8 … .

Öyleyse, işte size, yenilik dışı bir programlama dilinde mümkün olan en kısa Fibonacci uygulaması. : D


Oh, yanlışlıkla (manuel) toplu-isteksizliğin bir parçası olarak gönderinizi yanlışlıkla topluluktan ayrıldım. Oh iyi. ;-)
Chris Jester-Young

6

R, 40 bayt

R çözümü görmedim, o yüzden:

f=function(n)ifelse(n<3,1,f(n-1)+f(n-2))

1
Bunun eski bir cevap olduğunu biliyorum, ancak 38 byte
Robert S.


6

Dodos , 26 bayt

	dot F
F
	F dip
	F dip dip

Çevrimiçi deneyin!

Nasıl çalışır

Fonksiyonu F tüm ağır işleri; özyinelemeli olarak şu şekilde tanımlanır.

F(n) = ( F(|n - 1|), F(||n - 1| - 1|) )

Her ne zaman n> 1 , elimizdeki | n - 1 | = n - 1 <n ve || n - 1 | - 1 | = | n - 1 - 1 | = n - 2 <n , böylece işlev döner (F (n - 1), F (n - 2)) .

Eğer n = 0 ise , | n - 1 | = 1> 0 ; eğer n = 1 ise , o zaman || n - 1 | - 1 | = | 0 - 1 | = 1 = 1 . Her iki durumda da, özyinelemeli F (1) çağrıları , bir Teslim istisnası yaratır ; F (0) döndürür 0 ve F (1) döndürür 1 .

Örneğin, F (3) = (F (1), F (2)) = (1, F (0), F (1)) = (1, 0, 1) .

Son olarak, ana işlev olarak tanımlanır

main(n) = sum(F(n))

bu yüzden F tarafından döndürülen vektörün tüm koordinatlarını toplar .

Örneğin, ana (3) = toplam (F (3)) = toplam (1, 0, 1) = 2 .



5

Desmos , 61 bayt

golfed

Click add slideriçin düğmeye n.

p=.5+.5\sqrt{5}
n=0
f=5^{-.5}\left(p^n-\left(-p\right)^{-n}\right)

Son satır çıktıdır.

Ungolfed

Bir fonksiyondur.

\phi =\frac{1+\sqrt{5}}{2}
f_{ibonacci}\left(n\right)=\frac{\phi ^n-\left(-\phi \right)^{-n}}{\sqrt{5}}

5

Cubix , 10 bayt

Rekabetçi olmayan cevap, çünkü dil sorudan daha yeni.

Cubix, @ETHproductions tarafından yeni bir 2 boyutlu dildir ve kod uyacak şekilde boyutlandırılmış bir küp üzerine sarılmıştır.

;.o.ON/+!)

Çevrimiçi deneyin

Bu, 2 x 2 küp üzerine aşağıdaki şekilde sarılır.

    ; .
    o .
O N / + ! ) . .
. . . . . . . .
    . .
    . .
  • O TOS değerini çıkarmak
  • N newline'ı yığının üstüne itin
  • / kuzeyi yansıt
  • o TOS'un karakterini çıkarır
  • ; pop TOS
  • / küpü dolaştıktan sonra doğuya yansıtabilirsiniz
  • + yığının en üst 2 değerini ekle
  • ! TOS 0 ise bir sonraki komutu atla
  • ) TOS'u 1 ile arttırın.

Bu, diziyi yeni satır ayırıcıyla basan sonsuz bir döngüdür. Çoğu komutun değerleri yığından çıkarmaması gerçeğinden faydalanır.
Ayırıcı yoksayılırsa, bu 5 bayt ile yapılabilir..O+!)


5

Brainfuck, 16,15, 14/13 karakter

+[[->+>+<<]>]  

Fibonacci dizisini oluşturur ve hiçbir şey yazdırmaz. Ayrıca, yukarıdaki olandan daha kısa.

+[.[->+>+<<]>]   

Bu karakter 14 karakterden oluşur ancak ASCII karakterlerini Fibonacci dizisinin değerleri ile yazdırır.


1
Bu iyi, ancak 14 baytlık sürümün yalnızca 2. 1’den çıktı olduğunu söylemem yanlış olur mu? "1 2 3 5 8" yerine "1 2 3 5 8" de olduğu gibi?
Charlim

1
@Charlim Oh, haklısın. 2014 yılının bana ne düşündüğü hakkında hiçbir fikrim yok. Her neyse, sadece baskı talimatını döngünün önüne getirerek düzelttim.
Stefnotch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.