Pandigital Katlama


14

Bu CMC'den ilham alındı

0'dan büyük bir pozitif tamsayı verildiğinde, üzerinde aşağıdaki işlemi gerçekleştirin:

  • On tek basamağın ( 1234567890) tümü en az bir kez numaradaysa, sayıyı çıktılayın ve programdan çıkın
  • Aksi takdirde, sayıyı iki katına çıkarın ve sayıyı artırarak tekrarlayın.

Sayım 0'dan başlar ve girişin iki katına çıkarılma sayısıdır. Örneğin, giriş 617283945 olsaydı, bir kez ikiye katlanması gerekirdi, çünkü 1234567890'da 10 rakamın hepsi var.

Bu bir çok kısa kod kazanır. İsterseniz giriş bir dize olarak alınabilir.

Test senaryoları

input => output

617283945 => 1
2 => 67
66833 => 44
1234567890 => 0
100 => 51
42 => 55

Girişi dize olarak alabilir miyiz?
Stephen

@Stephen girdiyi dize olarak alabilirsiniz.
caird coinheringaahing

3
Herhangi biri için pandigital gibi nbazı varlıklar var mı? Bir kanıt görmek isterim. knk
shooqie

1
@bfontaine Sohbet Mini Mücadelesi
caird coinheringaahing

3
@shooqie Kanıtı! 10'a kadar olan herhangi bir n için, aynı zamanda 10 ^ 10'a kadar da eşleşir ve bu nedenle nk'nin 1 mod 10 ^ 10 olduğu bazı k vardır. Daha sonra 1234567890 * nk = 1234567890 mod 10 ^ 10, bu nedenle her basamak mutlaka en az bir kez görünür. Değilse, 10 ile son sıfır olmayan basamaklı eşleşmeyi yapmak için gerektiği gibi 2, 5 veya 25 ile çarpın ve yukarıdaki ispat çalışmalarının bir varyantı (resmi olarak, n = 10 ^ m * p, burada p yukarıdaki koşulu karşılar , sonra 1234567890 * p * k yukarıdaki gibi pandigital'dir, bu nedenle 1234567890 * p * k * 10 ^ m = 1234567890 * k * n). :)
B. Mehta

Yanıtlar:



4

J , 24 23 bayt

(]1&(+$:)2**)10>#@~.@":

Çevrimiçi deneyin!

açıklama

(]1&(+$:)2**)10>#@~.@":  Input: integer n
                     ":  Format as string
                  ~.@    Unique
                #@       Length
             10>         Less than 10
           *             Multiply, gives n if previous was true, else 0
         2*              Multiply by 2
 ]                       Get the previous condition
  1&(   )                Execute this if true on 2n, else return 0
      $:                   Recurse
  1  +                     Add 1

Güzel. Sonuçları toplama konusunda sıkışıp kaldım, bu tür özyinelemeli işlevi kullanmayı düşünmedim.
Conor O'Brien

4

05AB1E , 11 10 bayt

Scottinet sayesinde -1 bayt

[D9ÝåË#·]N

Çevrimiçi deneyin! veya Test Paketi olarak

[          // Start infinity loop
 D         // Duplicate current value (or input)
  9Ý       // Push [0,1,2,3,4,5,6,7,8,9]
    å      // Does each exist in the current value
     Ë#    // Break if all equal (if every digit exists)
       ·   // Else double the current value
        ]N // End loop and print the number of times through the loop


@scottinet Teşekkürler! Bunu nasıl özlediğimi bilmiyorum.
Riley

@riley söyleyecekti use xama bu da 10 ... Güzel cevap. Düşünce xkurtulacaktı D, ama aynı fikir.
Sihirli Ahtapot Urn

3

Perl 6 ,31 28 bayt (27 karakter)

@Joshua sayesinde -3 bayt

{($_,2×*...*.comb.Set>9)-1}

Çevrimiçi deneyin!

Açıklama: Yinelemeli olarak liste oluşturmak için aynı yapı. İlk eleman verilen sayı (edilmektedir $_, her bir sonraki eleman) 'dir 2 kez önceki ( 2×*- 2 bayt karakteri rağmen hala 1'den bayt ucuz, çünkü biz × kullanmak 2 * *) ve biz sonuna durumuna kadar bunu *.comb.unique>9tatmin , yani sayıda 9'dan fazla benzersiz karakter olduğunda. (Teknik olarak, dizeyi bir karakter listesine .combayırırız, bir kümeye zorla .Set(elbette, kümeler her öğeyi yalnızca bir kez içerir) ve 9'u karşılaştırırız, bu da kümeyi sayısal bağlama zorlar; öğe sayısı.)

Son olarak, bu listeden 1 çıkarırız. Yine, liste sayısal bağlama zorlanır, bu yüzden döndürdüğümüz şey bu listenin uzunluğundan 1 daha azdır.


3 bayt kaydetmek .Setyerine kullanabilirsiniz .unique.
Joshua

@Joshua, iyi bir nokta! Teşekkür ederim. Bunu hiç düşünmemiştim.
Ramillies

3

JavaScript (ES6) + big.js , 84 74 73 70 bayt

Sayesinde ConorO'Brien @ önererek 10 bayt kaydetmek için big.js yerine bignumber.js arasında
sayesinde @Rick Hitchcock için -1 bayt
sayesinde @Shaggy -3 bayt

f=n=>[..."4"+2**29].every(d=>RegExp(d).test(c=Big(n)))?0:1+f(c.mul(2))

Girişi dize olarak alır; bu noktanın ötesinde gerçekleşen otomatik bilimsel gösterim dönüşümü nedeniyle yaklaşık 2 69'a kadar destekler .

Test Parçacığı

f=n=>[..."4"+2**29].every(d=>RegExp(d).test(c=Big(n)))?0:1+f(c.mul(2))

;[617283945, 2, 66833, 1234567890, 100, 42].forEach(t=>console.log(`f(${t}) = `+f(t)))
<script src="https://cdn.rawgit.com/MikeMcl/big.js/c6fadd08/big.min.js"></script>

Sonsuz aralık, 106 88 87 84 bayt

Sayıları dizelere dönüştürürken bilimsel gösterimi etkin bir şekilde devre dışı bırakmak için config seçeneğini kullanarak neredeyse sonsuz aralığa sahip olabiliriz.


Belki BigNumberbiti big.js kullanarak kısaltabilirsiniz ?
Conor O'Brien

@ ConorO'Brien Bu kesinlikle yardımcı olacaktır, özellikle de newbu isteğe bağlıdır. Güncellenecek, teşekkürler!
Justin Mariner

İle bir bayt kaydedin f=n=>[..."0123456789"].every(d=>RegExp(d).test(c=Big(n)))?0:1+f(c.mul(2)).
Rick Hitchcock

İsterseniz big.js'yi düşürebilmeniz için büyük tamsayıları işlememize gerek kalmaz ve sizi 61 bayta düşürür. Ve basamak dizesini aşağıdaki ile değiştirerek 3 bayt kaydedebilirsiniz "4"+2**29: tio.run/##BcGxDkAwEADQb2GQO41LNBZDbX7AKgbhKkSu0jZSX1/…
Shaggy

2

Jöle , 12 , 11 bayt

QLn⁵
ḤÇпL’

Çevrimiçi deneyin!

Hızlı gitmeli!

Açıklama:

        # Helper link, takes one argument 'z'
Q       # The unique digits of 'z'
 L      # Length
  n     # Does not equal
   ⁵    # 10
        #
        # Main link
  п    # While <condition> is true, run <body> and return all intermediate results
        # Condition:
 Ç      #   The helper link
        # Body:
Ḥ       #   Double the input
        # Now we have a list of all the 'z's that we passed to the helper link
    L   # Return it's length
     ’  # minus one




2

Haskell, 44 bayt

until(\c->all(`elem`show(n*2^c))['0'..'9'])(+1)0

2

Clojure, 115 89 82 bayt

-26 bayt sadece karakter listesini temsil etmek için bir dize kullanarak (duh, retrospect içinde) ve özyineleme kullanmaktan değiştirerek loopbirkaç optimizasyon yapmama izin verdi.

-7 bayt çağrısından kurtularak bigint. Görünüşe göre sadece taşmaya neden olmayacak girdileri ele almamız gerekiyor.

#(loop[n % c 0](if(empty?(remove(set(str n))"1234567890"))c(recur(* 2 n)(inc c))))

Pregolfed:

(defn pan [num]
  (loop [n num
         cnt 0]

    ; Remove all the characters from the stringified input
    ;  that are numeric. If the result is an empty list, all
    ;  the numbers were present.
    (if (empty? (remove (set (str n)) "1234567890"))
      cnt
      (recur (* 2 n) (inc cnt)))))

7 bayt every?yerine aşağıdakileri kullanarak tasarruf edebilirsiniz empty? (remove …:#(loop[n % c 0](if(every?(set(str n))"1234567890")c(recur(* 2 n)(inc c)))))
bfontaine

@bfontaine Oh, haklısın! Teşekkürler. Bunu daha sonra çözeceğim. Teşekkürler.
Carcigenicate,

2

Retina , 85 bayt

^\d*
$&¶$&
D`.(?=.*¶)
\d{10}¶\d+|\d*¶

[5-9]
#$&
T`d`EE
T`_d#`d_`\d#
#
1
}`\d\b
$&@
@

Çevrimiçi deneyin! Bağlantı, test senaryolarını içerir. Çalışma süresi için biraz optimize edilmiştir. Açıklama:

^\d*
$&¶$&

Giriş numarasını çoğaltın.

D`.(?=.*¶)

İlk kopyadaki rakamları tekilleştirin.

\d{10}¶\d+|\d*¶

10 basamak kalırsa, her iki sayıyı da silin, aksi takdirde ilk kopyayı silin. Her iki sayıyı da silmenin, döngünün geri kalanının çalışmamasına neden olduğunu unutmayın.

[5-9]
#$&

#Büyük rakamlardan önce a yerleştirin .

T`d`EE

Her basamağı iki katına çıkarın.

T`_d#`d_`\d#

Taşımaları ekleyin.

#
1

Önde gelen bir taşıma ile başa çıkmak.

}`\d\b
$&@

@10 basamağın tümü bulunana kadar bir ve döngü ekleyin .

@

Eklenenlerin sayısını yazdırın @.


2

APL (Dyalog Unicode) , 19 + 2 = 21 bayt

0∘{∧/⎕D∊⍕⍵:⍺⋄⍺+12×⍵}

Çevrimiçi deneyin!

Bu, 0'ı sol argüman olarak ve tamsayıyı sağ olarak alan bir ikili Dfn( d irect f unctio n ). Girdinin yalnızca tam sayı olması gerektiğinden 0∘, bayt sayısına bağımsız değişken için 2 bayt ekledim .

f←gerekli olmadığından bayt sayısına dahil edilmez . Test senaryolarının oluşturulmasını kolaylaştırır.

Nasıl çalışır:

Başlıklar: APL odasında sohbet ettikten sonra bunları bayt sayımından kaldırdım, çünkü işlev yapılması gerekeni yapıyor ve sonuçlar sadece APL'nin REPL varsayılan ayarları nedeniyle yanlış.

⎕FR←1287F loat R temsilini 128 bit ondalık olarak ayarlar (7, APL REPL'deki ondalık kodudur). P pint P girintisini 34 basamağa ⎕PP←34ayarlar . Bunların her ikisi de gereklidir, çünkü APL'nin büyük sayılar için varsayılan temsili, bunları büyük zaman kodunu dağıtan bilimsel gösterime (örn. 3.14159265359E15) dönüştürür.

0∘{∧/⎕D∊⍕⍵:⍺⋄⍺+12×⍵}  Dyadic Dfn
0                      Fixes 0 as the left argument  
          :             If
     D                 String representation of all digits [0, 9]
                       "is in"
        ⍕⍵              String representation of the input
   ∧/                   AND-reduction. Yields 1 (true) iff all digits are in the right argument.
                       return the left argument
                       Else
                 2×⍵    Double the right arg
             ⍺+1        increment the left arg
                       Recursively call this function with the new arguments.

2

Java 8, 132 110 87 74 bayt

n->{int c=0;for(;(n+"").chars().distinct().count()!=10;n*=2)c++;return c;}

@ OlivierGrégoire sayesinde -57 bayt .

Açıklama:

Burada deneyin. (Not: için test durumu 2devre dışı bırakılmıştır, çünkü 2 68'de durmalıdır , ancak boyutu long2 63 -1 ile sınırlıdır .)

n->          // Method with long parameter and integer return-type
  int c=0;   //  Count-integer, starting at 0
  for(;(n+"").chars().distinct().count()!=10;
             //  Loop (1) as long as the unique amount of digits in the number are not 10
    n*=2)    //    After every iteration: multiply the input by 2
   c++;      //   Increase the count by 1
             //  End of loop (1) (implicit / single-line body)
  return c;  //  Return the counter
}            // End of method

Bir girdi ve normal ifadeyi kullanarak eski 132 bayt yanıt String:

n->f(n,0)int f(String n,int c){String t="";for(int i=0;i<10;t+="(?=.*"+i+++")");return n.matches(t+".*")?c:f(new Long(n)*2+"",c+1);}

Burada deneyin. (Not: için test durumu 2devre dışı bırakılmıştır, çünkü biraz fazla özyineleme nedeniyle bir StackOverflowException özel durumuna neden olur.)

Dize'nin 9 basamağın tümünü içerip içermediğini kontrol etmek için toplam regex olur ^(?=.*0)(?=.*1)(?=.*2)(?=.*3)(?=.*4)(?=.*5)(?=.*6)(?=.*7)(?=.*8)(?=.*9).*$ve bu da tüm Dize için pozitif bir ileriye bakar.


1
111 bayt (evet, bayt sayısı bir "tek dijital" ;-)
Olivier Grégoire

2'nin asla çalışmayacağını unutmayın, çünkü 2^68ilk pandigital numarası olarak bekliyoruz , ancak Java'daki uzun ürünler sınırlıdır 2^63-1.
Olivier Grégoire

1
87 bayt . Teşekkürler reduce\ o /
Olivier Grégoire

1
74 bayt . Burada durdurma ;-)
Olivier Grégoire

1
@KevinCruijssen Eski yönteminizi sildiğinizi biliyorum, ancak sadece 10 rakamı eşleştirmek için aşağıdaki (?:.*?(\d)(?!.*\1)){10}
regex'i

1

Kabuk , 10 bayt

←Vö>9Lud¡D

Çevrimiçi deneyin!

açıklama

        ¡D    Repeatedly double the input, collecting results in a list
 V            Return the first index where the following is true
     L          The length of
       d        the digits
      u         with duplicates removed
  ö>9           is greater than 9
←             Decrement (as Husk uses 1-indexing)

1

Mathematica, 59 48 47 46 38 bayt

Jenny_mathy sayesinde -9 bayt.

If[!FreeQ[DigitCount@#,0],#0[2#]+1,0]&

Matematik kullanarak çevrimiçi deneyin!


2
46 bayt: Eğer [Tr [1 ^ Union @ IntegerDigits @ #] <10, # 0 [2 #] + 1,0] &
J42161217

Mathematica, anonim özyinelemeli işlevlere izin verir. :teşekkürler!
totallyhuman

2
38 bayt: Eğer [! FreeQ [DigitCount @ #, 0], # 0 [2 #] + 1,0] &
J42161217

Oh teşekkürler! BTW, `` kod için kullanılabilir, ancak önde gelen boşluğa izin verilmez. açalışacak ama `a` çalışmayacak.
totallyhuman

BTW bu altbilgiyi Print/@f/@{617283945,2,66833,1234567890,100,42}
TIO'da

1

R , 74 bayt

function(x){while(!all(0:9%in%el(strsplit(c(x,""),"")))){F=F+1;x=2*x};F*1}

Çevrimiçi deneyin! R'nin f(2), dilin büyük tam sayıları nasıl sakladığına ilişkin sınırlamalar nedeniyle yanlış cevap vereceğini unutmayın .

Açıklama: Pandigitalite testi için, girdi boş bir dize ile birleştirilerek bir karakter vektörüne zorlanır ve daha sonra tek tek rakamlara bölünür. Daha sonra, elde edilen vektörde 0: 9'un hepsinin mevcut olup olmadığını kontrol ederiz; değilse, sayacı artırır, girişi iki katına çıkarır ve tekrarlarız.

Sayaç FALSE olarak başlatan F kullanır. Sayısal olarak zorlandığından emin olmak için, geri dönmeden önce bir ile çarpıyoruz.


kullanmak c(x,"")için temiz bir hileel(strsplit(...))
Giuseppe

1

PowerShell , 70 69 bayt

for($n=[bigint]$args[0];([char[]]"$n"|group).count-le9;$n*=2){$i++}$i

Çevrimiçi deneyin!

(Python cevabının neredeyse iki katı kadar: - \)

Girdiyi alır $args[0], a olarak çevirir [bigint], kaydeder $n. forDöngü girer . Biz ister karşı kontrol Her yineleme $ntoprak rengi bir sonra bir dizeye dönüştürülür charzaman -array, Group-Object'birlikte d, bir sahip .count -lveya daha ess equal için 9. Yani, 10'a eşit olmasının tek yolu, her sayının en az bir rakamının 1234567890bulunmasıdır. Evet ise, döngüden çıkarız. Değilse, biz $n*=2ve devam ediyoruz . Döngü içindeki her yineleme, sadece artıyoruz $i. Döngüden çıktığımızda, basitçe çıktı alırız $i.

1234567890Her basamağın zaten hesaba katıldığı gibi bir giriş için, bunun PowerShell'de bir falsey değeri olan ve 0bir [int]. Bu uygun değilse, açıkça bir tamsayı olarak yayınlamak +için çıktının önüne bir koyabiliriz $i.

Roland Heath sayesinde bir bayt kurtardı.


Ne10 yerine le9 kullanabilir misiniz? Powershell'e aşina değilim, ama bu bir bayt kurtarabilir.
Roland Heath

@RolandHeath Gerçekten; İyi karar. Teşekkürler!
AdmBorkBork



0

Perl, 43 + 1 bayt

for$x(0..9){$_*=2,++$\,redo LINE if!/$x/}}{

-pBayrağı kullanma . Bu, yukarıdaki Xcali tarafından sağlanan çözüm üzerine kuruludur.


0

Swift 4 , 111 bayt

func p(_ x:Int,_ c:Int=0)->Int{if !(String(Set(String(x)).sorted())=="0123456789"){return p(x*2,c+1)};return c}

Not: Taşma nedeniyle x = 2 için çalışmaz.

Açıklama - x girişi önce dizgeye yazılır. Ardından Set (), yinelenen karakterleri kaldırır. Sonra sonuca uyacak şekilde sıralanır. Eşleşmezse, x iki katına çıkar ve sayaç artırılır.


1
uyandırmaz çünkü var 64 bittir. Aynı problemle ilgili başka birçok cevap var.
Naresh


Buna izin verilmesi gerektiğini düşünüyorsanız OP ile birlikte getirin. Bu yaygın bir uygulama olabilir, ancak OP özellikle izin vermedi ve test
vakaları

1
@FunkyComputerMan aslında, dilin sınırları dışındaki sayıları işleyemeyen cevaplara izin verdim, ancak Shaggy bu konuda soran yorumu silmiş gibi görünüyor. Bu cevap iyi.
caird coinheringaahing

0

Yakut, 46 45 39 38 bayt

def f n;n.digits.uniq[9]?0:1+f(n*2)end

Çevrimiçi deneyin!

Güncellemeler:

  1. -1 def f n;yerine kullanarak def f(n);.
  2. -6 …[9]yerine kullanarak….size==10
  3. -1 noktalı virgül kaldırarak

0

Japt , 15 bayt

LÆ*2pXÃbì_â Ê¥A

Dene


açıklama

Örtük tamsayı girişi U.

LÆ    Ã

Den tamsayı dizisi oluşturmak 0için 99ve bir fonksiyonu sayesinde her geçişte Xmevcut elemanıdır.

*2pX

Uile çarpılan 2 ile çarpılır X.

b

Aşağıdaki fonksiyondan geçtiğinde ilk öğenin dizinini döndürür.

ì_â

Bir basamak dizisine bölün ve kopyaları kaldırın.

Ê¥A

Dizinin uzunluğunu öğrenin ve eşitliğini kontrol edin 10.


Alternatif, 15 bayt

@*2pX)ìâ sÊ¥A}a

Dene


açıklama

Örtük tamsayı girişi U.

@            }a

İle başlayarak 0, aşağıdaki fonksiyondan geçerken geçerli olan ilk sayıyı Xgeçerli sayı olacak şekilde döndürün.

*2pX)

Yukarıdaki gibi, U2 ile çarpın X.

ìâ

Bir basamak dizisine bölün, kopyaları kaldırın ve bir tam sayıya yeniden katılın.

Bir dizgeye dönüştürün, uzunluğu alın ve bir tamsayıya dönüştürün.

¥A

İle eşitliğini kontrol edin 10.


0

QBIC , 48 bayt, nc

{q=1[z|q=q*instr(!:$,!a-1$)]~q>0|_Xp\p=p+1┘b=b*2

Teoride bu işe yarayacaktır. Ancak pratikte bu başarısız olur, çünkü QBasic bilimsel gösterime on basamaklı sayılar (en azından tüm rakamları elde etmek için gerekli) verir ... Bu yüzden onu rakipsiz olarak işaretledim.

açıklama

{             DO ad infinitum
q=1           set q to 1
[z|           FOR a = 1 to 10
q=q*instr     multiply q by the position
(!:$             - in 'b' (read from cmd line at start) cast to string (! ... $)
,!a-1$)          - of the number a-1 [0-9] cast to string
]             NEXT
~q>0          IF any character was not found, instr gave a 0. If q != 0 all digits were present
|_Xp          THEN quit, printing  p (is 0 at start)
\p=p+1        ELSE increase step counter p
┘b=b*2        and double 'b'

0

GNU dc, 61 bayt

Giriş yığının üstünden kopyalanır (aksi halde boş olmalıdır); çıktı yığının üstüne itilir.

[I~1r:ad0<s]ss[d1+r;a1=p]sp[d2*lfx]sh[0Sadlsxlpx11!=h]dsfxz1-

açıklama

Dizi değişkenini kullanırız, basamak varsa a1 a[d]değerini depolar d, aksi takdirde 0'a geri döner. GNU uzantısını ~tek bir komutta bölüm ve kalanı elde etmek için kullanıyoruz .

# populate a[0-9] from the digits
[I~1r:ad0<s]ss

# check pandigit
# return 1 more than lowest unset element of a[]
# start with stack=0
[d1+r;a1=p]sp

# Test for pandigit; double and repeat if needed
[dd+lfx]sh
[0Sadlsxlpx11!=h]dsfx

# We left one value on the stack for each doubling, plus the original
z1-

Bir bonus olarak, bu rastgele sayı tabanlarında çalışacaktır (sadece ondalık değil): giriş yarıçapını gerektiği gibi ayarlayın ( 11tanımındaki sabit fbu sayı tabanı kullanılarak okunacaktır, bu nedenle otomatik olarak doğrudur).

Ölçek

for i in 617283945 2 66833 1234567890 100 42
do
    printf '%s => ' $i
    dc -e $i \
       -e '[I~1r:ad0<s]ss[d1+r;a1=p]sp[dd+lfx]sh[0Sadlsxlpx11!=h]dsfxz1-' \
       -e p
done
617283945 => 1
2 => 67
66833 => 44
1234567890 => 0
100 => 51
42 => 55

0

REXX, 57 bayt

arg n
do b=0 while verify(0123456789,n)>0
  n=n*2
  end
say b

0

q / kdb + , 33 bayt

Çözüm:

(#)1_{x*2 1 min!:[10]in 10 vs x}\

Örnekler:

q)(#)1_{x*2 1 min!:[10]in 10 vs x}\[100]
51
q)(#)1_{x*2 1 min!:[10]in 10 vs x}\[1234567890]
0
q)(#)1_{x*2 1 min!:[10]in 10 vs x}\[42]
55

Açıklama:

Tüm baytlar eşitliktedir, bunu biraz daha aşağıya golf oynayabilir. Q'nun zarfını kullanır scan:

count 1_{x*2 1 min til[10] in 10 vs x}\ / ungolfed solution
        {                            }\ / scan over this lambda until it yields same result
                              10 vs x   / convert to base 10
                           in           / left list in right list, returns boolean list
                   til[10]              / range 0..9
               min                      / return the minimum of the list, 0 or 1
           2 1                          / list (2;1) indexed into with 0 or 1
         x*                             / return x multiplied by either 2 or 1
      1_                                / 1 drop, drop one element from front of list
count                                   / count the length of the list

Notlar:

Bilgi kistemine düşersek 25 baytlık bir çözüme sahip olabiliriz. Sayıyı bir karakter listesine dönüştürür:

q)\
  #1_{x*2 1@&/($!10)in$$x}\[100]
51
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.