Euler'ın totient işlevini hesapla


27

Arka fon

Euler totient işlevi φ(n)daha az tam sayı sayısı olarak tanımlanmıştır ya da eşittir ngöre nispeten büyük asal olan n, olduğu, muhtemel değerlerinin sayısı xiçinde 0 < x <= nolan gcd(n, x) == 1. Biz yaşadım bir kaç totient - İlgili zorlukları önce, ama sadece bunu hesaplarken asla tek.

Ttient işlevinin tüm sayılarla eşlenmesi , OEIS A000010'dur .

Meydan okuma

Bir tamsayı verildiğinde n > 0hesaplayın φ(n). Komut satırı argümanları, standart girdiler, fonksiyon argümanları veya makul herhangi bir şeyle girdi alabilirsiniz. Çıktıyı standart çıktı, iade değerleri veya makul herhangi bir şeyle verebilirsiniz. Anonim işlevler kabul edilebilir. Sen girdi mesela depolama tamsayılar, sizin doğal yöntem taşma olmayacak varsayabiliriz intC, ancak gerekir 255 girdileri kadar destek Dil yerleşik bir totient fonksiyonu, bunu kullanamaz varsa.

Örnekler

φ(1) => 1
φ(2) => 1
φ(3) => 2
φ(8) => 4
φ(9) => 6
φ(26) => 12
φ(44) => 20
φ(105) => 48

Bayt cinsinden en kısa cevap kazanır. Diliniz UTF-8 dışında bir kodlama kullanıyorsa, cevabınıza yazınız.


4
Eh oldu bu gün. Tekrarlanan uygulamanın yeterli bir fark yarattığını düşünmüyorum, ancak bir şeyi diğerini kapatırsam, çünkü tekrarlanan uygulamanın bir şey eklediğini düşünmüyorum. Bununla birlikte, en büyük fark, birinin yerleşik yapıya izin vermesi ve buna izin vermemesidir.
Martin Ender

Görünüşe göre yerleşiklere verilen cevapların cevaplar üzerinde etkisi yoktur
Julie Pelletier,

2
@JuliePelletier Neden bu? Mathematica'mın cevabı aksi takdirde 19 byte daha kısa olurdu:EulerPhi
Martin Ender

@JuliePelletier GCD'ye izin verilir, çünkü GCD'nin hesaplanması çözülmek istenen sorun değildir. Elbette, bu cevaplardaki bayt sayımını artırabilir, ancak mücadeleyi daha iyi hale getirmez. Netleştirmek için düzenleyeceğim.
bkul

Yanıtlar:


13

Mathematica, 27 22 bayt

Range@#~GCD~#~Count~1&

Bir tamsayı alan ve döndüren adsız bir işlev.

Burada açıklanacak pek bir şey yok, bunun dışında @işlev çağrıları için ön ek notasyonu ve ~...~(soldan ilişkisel) ek notasyonu olması, yani yukarıdakiyle aynı:

Count[GCD[Range[#], #], 1] &

11

MATL, 7 bayt

t:Zd1=s

Sen edebilirsiniz TryItOnline . En basit fikir, 1'den N'ye bir vektör yapın ve N ile her elemanın gcd'si alınır ( Zdgcd yapar). Ardından, hangi öğelerin 1'e eşit olduğunu bulun ve cevabı bulmak için vektörü toplayın.


Yerleşik _Zpmerak edenler içindir.
David

10

J, 9 bayt

(-~:)&.q:

Bu, Jsoftware'in totient işlevlerine ilişkin denemesine dayanır .

Verilen n = p 1 E 1s 2 E 2 ∙∙∙ s k e k s k bir ana faktör olan n , totient fonksiyonu φ ( n ) = φ ( s 1 e 1 ) ∙ φ ( s 2 , e 2 ) ∙∙∙ φ ( p k e k ) = ( p 1 - 1) p 1 e 1 - 1 ∙ ( p 2 - 1) p 2e 2 - 1 ∙∙∙ ( p k - 1) p k e k - 1 .

kullanım

   f =: (-~:)&.q:
   (,.f"0) 1 2 3 8 9 26 44 105
  1  1
  2  1
  3  2
  8  4
  9  6
 26 12
 44 20
105 48
   f 12345
6576

açıklama

(-~:)&.q:  Input: integer n
       q:  Prime decomposition. Get the prime factors whose product is n
(   )&     Operate on them
  ~:         Nub-sieve. Create a mask where 1 is the first occurrence
             of a unique value and 0 elsewhere
 -           Subtract elementwise between the prime factors and the mask
     &.q:  Perform the inverse of prime decomposition (Product of the values)

Yenileme kullanarak J'de başka bir çözüm yapmak için totient'in çarpımsal olduğu gerçeğini kullanın :)
Leaky Nun

@ LeakyNun Faktoringin golf oynamak için kolay bir yol olduğunu sanmıyorum, çünkü yinelemeli formu [:*/@({.(^-(^<:)){:)2&p:kullanmak bile asalları ve üslerini almak için yerleşimi kullanmak bile 24 byte gerektiriyor. Ya da belki daha kısa bir yol var ve onu göremiyorum.
mil,


7

Haskell, 28 bayt

f n=sum[1|1<-gcd n<$>[1..n]]

Haskell'in sabitler eşleşmesini sabitler . Buradaki püf noktaları golf oynamak için oldukça standart, ancak genel bir izleyici kitlesine açıklayacağım.

İfadesi gcd n<$>[1..n]haritalar gcd nüzerine [1..n]. Başka bir deyişle, hesaplar gcdile ngelen her numaranın 1için n:

[gcd n i|i<-[1..n]]

Buradan istenen çıktı 1giriş sayısıdır , ancak Haskell'de bir countişlev yoktur. Golf oynamak için çok uzun süren filtersadece tutmanın 1ve sonucu elde etmenin deyimsel yolu length.

Bunun yerine, sonuçtaki listeyle ilgili filterbir liste tarafından simüle edilir . Genellikle, liste kavramaları değerleri olduğu gibi değişkene bağlar , ancak Haskell bu durumda sabit olan bir modelin eşleşmesine izin verir .[1|1<-l]l[x*x|x<-l]1

Yani, [1|1<-l]bir üretme 1her maç 1etkin bir sadece ayıklanması, 1orijinal listenin 's. sumOnu çağırmak , uzunluğunu verir.


Sanırım bu gerçekten anladığım ilk Haskell cevabı. Çok güzel bir dil, ama diğerlerinden çok farklı .
bkul

Vay canına, kalıp eşleştirme işleminin anlama listelerinde ayrıntılı olması gerektiğini düşündüm. Numara için teşekkürler.
Damien,

7

Python 2,44 bayt

f=lambda n,d=1:d/n or-f(d)*(n%d<1)-~f(n,d+1)

Daha az golf oynadı:

f=lambda n:n-sum(f(d)for d in range(1,n)if n%d<1)

Bölenlerin Euler kulelerinin ntoplamının aşağıdakilere sahip olduğu formülünü kullanır n:

görüntü tanımını buraya girin

Ardından değeri ϕ(n)tekrarlayan bir şekilde nönemsiz bölenler üzerinden eksi olarak hesaplanabilir . Etkili, bu kimlik işlevi Möbius inversiyonu yapıyor . Aynı yöntemi Möbius fonksiyonunu hesaplamak için bir golfde kullandım .

Başlangıç değeri yayılması, daha iyi bir temel durum ile 1 bayt kaydetmek için Dennis sayesinde +niçine +1her biri için nolduğu gibi yapılır döngüler -~.



5

J, 11 bayt

+/@(1=+.)i.

kullanım

>> f =: +/@(1=+.)i.
>> f 44
<< 20

nerede >>STDIN ve <<STDOUT ise.

açıklama

+/ @ ( 1 = +. ) i.
               │
   ┌───────────┴┐
 +/@(1=+.)      i.
   │
 ┌─┼──┐
+/ @ 1=+.
    ┌─┼─┐
    1 = +.

>> (i.) 44            NB. generate range
<< 0 1 2 3 4 ... 43
>> (+.i.) 44          NB. calculate gcd of each with input
<< 44 1 2 1 4 ... 1
>> ((1=+.)i.) 44      NB. then test if each is one (1 if yes, 0 if no)
<< 0 1 0 1 0 ... 1
>> (+/@(1=+.)i.) 44   NB. sum of all the tests
<< 20

Dikey ağaç temsilini nasıl aldınız? Sadece yatay üretildiğini düşündüm.
mil,

@miles Ben yazdım.
Sızdıran Rahibe

5

Python> = 3.5, 76 64 58 bayt

LeakyNun'a 12 (!) Baytlık golf attığı için teşekkür ederiz.

6 byte kapalı golf için Sp3000'e teşekkürler.

import math
lambda n:sum(math.gcd(n,x)<2for x in range(n))

Python'un okunabilirliğini çok seviyorum. Bu, golf oynamak bile olsa mantıklı geliyor.


1
lambda n:sum(gcd(n,x)<2for x in range(n))
Leaky Nun

Oh, Python sonunda gcdmatematik modülüne eklendi ! Bilmiyordum.
rubik

5

Regex (ECMAScript), 131 bayt

Deadcode sayesinde en az -12 bayt (sohbet halinde)

(?=((xx+)(?=\2+$)|x+)+)(?=((x*?)(?=\1*$)(?=(\4xx+?)(\5*(?!(xx+)\7+$)\5)?$)(?=((x*)(?=\5\9*$)x)(\8*)$)x*(?=(?=\5$)\1|\5\10)x)+)\10|x

Çevrimiçi deneyin!

Çıktı eşleşmenin uzunluğu.

ECMAScript regex'leri bir şeyi saymayı oldukça zorlaştırır. Bir döngü dışında tanımlanmış herhangi bir backref, döngü sırasında sabit olacaktır, bir döngü içinde tanımlanmış herhangi bir backref, döngü sırasında sıfırlanacaktır. Bu nedenle, döngü yinelemeler arasında durumu taşımanın tek yolu, geçerli eşleşme konumunu kullanmaktır. Bu tek bir tamsayı ve sadece azaltabilir (peki, pozisyon artar, ancak kuyruğun uzunluğu azalır, ve matematik yapabileceğimiz şey budur).

Bu kısıtlamalar göz önüne alındığında, sadece kopya sayısı saymak imkansız görünüyor. Bunun yerine, alıcıyı hesaplamak için Euler formülünü kullanıyoruz .

İşte sözde kodda nasıl göründüğü:

N = input
Z = largest prime factor of N
P = 0

do:
   P = smallest number > P that’s a prime factor of N
   N = N - (N / P)
while P != Z

return N

Bununla ilgili iki şüpheli şey var.

Birincisi, girişi yalnızca mevcut üründen kurtarmıyoruz, bu durumda girdinin ana faktörlerine nasıl ulaşabiliriz? İşin püf noktası (N - (N / P)), N ile aynı asal faktörleri> P ile aynıdır. Yeni asal faktörler <P kazanabilir, ancak bunları yine de göz ardı ediyoruz. Bunun sadece işe yaradığını, çünkü en küçükten en büyüğe doğru asal çarpanları yinelememizin, diğer yoldan başarısız olmanın yol açacağını unutmayın.

İkincisi, döngü yinelemelerinde iki sayıyı hatırlamamız gerekir (P ve N, Z sabit olduğundan beri sayılmaz) ve sadece bunun imkansız olduğunu söyledim! Neyse ki, bu iki sayıyı tek bir seferde çevirebiliriz. Döngünün başlangıcında, N'nin her zaman Z'nin bir katı olacağına, P'nin de her zaman Z'den küçük olacağına dikkat edin. Bu nedenle, N + P'yi sadece hatırlayabilir ve P'yi bir modulo ile ayıklayabiliriz.

İşte biraz daha ayrıntılı sözde kodu:

N = input
Z = largest prime factor of N

do:
   P = N % Z
   N = N - P
   P = smallest number > P that’s a prime factor of N
   N = N - (N / P) + P
while P != Z

return N - Z

Ve burada yorumlanmış regex:

# \1 = largest prime factor of N
# Computed by repeatedly dividing N by its smallest factor
(?= ( (xx+) (?=\2+$) | x+ )+ )

(?=
        # Main loop!
        (
                # \4 = N % \1, N -= \4
                (x*?) (?=\1*$)

                # \5 = next prime factor of N
                (?= (\4xx+?) (\5* (?!(xx+)\7+$) \5)? $ )

                # \8 = N / \5, \9 = \8 - 1, \10 = N - \8
                (?= ((x*) (?=\5\9*$) x) (\8*) $ )

                x*
                (?=
                        # if \5 = \1, break.
                        (?=\5$) \1
                |
                        # else, N = (\5 - 1) + (N - B)
                        \5\10
                )
                x
        )+
) \10

Ve bir bonus olarak…

Regex (ECMAScript 2018, maç sayısı), 23 bayt

x(?<!^\1*(?=\1*$)(x+x))

Çevrimiçi deneyin!

Çıktı, eşleşme sayısıdır. ECMAScript 2018, değişken uzunluktaki geriye dönük gösterimi (sağdan sola değerlendirilir) sunar;

Bunun bağımsız olarak Leaky Nun'un Retina çözümü tarafından kullanılan aynı yöntem olduğu ve regex'in aynı uzunluktaki ( ve değiştirilebilir ) olduğu ortaya çıktı. Buradan ayrılıyorum, çünkü bu yöntemin ECMAScript 2018'de (ve sadece .NET'te) çalışması ilginç olabilir.

                        # Implicitly iterate from the input to 0
x                       # Don’t match 0
 (?<!                 ) # Match iff there is no...
                 (x+x)  # integer >= 2...
         (?=\1*$)       # that divides the current number...
     ^\1*               # and also divides the input

4

Perl 6 ,  26 24  22 bayt

{[+] (^$^n Xgcd $n) X== 1}
{+grep 2>*,(^$_ Xgcd$_)}
{[+] 2 X>(^$_ Xgcd$_)}

Açıklama:

{
  [+] # reduce using &infix:<+>
    2
    X[>] # crossed compared using &infix:«>»
    (
      ^$_    # up to the input ( excludes input )
      X[gcd] # crossed using &infix:<gcd>
      $_     # the input
    )
}

Örnek:

#! /usr/bin/env perl6
use v6.c;

my  = {[+] 2 X>(^$_ Xgcd$_)};

say φ(1) # 1
say φ(2) # 1
say φ(3) # 2
say φ(8) # 4
say φ(9) # 6
say φ(26) # 12
say φ(44) # 20
say φ(105) # 48

say φ 12345 # 6576


4

Julia, 25 bayt

!n=sum(i->gcd(i,n)<2,1:n)

Bu basittir - sumfonksiyon, toplanmadan önce uygulayacağı bir fonksiyon vermenizi sağlar - temelde koşma mapve sonra eşdeğerdir sum. Bu doğrudan göreceli asal sayıları sayısından daha az sayar n.


4

Python 2, 57 bayt

f=lambda n,k=1,m=1:n*(k>n)or f(n-(n%k<m%k)*n/k,k+1,m*k*k)

İdeone üzerinde test et .

Arka fon

By Euler ürün formülü ,

Euler'in ürün formülü

nerede φ totient belirtir ve p sadece asal sayılar üzerinde değişir.

Asalları tanımlamak için, Wilson teorisinin bir sonucunu kullanırız :

Wilson teoreminin bir sonucu

Nasıl çalışır

Her zaman, m değişkeni , k - 1 faktörünün karesine eşit olacaktır . Aslında, argümanları varsayılan olarak k = 1 ve m = 0 olarak adlandırdık! 2 = 1 .

Sürece k ≤ n , n*(k>n)değerlendirir için 0 ve kod aşağıda orçalıştırılmaktadır.

Hatırlama m%kverecektir 1 ise m asal ve 0 değilse. Bu araçlar x%k<m%kverecektir Gerçek ve her iki yalnızca eğer k bir asal sayıdır ve x bölünemeyen bir k .

Bu durumda, (n%k<m%k)*n/kverimler N / K , ve çıkarılmadan n ile önceki değerini değiştirir n (1-1 / k) Euler ürün formülde olduğu gibi. Aksi takdirde, 0(n%k<m%k)*n/k verimi verir ve n değişmez.

Yukarıdaki işlem sonra Artım k ve çok-katlı m "eski" değeri k 2 , böylece arasında arzu edilen bir ilişkinin muhafaza, k ve m , o zaman çağrı f güncelleştirilmiş argümanları ile yinelemeli.

Bir kez k aşan , n , n*(k>n)olarak değerlendirilir n işlevi tarafından döndürülen,.


4

Ruby, 32 bayt

->n{(1..n).count{|i|i.gcd(n)<2}}

n tamsayısını alan ve (1..n) aralığındaki kaç tamsayının n ile aynı olduğu sayılarını döndüren bir lambda.


Merhaba, PPCG'ye hoş geldiniz! Bu harika bir ilk yazı.
NoOneIsHere

Programlama Bulmacaları ve Code Golf'a Hoş Geldiniz! Bu harika bir ilk çözüm, devam et!
bkul

Teşekkürler, o kadar kısa değil, iyileştirmenin mümkün olup olmadığını merak ediyorum.
Redouane Red

3

Brachylog , 25 bayt

:{:1e.$pdL,?$pd:LcCdC}fl.

açıklama

Brachylog'da henüz dahili GCD yok, bu yüzden iki sayının da ortak faktörleri olmadığını kontrol ettik.

  • Ana tahmin:

    :{...}fl.             Find all variables which satisfy predicate 1 when given to it as
                          output and with Input as input.
                          Unify the Output with the length of the resulting list
    
  • Tahmin 1:

    :1e.                  Unify Output with a number between Input and 1
        $pdL              L is the list of prime factors of Output with no duplicates
            ,
             ?$pd:LcC     C is the concatenation of the list of prime factors of Input with
                          no duplicates and of L
                     dC   C with duplicates removed is still C
    

3

Pyth, 6 bayt

smq1iQ

Çevrimiçi deneyin!

/iLQQ1

Çevrimiçi deneyin!

açıklama

smq1iQ     input as Q
smq1iQdQ   implicitly fill variables

 m     Q   for d in [0 1 2 3 .. Q-1]:
    iQd        gcd of Q and d
  q1           equals 1? (1 if yes, 0 if no)
s          sum of the results


/iLQQ1     input as Q

 iLQQ      gcd of each in [0 1 2 3 .. Q-1] with Q
/    1     count the number of occurrences of 1

3

PowerShell v2 +, 72 bayt

param($n)1..$n|%{$a=$_;$b=$n;while($b){$a,$b=$b,($a%$b)};$o+=!($a-1)};$o

PowerShell'de kullanılabilir bir GCD işlevi bulunmuyor, bu yüzden kendim almam gerekti.

Bu girdi alır $narasında değişir, daha sonra 1hiç $nbir ilmek içine ve boru |%{...}. Her yineleme iki yardımcı değişkenleri ayarlamak $ave $bsonra bir GCD yürütmek whiledöngü. Biz o kontrol ediyoruz Her yineleme $bhala sıfır olmayan ve daha sonra tasarruf $a%$betmek $bve önceki değeri $bile $abir sonraki döngü için. Daha sonra çıktı değişkenimize $aeşit olup olmadığını biriktiririz . For döngüsü tamamlandıktan sonra, boru hattına yerleştiririz ve çıktı kapalıdır.1$o$o

whileDöngünün nasıl çalıştığına bir örnek olarak , düşünün $n=20ve biz varız $_=8. İlk kontrol var $b=20, bu yüzden döngüye giriyoruz. İlk önce $a%$bveya aynı olana aynı anda 8%20 = 8ayarlananı hesaplıyoruz . Kontrol et ve ikinci yinelemeye girelim. Sonra hesaplamak ve bu seti , daha sonra ayarlamak için . Kontrol et ve üçüncü yinelemeye girelim. Biz hesaplamak ve bu seti , daha sonra ayarlamak için . Kontrol edin ve döngüden çıkarız , böylece GCD (8,20) olur . Böylece, öyleyse biz de bunu saymıyoruz.$b20$a8=020%8 = 4$b$a84=08%4 = 0$b$a40=0$a = 4!($a-1) = !(4-1) = !(3) = 0$o += 0


3

Faktör, 50 bayt

[ dup iota swap '[ _ gcd nip 1 = ] filter length ]

Bir dizi (yapar iyota ) , n ve köriler n alır işlev gcd xn tüm değerleri için , 0 <x = <n = sonucu ise, testlerin 1 . Filtre sonucu olmadığına orijinal aralığını gcd xn oldu 1 ve onun almak uzunluğu .


[ dup iota swap '[ _ gcd nip 1 = ] map sum ]6 bayt kaydeder (bence - Faktör ile pek tecrübeli değil).
bkul

@bkul Öneriniz için teşekkürler! : D Ne yazık ki, Faktör'deki sayılar ve t/f(semboller) arasında hiçbir uyumluluk yoktur , bu nedenle bunu gerçekleştirmenin tek yolu [ dup iota swap '[ _ gcd nip 1 = 1 0 ? ] map sum ]mevcut çözümle aynı uzunluktadır.
kedi,

Ah, dang. Güçlü yazım tekrar grev.
bkul

@bkul Eh, güçlü yazarak ve minnettarım TYPED:içinde gerçek Faktör kodu: P
Kedi


2

Retina, 36 29 bayt

Martin Ender sayesinde 7 bayt.

.+
$*
(?!(11+)\1*$(?<=^\1+)).

Çevrimiçi deneyin!

açıklama

İki aşama vardır (komutlar).

İlk bölüm

.+
$*

Girdiyi bu sayılara çeviren basit bir regex ikamesidir.

Örneğin, 5dönüştürülürdü 11111.

İkinci sahne

(?!(11+)\1*$(?<=^\1+)).

Bu regex koşulu karşılayan konumlarla eşleşmeye çalışır (girişle eşzamanlı) ve ardından eşleşme sayısını döndürür.


Lookbehind, bir lookahead içinde olmadığı sürece geri gelmiyor mu?
Sızdıran Rahibe,

Genel bakış genel olarak geri dönüş yapmıyor.
Martin Ender,

O zaman regex her böleni nasıl test etti?
Sızdıran Rahibe,

1
Eh onlar bunu sürece onları bırakmayın olarak sarfınazar. Motor, etrafa baktığı sürece, etrafa bakmak için mümkün olan her şeyi deneyecektir (veya olumsuz bir bakışta başarısız olması durumunda). Ancak, görünüm geçtikten sonra, başarısız olduktan sonra bir şey olursa motor geriye doğru hareket etmeyecektir (daha sonra, aynı zamanda görünüşün önündeki şeyleri de geriye almaya başlamaz ve her şeyi yeniden değerlendirmek zorunda kalırsa).
Martin Ender,

2

Ortak Lisp, 58 bayt

(defun o(x)(loop for i from 1 to x if (=(gcd x i)1)sum 1))

Bu, verilen n'den 1'e kadar sayım yapan ve gcd = 1 ise toplamı artıran basit bir döngüdür. Neredeyse en kısa değil ama oldukça basit.


CL'nin bir tür anonim işlevi yok mu?
kedi

2

MATLAB / Octave, 21 bayt

@(n)sum(gcd(n,1:n)<2)

ansTamsayı nile tek giriş olarak çağırılabilecek isimsiz bir fonksiyon yaratır :ans(n)

Çevrimiçi Demo




1

Aslında, 11 bayt

;╗R`╜g`M1@c

Çevrimiçi deneyin!

açıklama

;╗R`╜g`M1@c   register stack             remarks

                       44
;                      44 44
 ╗            44       44
  R           44       [1 2 3 .. 44]
       M      44       10                for example
    ╜         44       10 44
     g        44       2
              44       [1 2 1 .. 44]     gcd of each with register
        1     44       [1 2 1 .. 44] 1
         @    44       1 [1 2 1 .. 44]
          c   44       20                count

Yerleşik

Çevrimiçi deneyin!


Alternatif ;╗R`╜g1=`MΣolarak aynı bayt sayısı için de kullanabilirsiniz
Mego

1

JavaScript (ES6), 67 bayt

f=n=>[...Array(n)].reduce(r=>r+=g(n,++i)<2,i=0,g=(a,b)=>b?g(b,a%b):a)


1

APL, 7 bayt

+/1=⊢∨⍳

Bu, sağda bir tamsayı alan monadik bir fonksiyon trenidir. Buradaki yaklaşım açık olanıdır: sum ( +/) girişin GCD'sinin sayısı ve 1'den girişe ( ⊢∨⍳) olan sayılar 1'e ( ) eşittir 1=.

Burada dene


1

Haskell, 31 30 bayt

\n->sum[1|x<-[1..n],gcd n x<2]

@Damien sayesinde 1 bayt kaydedildi.

Gcd = 1 ile değerleri seçer, her birini 1'e eşler, sonra toplamı alır.


Sen yerine ==1göre<2
Damien'e

1

Toplu, 151 145 144 bayt

@echo off
set t=
for /l %%i in (1,1,%1)do call:g %1 %%i
echo %t%
exit/b
:g
set/ag=%1%%%2
if not %g%==0 call:g %2 %g%
if %2%==1 set/at+=1

Düzenleme: Gereksiz boşlukları kaldırarak 4 bayt kaydedildi. Kullanarak 1 bayt kaydedildi +=. Açıklıkta 1 byte Kaydedilen tolarak +=olarak bu yorumlayacaktır 0zaten. @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ sayesinde 1 byte kaydedildi.

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.