Yukarı Say, Değiştir, Tekrarla!


18

Tanım

Tanımlama olarak N inci aşağıdaki gibi AKIM dizisinin dizisi.

  1. A = [n] singleton dizisi ile başlayın .

  2. Her bir tam sayı için k içinde A , giriş yerine k ile k kadar sayma, doğal sayılar 1 için k .

  3. Önceki adım n - 1'i tekrarlayın.

Örneğin, n = 3 ise , [3] dizisiyle başlarız .

Biz yerine 3 ile 1, 2, 3 , elde [1, 2, 3] .

Şimdi yerine 1 , 2 ve 3 ile 1 ; 1, 2 ve 1, 2, 3 (sırasıyla), [1, 1, 2, 1, 2, 3] elde edilir .

Son olarak, dizideki altı tamsayı için de önceki adımdakiyle aynı değiştirmeleri gerçekleştiririz ve [1, 1, 1, 2, 1, 1, 2, 1, 2, 3] elde edilir . Bu üçüncü CURR dizisidir.

Görev

Kesinlikle pozitif tamsayı verilen bir fonksiyonun bir program yazınız n girdi, hesaplar olarak n inci AKIM dizisi.

Çıktı, bir tür düz bir liste olmalıdır (ve bir işlevden döndürülen dizi, dilinizin dizi sözdiziminin dize olarak temsil edilmesi, boşlukla ayrılmış vb.).

Bu . Bayttaki en kısa kod kazanabilir!

Test senaryoları

 1 -> [1]
 2 -> [1, 1, 2]
 3 -> [1, 1, 1, 2, 1, 1, 2, 1, 2, 3]
 4 -> [1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4]
 5 -> [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5]
 6 -> [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6]


Girdiyi [2]bir tamsayı yerine tekil dizi (like ) olarak alabilir miyiz ?
— Mego

@ Mego Haydi tamsayı olarak tutalım.
— Dennis

Bunun için bir OEIS dizisi olması gerektiğini hissediyorum.
— DanTheMan

@DanTheMan Gerçekten şu anki formunda bir tamsayı dizisi değil , ama sonuçların tüm pozitif tamsayılar için bir araya getirilmesiyle bire dönüştürülebileceğini tahmin ediyorum.
— Dennis

Yanıtlar:


23

Jöle, 3 bayt

R¡F

Çevrimiçi deneyin

açıklama

R¡F    Argument n

R      Yield range [1..n]
 ¡     Repeat n times
  F    Flatten the result

Bu, Jelly cevabımla karşılaştırıldığında ... sadece harika ...
— Leaky Nun

6
Harika ilk gönderi!
— Mavi

16

Python, 50 bayt

lambda i:eval("[i "+"for i in range(1,i+1)"*i+"]")

Kapsam kötüye kullanımı! Örneğin, i=3değerlendirilecek dize, olarak genişler.

[i for i in range(1,i+1)for i in range(1,i+1)for i in range(1,i+1)]

Her nasılsa, işlev girdi değişkenini iher şey için kullanmasına rağmen , Python her bir yineleme dizinini, ifadeyi sanki ayrı bir kapsama ait olarak ayırıyor

[l for j in range(1,i+1)for k in range(1,j+1)for l in range(1,k+1)]

ile iişlev giriş.


Bu numara Firefox 30+'da da çalışıyor ve beni 3 bayt kurtardı, teşekkürler!
— Neil

@DigitalTrauma Hem python hem de JavaScript var eval, açıkçası kodun kendisinin taşınması gerekiyor ama yine de bunu kabul edebileceğinizi düşündüm.
— Neil

@Neil Oh, anlıyorum - Tamamen yanlış anladım :)
— Digital Trauma

12

05AB1E, 6 3 bayt

DFL

Açıklaması

D     # duplicate input
 F    # input times do
  L   # range(1,N)

Çevrimiçi deneyin

@Adnan sayesinde 3 bayt kaydedildi


DFL3 byte daha kısa :)
— Adnan

1
@Adnan: L'nin listelerde böyle çalıştığını bilmiyordum. Otomatik olarak düzleşmesi biraz şaşırtıcı.
— Emigna

3
Aslında hiç düzeltmediğim bir hata: s.
— Adnan


6

Python 2, 82 bayt

lambda n:[1+bin(i)[::-1].find('1')for i in range(1<<2*n-1)if bin(i).count('1')==n]

Bu en kısa çözüm değil, ancak ilginç bir yöntemi gösteriyor:

  • İlk 2^(2*n-1)sayıları ikili dosyaya yazın
  • Tam olarak nolanlar ile sakla
  • Her sayı için, izleyen sıfır sayısını sayın ve 1 ekleyin.

4

Aslında 9 bayt

;#@`♂RΣ`n

Çevrimiçi deneyin!

Açıklama:

;#@`♂RΣ`n
;#@        dupe n, make a singleton list, swap with n
   `♂RΣ`n  call the following function n times:
    ♂R       range(1, k+1) for k in list
      Σ      concatenate the ranges

Bir bayt için Leaky Nun'e ve 2 baytlık ilham için teşekkürler.


;#@"♂R♂i"*ƒbir bayt kaydeder
— Leaky Nun

@LeakyNun İyi yakalama - ;#@`♂R♂i`nbir tane daha kaydeder!
— Mego

Toplama denemek üzereydim, lol.
— Leaky Nun

Sanırım 9 burada en uygun çözüm olacak
— Mego

Bağlantınız hala güncel değil.
— Leaky Nun

4

C #, 128 Bayt

List<int>j(int n){var l=new List<int>(){n};for(;n>0;n--)l=l.Select(p=>Enumerable.Range(1,p)).SelectMany(m=>m).ToList();return l;

İle using static System.Linq.Enumerable, bunu yapabilirsiniz:int[]J(int n){var l=new[]{n};while (n-- > 0){l = l.Select(p => Range(1, p)).SelectMany(m => m).ToArray();}return l;}
— ölmek maus

4

APL, 11 bayt

{∊⍳¨∘∊⍣⍵+⍵}

Ölçek:

      {∊⍳¨∘∊⍣⍵+⍵} 3
1 1 1 2 1 1 2 1 2 3

Açıklama:

  • +⍵: ile başlayarak ⍵,
  • ⍣⍵: aşağıdaki ⍵zamanları yapın:
    • ⍳¨∘∊: girişi düzleştirin ve ardından girişteki her N için bir liste [1..N] oluşturun
  • ∊: bunun sonucunu düzleştirin

2
Daha basit:{(∊⍳¨)⍣⍵⊢⍵}
— Adám

@ Adám: Ah, evet, trenler J'den farklı çalışıyor. Başladım {(∊∘(⍳¨))⍣⍵+⍵}ve sonra düşündüm, bu parantezlerden nasıl kurtulabilirim?
— marinus

2

CJam, 14 bayt

{_a\{:,:~:)}*}

Burada test edin.

açıklama

_a   e# Duplicate N and wrap it in an array.
\    e# Swap with other copy of N.
{    e# Do this N times...
  :, e#   Turn each x into [0 1 ... x-1].
  :~ e#   Unwrap each of those arrays.
  :) e#   Increment each element.
}*

2

Mathematica, 27 26 bayt

Essari'nin cevabından ilham alarak 1 bayt kurtardı.

Flatten@Nest[Range,{#},#]&

Oldukça basit: girişi için xbiz ile başlamak {x}ve daha sonra uygulamak Rangekendisine xkez ( Rangebir Listableotomatik tamsayılar içeride keyfi iç içe listeler için geçerli olduğunu hangi araçlar). Sonunda Flattensonuç.


2

Clojure, 59 bayt

(fn[n](nth(iterate #(mapcat(fn[x](range 1(inc x)))%)[n])n))

Açıklama:

Sorunu çözmek için gerçekten düz bir yol. İçten dışa doğru çalışma:

(1) (fn[x](range 1(inc x))) ;; return a list from 1 to x
(2) #(mapcat (1) %)         ;; map (1) over each item in list and flatten result
(3) (iterate (2) [n])       ;; call (2) repeatedly e.g. (f (f (f [n])))
(4) (nth (3) n))            ;; return the nth value of the iteration

2

Python 3, 75 74 bayt

def f(k):N=[k];exec('A=N;N=[]\nfor i in A:N+=range(1,i+1)\n'*k+'print(N)')

Bu, sorun tanımının kodlara açık bir çevirisidir.

Düzenleme: @Dennis sayesinde bir bayt kaydedildi.


Sizin printdışına çıkabilirsiniz exec.
— xnor

Evet, ilk başta sahip olduğum şey buydu, ama sadece [k]bir nedenden dolayı basar . Bunun bir kapsam sorunu mu yoksa başka bir şey mi olduğunu anlamaya çalıştım.
— Andrew Epstein

Evet, bir kapsam sorunu gibi görünüyor . Python 2'de iyi çalışıyor.
— xnor

2

R, 60 49 bayt

Pretty basit kullanım unlistve sapply.

y=x=scan();for(i in 1:x)y=unlist(sapply(y,seq));y

11 bayt kaydettiği için @MickyT sayesinde


@MickyT thx seq, bayt sayısını azaltmak için kullanabilirsiniz
— bouncyball

Maalesef soruyu yanlış
— okudum

2

php 121

Bunun arkasındaki hileler yolunda pek değil. Php bir dizi düzleştirmek kısa değil, bu yüzden ilk etapta düz inşa etmek gerekli

<?php for($a=[$b=$argv[1]];$b--;)$a=array_reduce($a,function($r,$v){return array_merge($r,range(1,$v));},[]);print_r($a);

Düz tutmak iyi bir fikirdir. Ancak geri arama işlevleri de kısa değildir. Seni 15 byte yendi. Kısa etiketle 4 bayt <?veya etiketle 6 bayt kaydedebilirsiniz -r.
— Titus

2

Haskell, 33 bayt

f n=iterate(>>= \a->[1..a])[n]!!n

Bir baytı kaydettiği için nimi'ye teşekkürler.

Pointfree sürümü daha uzundur (35 bayt):

(!!)=<<iterate(>>= \a->[1..a]).pure

iterate(>>= \a->[1..a])bir bayt daha az.
— nimi

2

JavaScript (Firefox 30-57), 63 60 bayt

f=n=>eval(`[${`for(n of Array(n+1).keys())`.repeat(n--)}n+1]`)

@ Xnor'ın Python cevabının portu.


Bunu Firefox 42 ( SyntaxError: missing : in conditional expression) ve Babel ( Unexpected token (1:21)) ile denedim . Neyi yanlış yapıyorum?
— Dennis

@Dennis Üzgünüm, ama hiçbir fikrim yok; Aslında bir sebepten dolayı makinelerimden birinde Firefox 42 var ve iki kez kontrol ettim ve orada iyi çalıştı. (Ayrıca emin olmak için Firefox 37 ve 47'yi kontrol ettim.)
— Neil

Hah, sayfa yenilenmedi ve eski sürümünüzü test ettim. Yeni olan gayet iyi çalışıyor.
— Dennis

@Dennis Ah, bu )versiyona bir şekilde başıboş bir şekilde akmış gibi görünüyor .
— Neil

1

J, 18 bayt

([:;<@(1+i.)"0)^:]

Meydan okumada açıklanan sürece dayalı, doğrudan ileri yaklaşım.

kullanım

   f =: ([:;<@(1+i.)"0)^:]
   f 1
1
   f 2
1 1 2
   f 3
1 1 1 2 1 1 2 1 2 3
   f 4
1 1 1 1 2 1 1 1 2 1 1 2 1 2 3 1 1 1 2 1 1 2 1 2 3 1 1 2 1 2 3 1 2 3 4

açıklama

([:;<@(1+i.)"0)^:]  Input: n
                 ]  Identity function, gets the value n
(     ...     )^:   Repeat the following n times with an initial value [n]
      (    )"0        Means rank 0, or to operate on each atom in the list
         i.           Create a range from 0 to that value, exclusive
       1+             Add 1 to each to make the range from 1 to that value
    <@                Box the value
 [:;                  Combine the boxes and unbox them to make a list and return
                    Return the final result after n iterations

1

Pyth, 8 bayt

usSMGQ]Q

Çevrimiçi deneyin!

usSMGQ]Q   input as Q

u    Q     repeat for Q times,
      ]Q   starting as [Q]:

  SMG          convert each number in the array to its range
 s             flatten

           then implicitly prints the result.

1

Jöle, 7 bayt

Hızlı, Dennis cevap vermeden önce (jk)

WR€F$³¡

Çevrimiçi deneyin!

WR€F$³¡  Main monadic chain. Argument: z

W        Yield [z].
     ³¡  Repeat the following z times:
 R€          Convert each number in the array to the corresponding range.
   F         Flatten the array.

1

F #, 63 bayt

fun n->Seq.fold(fun A _->List.collect(fun k->[1..k])A)[n]{1..n}

N'yi girdi olarak alan anonim bir işlev döndürür.

A'daki her k girişini [1..k] ile değiştirir, A = [n] ile başlayarak işlemi n kez tekrarlar.


1

Swift 3, 58 Bayt

N, girişe ayarlanmış olarak, doğrudan bir oyun alanında çalışmak anlamına geliyordu:

var x=[n];for i in 0..<n{x=x.reduce([]){$0+[Int](1...$1)}}

Ungolfed, en kısa el gösterimi geri döndürüldü:

let n = 3 //input

var x: Array<Int> = [n]
for i in 0..<n {
    x = x.reduce(Array<Int>[], combine: { accumulator, element in
        accumulator + Array<Int>(1...element)
    })
}

1

Java, 159 Bayt

prosedür

int[] q(int y){int z[]=new int[]{y};for(int i=0;i<y;i++){int d=0,a=0;for(int c:z)d+=c;int[]r=new int[d];for(int c:z)for(int j=0;j<c;)r[a++]=++j;z=r;}return z;}

kullanım

public static void main(String[] args){String out = "["; int [] b = q(6);for(int c:b)out+=c+", ";System.out.println(out+"]");}

public static int[] q(int y){int z[]=new int[]{y};for(int i=0;i<y;i++){int d=0,a=0;for(int c:z)d+=c;int[]r=new int[d];for(int c:z)for(int j=0;j<c;)r[a++]=++j;z=r;}return z;}

Örnek çıktı:

[1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, ]

1

Python 2, 69 68 66 bayt

def f(n):a=[n];exec'a=sum([range(1,i+1)for i in a],[]);'*n;print a

Düzenleme: @xnor sayesinde 1 bayt kaydedildi. @ Dennis ♦ sayesinde 2 bayt tasarruf edildi.


Etraftaki parensleri çıkarabilirsiniz exec. Python 2'de, bir işlev değil, bir anahtar kelime. Ben 68 byte btw sayıyorum.
— Dennis

@Dennis Ah, bu yanlış saydığım ve başlangıçta 69 bayt olduğu anlamına geliyor ...
— Neil

1

Bash + GNU yardımcı programları, 49

  • @Dennis sayesinde 1 bayt tasarruf edildi.

Borulu özyinelemeli fonksiyonlar FTW!

f()((($1))&&xargs -l seq|f $[$1-1]||dd)
f $1<<<$1

nkomut satırında iletilir. Çıktı satırsonu ile ayrılmıştır.

ddSTDERR'a gönderilecek neden istatistiklerinin kullanımı . Bence bu iyi, ama değilse , 1 ekstra bayt maliyetiyle dddeğiştirilebilir cat.


1
STDERR'a harici çıkışa varsayılan olarak izin verilir. Bir bayt kaydetmek için {...;}ile değiştirebilirsiniz (...).
— Dennis

@Dennis evet, elbette! Görünüşe göre bu ipucunu benden aldın :)
— Digital Trauma

0

Perl 5, 53 bayt

Bir altyordam:

{($i)=@_;for(1..$i){my@c;push@c,1..$_ for@_;@_=@c}@_}

Hareket halindeyken görün

perl -e'print "$_ " for sub{($i)=@_;for(1..$i){my@c;push@c,1..$_ for@_;@_=@c}@_}->(3)'


0

PHP, 100 98 bayt

İle çalıştırın php -r '<code>' <n>.

for($a=[$n=$argv[1]];$n--;$a=$b)for($b=[],$k=0;$c=$a[$k++];)for($i=0;$i++<$c;)$b[]=$i;print_r($a);

Her yinelemede 1'den (ilk değer kaldırıldı) boşalana kadar döngü yapan geçici bir kopya oluşturun $a.


Bu ikisi hareketsizdir ve muhtemelen 100 baytta kalacaktır:

for($a=[$n=$argv[1]];$n--;)for($i=count($a);$i--;)array_splice($a,$i,1,range(1,$a[$i]));print_r($a);

Her yineleme döngüsünde, her sayıyı bir aralıkla değiştirerek dizi boyunca geriye doğru döner.

for($a=[$n=$argv[1]];$n--;)for($i=$c=0;$c=$a[$i+=$c];)array_splice($a,$i,1,range(1,$c));print_r($a);

Dizinin her bir yineleme döngüsünde dizini önceki sayıya göre artırmak ve dizine alınan her öğeyi bir aralıkla değiştirmek

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.