Tekrarlanan! Faktoriyel!


34

Şununla karıştırılmaması gereken faktörleri bulun!

Giriş

Tamsayı faktöryel nhesaplanabilir

n!=n×(n1)×(n2)×(...)×2×1

Bu nispeten kolay ve yeni bir şey değil. Ancak, faktöriyel kadar uzatılabilir çift faktöriyellerinin , öyle ki

n!!=n×(n2)×(n4)×(...)×4×2
çift sayı için, ve
n!!=n×(n2)×(n4)×(...)×3×1
Tek sayılar için 1. Ancak çift faktörlülerle sınırlı değiliz. Örneğin
n!!!=n×(n3)×(n6)×(...)×6×3
ya da
n!!!=n×(n3)×(n6)×(...)×5×2
ya da
n!!!=n×(n3)×(n6)×(...)×4×1
başlangıç değerine bağlı olarak.

Özetle:

n!(k)={1if n=0nif 0<nkn((nk)!(k))if n>k
nerede
n!(k)=n!!k
Veya, düz İngilizce olarak:Faktör sayımı tekrar tekrar taban sayısından çıkarın ve sonuçta ortaya çıkan tüm pozitif tamsayıları çarpın.

Meydan okuma

Negatif olmayan bir tamsayı için herhangi bir tekrarlanan faktoringi hesaplayacak bir fonksiyon yazın.

Giriş

ya

  • Negatif olmayan bir baz on tamsayısı içeren bir dize, ardından 1 veya daha fazla ünlem işareti içeren bir dize. örneğin "6!"veya"9!!" veya "40!!!!!!!!!!!!!!!!!!!!".

veya

  • İki tamsayı ile gösterilen aynı değerler: bir negatif olmayan temel değer ve faktöriyel sayımı temsil eden bir pozitif değer. Bu, varsayılan G / Ç kurallarından herhangi bir formata göre yapılabilir.

Çıktı

Söz konusu hesaplamanın sonucu.

Meydan açıklamalar

  • 0!1tanımı gereği eşittir . Kodunuz bunu hesaba katmalıdır.
  • Faktöriyel sayısı ile sınırlıdır
    0<factorial countbase value
    dışında, bu dizi, ne olursa olsun çıkış serbesttir. Den başka0! , bu kuralın tek istisnası budur.

Örnekler

Input                              Output

3!!!                               3
0!                                 1
6!                                 720
9!!                                945
10!!!!!!!!                         20
40!!!!!!!!!!!!!!!!!!!!             800
420!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  41697106428257280000000000000000

Topraksız bir Python uygulamasıyla deneyin : Çevrimiçi deneyin!

Genel açıklamalar


6
Örnekler listesi 0!ancak zorluk ifadeleri faktoring sayısının temel değere eşit veya daha küçük olacağını söylüyor.
Jonathan Allan

1
3 olmaz !!! sıfır olmak n * (n-3) = 3 * (3-3) = 0
ouflak

2
@ouflak 1! gibi çalışıyorsa, gerçekten değil. Daha 1 gibi! = 1. 2 !! = 2. 3 !!! = 3. Hesaplama yoktur, çünkü özyinelemenin sonundasınız. Ürünlerde 0 yok, aksi halde her faktör sonunda 0'a düşecek.
V. Courtois

4
3!!!!!!!tanımsız olmamalı - sadece cevabı vermeli 3. Aynı 1!!=1(tanımsız değil). Ayrıca giriş şartnamenizde daima en az bir tane olacağı yazıyor !, bu nedenle ilk örnek 3şartnameye uymuyor.
Greg Martin

3
@ FabianRöling: Ama bu olan bu değil. Bunun (3!)!yerine, faktoring terimlerini kaldırıyor . Yanıltıcı bir isim; Faktörel fonksiyonu bir zincirde tekrar tekrar uygulayacağımı ve gerçekte ne olduğunu görmek için dikkatlice okumak zorunda kaldığımı farz ettim. Neyse ki soru açıkça açıklıyor. Daha iyi bir ad, faktörlü veya adımlı faktoring gibi bir şey olabilir.
Peter Cordes

Yanıtlar:



13

ArnoldC , 702 698 634 bayt

LISTEN TO ME VERY CAREFULLY f
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE n
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE p
GIVE THESE PEOPLE AIR
HEY CHRISTMAS TREE r
YOU SET US UP 1
HEY CHRISTMAS TREE c
YOU SET US UP 0
STICK AROUND n
GET TO THE CHOPPER r
HERE IS MY INVITATION r
YOU'RE FIRED n
ENOUGH TALK
GET TO THE CHOPPER n
HERE IS MY INVITATION n
GET DOWN p
ENOUGH TALK
GET TO THE CHOPPER c
HERE IS MY INVITATION 0
LET OFF SOME STEAM BENNET n
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE c
GET TO THE CHOPPER n
HERE IS MY INVITATION 0
ENOUGH TALK
YOU HAVE NO RESPECT FOR LOGIC
CHILL
I'LL BE BACK r
HASTA LA VISTA, BABY

Çevrimiçi deneyin!

Sözde koduna çevrildi:

f(n,p) {
  r=1;
  c=0;
  while (n) {
    r=r*n;
    n=n-p;
    c=n<0;
    if (c) n=0;
  }
  return r;
}

Not: ArnoldC'nin yalnızca bir veri türü vardır: 16 bit işaretli tam sayı. Dolayısıyla 420!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!davayı test edemiyorum .


Sadece psuedocode kodunu merak et. 'C' değişkeni ne için?
ouflak

@ouflak Birkaç kez cevabımı düzenledim ve unuttum. cDeğişken aslında arasındaki karşılaştırma değerini saklar nve 0.
Charlie

+1 ve LUA cevabım için ödünç verdim ('c' eksi).
ouflak

12

Jöle , 4 bayt

RṚmP

Çevrimiçi deneyin!

Nasıl? Verilen n ve k , ilk dizi oluşturur n,,1 ile ( RṚ) ile, daha sonra mher tutar kth bu aralığın elemanı (bu nedenle n,nk,n2k,,nn/kk ), ve sonunda bunları kullanarak çoğaltır P.


İyi çalışıyor ve sonunda çok basit. Jelly'i hiç tanımıyorum ama en azından iyi görünüyor :)
V. Courtois

1
@ V.Courtois göz önüne alındığında ve k , ilk dizi oluşturur , n , , 1 ile ( ) ile, daha sonra her tutar k inci bu aralığın elemanı (bu nedenle , n , n - k , n - 2 k , , n, - n / k k ) ve mümkün kullanarak nihayet çarpar . Sadece basit bir yaklaşım. Düzenleme: Bu açıklamayı cevaba ekledim. nkn,,1RṚmkincin,n-k,n-2k,,n-n/kkP
Bay Xcoder

Hah, çok teşekkür ederim. Bir gün bu dilde golf oynamak isteyebilirim, bu yüzden bu monadları, günleri vs. öğrenmek zorunda kalacağım
V. Courtois

CJam gibi alternatif olduğunu görünüyor: r1mP.
Outgolfer Erik,

1
@KyeWShi Jelly'in kendi kod sayfası vardır , bu nedenle içerdiği 256 karakterin her biri 1 bayt olarak kodlanır.
Bay Xcoder

8

APL (Dyalog Uzatılmış) , 7 bayt SBCS

Anonim zımni önek işlevi. Alır [n,b]argüman olarak.

×/-\…1¨

Çevrimiçi deneyin!

 argümanın her elemanı için bir tane; [1,1]

-\ birikimli fark; [n,n-b]

 Sol argümanın ikinci elemanını adımın göstergesi olarak kullanan menzil, örneğin [9,7];5

×/ ürün


7

Haskell , 21 bayt

n%a=product[n,n-a..1]

Çevrimiçi deneyin!

Dahili ürün fonksiyonunun kademeli aralık sayımı ile birleştirilmesi, tekrarlı bir şekilde kodlayabildiğim şeyi atıyor (kusursuz bir bayt tasarrufu ile bile).

22 bayt

n%a|n<1=1|m<-n-a=n*m%a

Çevrimiçi deneyin!

İşte 9!!daha ilginç olduğunu düşündüğüm gibi dizge biçiminde girdi alarak bir çözüm .

42 bayt

(\[(n,a)]->product[n,n-length a..1]).reads

Çevrimiçi deneyin!


2
Özyinelemeli çözümü kısaltabileceğini düşünüyorumn%a|n<1=1|m<-n-a=n*m%a
kusur


5

JavaScript (ES6), 21 bayt

Girişi olarak alır (k)(n).

k=>g=n=>n<1||n*g(n-k)

Çevrimiçi deneyin!

Veya BigInts'ı desteklemek için 24 bayt .


JavaScript (ES6), 55 bayt

Mücadelede açıklanan formatı kullanarak bir dize olarak girdi alır.

s=>(a=s.split`!`,k=a.length-1,g=n=>n<1||n*g(n-k))(a[0])

Çevrimiçi deneyin!


5

Boşluk , 91 bayt

[S S S T    N
Push_1][S N
S _Duplicate_1][S N
S _Duplicate_1][T   N
T   T   _Read_STDIN_as_integer_(base)][T    T   T   _Retrieve_base][S S S N
_Push_0][T  N
T   T   _Read_STDIN_as_integer_(factorial)][N
S S N
_Create_Label_LOOP][S N
S _Duplicate_base][S S S T  N
_Push_1][T  S S T   _Subtract][N
T   T   S N
_If_negative_jump_to_Label_PRINT_RESULT][S N
S _Duplicate_base][S T  S S T   S N
_Copy_0-based_2nd_(result)][T   S S N
_Multiply][S N
T   _Swap_top_two][S S S N
_Push_0][T  T   T   _Retrieve_factorial][T  S S T   _Subtract][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT_RESULT][S N
N
_Discard_top][T N
S T _Print_result_as_integer]

Harfler S(boşluk), T(sekme) ve N(yeni satır) yalnızca vurgulama olarak eklenmiştir.
[..._some_action]sadece açıklama olarak eklendi.

Çevrimiçi deneyin (yalnızca ham alanlar, sekmeler ve yeni satırlarla).

Sahte kodda açıklama:

Integer result = 1
Integer base = STDIN as integer
Integer factorial = STDIN as integer
Start LOOP:
  If(base <= 0):
    Call function PRINT_RESULT
  result = result * base
  base = base - factorial
  Go to next iteration of LOOP

function PRINT_RESULT:
  Print result as integer to STDOUT


4

Perl 6 , 22 bayt

{[*] $^a,*-$^b...^1>*}

Çevrimiçi deneyin!

İlk girişten başlayarak aralığın ürününü döndüren 1, son sayı hariç, ikincinin altına düşene kadar azalan anonim kod bloğu . Bu işe 0yarar, çünkü ürüne göre bir azalmanın temel durumu 1 olduğundan, çıktı 1 olur.


4

05AB1E , 10 8 7 bayt

ݦRIιнP

İki ayrı giriş olarak giriş: ilk giriş base; ikinci girdi olmak factorial.

Çevrimiçi deneyin veya tüm test durumlarını doğrulayın .

@ Mr.Xcoder sayesinde -2 bayt . @JonathanAllan
sayesinde -1 bayt .

Açıklama:

Ý        # Create a list in the range [0, (implicit) base-input]
 ¦       # And remove the first item to make it the range [1, base]
         # (NOTE: this is for the edge case 0. For the other test cases simply `L` instead
         #  of `ݦ` is enough.)
  R      # Reverse this list so the range is [base, 1]
   Iι    # Uninterleave with the second input as step-size
         #  i.e. base=3, factorial=7: [[3],[2],[1],[],[],[],[]]
         #  i.e. base=10, factorial=8: [[10,2],[9,1],[8],[7],[6],[5],[4],[3]]
         #  i.e. base=420, factorial=30: [[420,390,360,...,90,60,30],[419,389,359,...],...]
     н   # Only leave the first inner list
      P  # And take the product of its values
         # (which is output implicitly as result)

Orijinal 10 baytlık cevap:

L0KD¤-IÖÏP

İki ayrı giriş olarak giriş: ilk giriş base; ikinci girdi olmak factorial.

Çevrimiçi deneyin veya tüm test durumlarını doğrulayın .

Açıklama:

L           # Create a list in the range [1, (implicit) base-input]
 0K         # Remove all 0s (edge case for input 0, which will become the list [1,0])
   D        # Duplicate this list
    ¤       # Get the last value (without popping)
            # (could also be `Z` or `¹` for max_without_popping / first input respectively)
     -      # Subtract it from each item in the list
      IÖ    # Check for each if they're divisible by the second factorial-input
        Ï   # In the list we copied, only leave the values at the truthy indices
         P  # And take the product of those
            # (which is output implicitly as result)

1
Bu 6 bayt: LR²ιнP( Çevrimiçi deneyin! ) 0 hariç her test durumu için çalışır.
Bay Xcoder

Fakat sanırım 0 vaka en fazla 2 byte ile düzeltilebilir. Düzeltmenin bir yolunu bulursanız, alabilirsiniz :) EDIT: Belki LR²ιн0KPde 8 bayt için?
Bay Xcoder

@ Mr.Xcoder Güzel cevap! Belirli bir adımda asla karıştırıcı kullanmadı. :)
Kevin Cruijssen

0K0!şartnamenin geçersiz bir girişi olduğu için gereksiz olmalı (örneklerde yer almasına rağmen) - Bu konuda yorum yaptım .
Jonathan Allan,

1
... ve eğer 0! girdi etki alanında ݦRXιнPbir bayt kaydeder.
Jonathan Allan,

4

x86-64 makine kodu, 12 bayt

Aynı makine kodu, 32-bit modunda ve 16-bit modunda 16-bit tamsayılarda aynı şeyi yapar.

Bu args ile çağrılabilir bir fonksiyonu olduğunu n=RCX, k=ESI. 32 bit dönüş değeri EAX.

X86-64 System V ile C'den aranabilir, gerçek argümanları doğru sicillere sokmak için kukla argümanlarla yapılan çağrı. uint32_t factk(int, uint32_t k, int, uint64_t n); Sadece Windows x64 kullanamadım çünkü 1-operand mulRDX'i engelliyor ve REX öneklerinin R8 / R9'a erişmesini istemiyoruz. nJRCXZ'in çalışabilmesi için yüksek 32 bitte hiçbir çöp olmamalıdır, ancak bunun dışında hepsi 32-bit'dir.

NASM listelemesi (göreceli adres, makine kodu, kaynak)

 1                         factk:
 2 00000000 6A01             push 1
 3 00000002 58               pop rax             ; retval = 1
 4 00000003 E306             jrcxz  .n_zero      ; if (n==0) return
 5                         .loop:                ; do {
 6 00000005 F7E1              mul   ecx            ; retval *= n  (clobbering RDX)
 7 00000007 29F1              sub   ecx, esi       ; n -= k
 8 00000009 77FA              ja   .loop         ; }while(sub didn't wrap or give zero)
 9                         .n_zero:
10 0000000B C3               ret

0xc = 12 bayt


Ya da n=0özel davayı ele almamız gerekmediyse, 10 byte jrcxz.

Standart faktoring loopiçin, 2 byte'tan tasarruf etmek için alt / ja yerine kullanırsınız , aksi takdirde tam olarak aynı kod kullanılır.


Geçer test arayan argcolarak kile, nsabit bir şekilde kodlanmış.

align 16
global _start
_start:
  mov  esi, [rsp]
;main:
  mov  ecx, 9
  call factk

  mov  esi, eax
  mov  edx, eax
  lea  rdi, [rel print_format]
  xor  eax, eax
extern printf
  call printf
extern exit
  call exit

section .rodata
print_format: db `%#x\t%u\n`

```

3

APL (Dyalog Unicode) , 11 bayt SBCS

Anonim tam yapıştırma işlevi. Alır nsağ argüman olarak ve bsol argümanı.

×/1⌈⊢,⊢-×∘⍳

Çevrimiçi deneyin!

×∘⍳ çarpın btarafından ɩ ntegers 1 ilen

⊢- onu çıkar n

⊢, başa getirebilir n

1⌈ bunlardan en fazla biri

×/ ürün



3

Wolfram Dili (Mathematica) , 22 21 bayt

1##&@@Range[#,1,-#2]&

Çevrimiçi deneyin!

-1 attinat sayesinde: Times --> 1##&

Açıklama: Rangedeğerlerin bir listesini yapmak için kullanın {n, n-k, n-2k, n-3k, ...}, 1'in altına düşmeden önce durun (yani, tam olarak durmak). Sonra bu listedeki tüm sayıları Times(veya 1##&) ile çarpın .


-1 bayt ile 1##&yerineTimes
attinat

3

Java 10, 44 bayt

f->b->{int r=1;for(;b>0;b-=f)r*=b;return r;}

Faktörlüğü ilk girdi, ikinci olarak taban alır.

Çevrimiçi deneyin.

Bu, sınırlı tamsayı aralığı (32-bit) nedeniyle en büyük test durumu için işe yaramaz. Bunu düzeltmek için BigIntegers, rastlantısal olarak tam olarak iki katı boyutta olan kullanabiliriz - 88 79 bayt :

f->b->{var r=f.ONE;for(;b.signum()>0;b=b.subtract(f))r=r.multiply(b);return r;}

@ OlivierGrégoire sayesinde 9 bayt .

Çevrimiçi deneyin.

Açıklama:

f->b->{       // Method with two integer parameters and integer return-type
  int r=1;    //  Result-integer, starting at 1
  for(;b>0;   //  Loop as long as the base is still larger than 0
      b-=f)   //    After every iteration: decrease the base by the factorial
    r*=b;     //   Multiply the result by the base
  return r;}  //  Return the result


@ OlivierGrégoire Np ve teşekkürler! :)
Kevin Cruijssen

2

Japt , 8 bayt

TõUV f ×

Dene

-1 EoI sayesinde kafeinsiz Shaggy'nin ne kadar aptal olabileceğini işaret etti!


kTf1 byte ile değiştirilebilir
Ignorance'ın

1
Tabii ki @EmbodimentofIgnorance! Golf için çok erken olduğunu biliyordum! : \
Shaggy


2

MathGolf , 7 6 bayt

╙╒x%ε*

Çevrimiçi deneyin!

0 işlemek için akıllı bir yol buldum! diğer test durumlarını değiştirmeden. Girdiyi k ngizli sıralamaya yardımcı olan (ters sıra) olarak alır.

açıklama

╙        maximum of two elements (pops largest of k and n,
         which is n for every valid case except 0!, where 1 is pushed)
 ╒       range(1,n+1)
  x      reverse int/array/string
   %     slice every k:th element
    ε*   reduce list with multiplication

2

Ataşesi , 21 19 bayt

${x<y∨x*$[x-y,y]}

Çevrimiçi deneyin! Oldukça doğrudan özyinelemeli uygulama. (Not: trueaslında 1, olduğu gibi aritmetik işlemlerinde kullanılabileceği gibi1 .) Bu, bir unicode operatörünün baytları (1) kesin olarak kaydettiği, bu site için yazdığım birkaç programdan biri.

Alternatifler

20 bayt: ${x<y or x*$[x-y,y]}

21 bayt: Prod@${{_%y=x%y}\1:x}

27 bayt: ${x*[`1,$][x>y][x-y,y]∨1}

27 bayt: ${If[x>y,x*$[x-y,y],_or 1]}

27 bayt: ${x*[`1,$][x>y][x-y,y]or 1}

29 bayt: ${If[x>y,x*$[x-y,y],_+not _]}


2

Rust , 92 73 61 bayt

fn f(n:i128,k:i128)->i128{if n<=0{return 1}return n*f(n-k,k)}

Pas öğrenmeye yeni başladım, bu yüzden daha kısa olabileceğine eminim. Öğrendiğim gibi güncellenecek. i128Son testin hesaplanabilmesi için dönüş değerinin olması gerekir .

Düzenleme: özyineleme daha kısa.

Çevrimiçi deneyin!

Kendi testinizi ekleyebilir veya mevcut olanlardan birini düzenleyebilirsiniz.


2

q , 59 57 55 53 bayt

{prd 2+(&)1_i=last i:("J"$x(&)not[n])#(!)sum n:"!"=x}

açıklama:

q)x:"12!!" / let our input be 12!!, assign to x
q)sum n:"!"=x / count "!"s
2i
q)(!)sum n:"!"=x / (!)m -> [0,m)
0 1
q)("J"$x(&)not[n]) / isolate the number in input
12
q)("J"$x(&)not[n])#(!)sum n:"!"=x / x#y means take x items from list y, if x>y, circle around
0 1 0 1 0 1 0 1 0 1 0 1
q)i:("J"$x(&)not[n])#(!)sum n:"!"=x / assign to i
q)i
0 1 0 1 0 1 0 1 0 1 0 1
q)(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / take last elem of i and see which are equal in i
010101010101b
q)1_(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / drop first elem
10101010101b
q)(&)1_(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / indices of 1b (boolean TRUE)
0 2 4 6 8 10
q)2+(&)1_(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / add 2 across array
2 4 6 8 10 12
q)prd 2+(&)1_(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / product across array
46080

Burada da k (aynı mantık), 42 41 bayt sürümü

{*/2+&1_i=last i:("J"$x@&~:n)#!+/n:"!"=x}

Siteye Hoşgeldiniz! Gönderinize, satırdan önce dört boşlukla ya da üçlü sırt çubuklarıyla çevrilerek yapılabilecek kod biçimlendirmelerini ekledim.
Buğday Sihirbazı,

@ SriotchilismO'Zaic teşekkürler :-)
karalama

1
Bir açıklama ve belki de TIO gibi bir çevrimiçi tercümana bağlantı eklemenizi öneririm . Yalnızca kod yanıtları genellikle otomatik olarak düşük kalite olarak işaretlenir.
mbomb007

@ mbomb007 ilginç. cevapları işaretleyen bir bot var mı? düşük kaliteli gönderimlere ne olur? yakında güncellenecek!
Ağustos’ta

Evet, bir bot var. StackExchange, olası spam ve düşük kaliteli cevapları bulmak için botlar kullanır. Yeterince üne sahip kişiler İnceleme Kuyruğunu görebilir. meta.stackexchange.com/a/161391/285610
mbomb007

1

Physica , 22 bayt

f=>n;k:n<1||n*f[n-k;k]

Çevrimiçi deneyin!


26 bayt

Kendi "dilimi" nasıl kullanacağımı yeniden öğrenmek \ o / ... Eğer iki yıl önce bir ayrıştırıcı yazmayı bilseydim, bu 20 bayt olurdu :(

->n;k:GenMul##[n…1]{%%k}

veya

->n;k:GenMul##Range[n;1;k]

Çevrimiçi deneyin!


1

Retina , 66 bayt

^0
1
\d+
*!,
+`(!+)(!+),\1$
$1$2,$2,$1
!+$
1
+`(!+),(\d+)
$.($2*$1

Çevrimiçi deneyin! Link daha hızlı test vakaları içeriyor. Ünlem işareti olmayan sayılar gönderilir. Açıklama:

^0
1

Düzelt 0!.

\d+
*!,

nBirliğe dönüştürün ve bir ayırıcı ekleyin.

+`(!+)(!+),\1$
$1$2,$2,$1

Defalarca çıkarma kgelen nederken n>kve sonuçları toplamak.

!+$
1

Değiştir kile 1(ondalık).

+`(!+),(\d+)
$.($2*$1

Sırasıyla her ara değerle çarparak ondalık basamağa dönüştürülür.




1

İleri (gforth) , 50 bayt

: f 1 1 2over / 1+ 0 do 2over i * - 1 max * loop ;

Çevrimiçi deneyin!

Kod Açıklaması

: f                \ start a new word definition
  1 1              \ add placeholder and accumulator to stack
  2over / 1+       \ get the number of times to run the loop (num/factorial + 1)
  0 do             \ start loop from 0 to num/factorial
    2over          \ copy num and factorial to the top of the stack
    i * -          \ get the current number to multiply by (num - factorial * i)
    1 max          \ make sure it can't be 0 or negative [set to 1 if it is]
    *              \ multiply accumulator by result
  loop             \ end loop
;                  \ end the word definition           



1

Gaia , 6 bayt

…)¦v%Π

Çevrimiçi deneyin!

Takes input as n, k, so input of 3 4 would be 3!!!!.

…	 push [0...n-1], or [] if n == 0
 )¦	 increment each value (does nothing if [])
   v	 reverse list
    %	 take every k'th element
     Π	 product; product([]) = 1.
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.