Genişletme


31

Bir ve A'dan büyük iki tamsayı verildiğinde, bu sırada dört matematiksel ifade çıkarır:

  1. Düz ifade A ^ B (A'ya güç B). örneğin, eğer A = 2 ve B = 3 ise 2^3,.

  2. A ^ B'nin, A.'nın tekrarlanan çarpımları cinsinden genişlemesi, örn 2*2*2.

  3. A ^ B'nin tekrarlanan A. eklemeleri açısından genişlemesi, örn 2+2+2+2.

  4. A ^ B'nin 1. tekrarlanan eklemeler açısından genişlemesi, örn 1+1+1+1+1+1+1+1.

Dört ifade, düzenli ve açık bir şekilde belirtildiği sürece herhangi bir makul şekilde çıkarılabilir. Örneğin, onları bir listeye koyabilir veya ayrı satırlara yazdırabilirsiniz.

2^3
2*2*2
2+2+2+2
1+1+1+1+1+1+1+1

veya belki de eşittir işaretiyle ayrılmış bir satırda:

2^3=2*2*2=2+2+2+2=1+1+1+1+1+1+1+1

Matematik operatörlerinin yanına boşluk eklenebilir.

2^3 = 2 * 2 * 2 = 2 + 2 + 2 + 2 = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1

A = 2 ve B = 3 olduğunda çıktı eşit derecede geçerli olacaktır.

Sen alternatif semboller kullanabilir ^, *ve +fakat yalnızca yeni semboller (örneğin Diliniz için daha deyimsel olan **yerine ^Python).

A ve B'nin yeterince küçük olduğunu varsayalım; böylece A ^ B, dilinizin varsayılan tamsayı tipini aşmaz.

Bayt cinsinden en kısa kod kazanır.

Test Kılıfları

Satır başına bir çıktı. İlk ifade daima A ^ B olduğu için giriş çıkarılabilir.

2^2 = 2*2 = 2+2 = 1+1+1+1
2^3 = 2*2*2 = 2+2+2+2 = 1+1+1+1+1+1+1+1
2^4 = 2*2*2*2 = 2+2+2+2+2+2+2+2 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
2^5 = 2*2*2*2*2 = 2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
3^2 = 3*3 = 3+3+3 = 1+1+1+1+1+1+1+1+1
3^3 = 3*3*3 = 3+3+3+3+3+3+3+3+3 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
3^4 = 3*3*3*3 = 3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
3^5 = 3*3*3*3*3 = 3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
4^2 = 4*4 = 4+4+4+4 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
4^3 = 4*4*4 = 4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
10^2 = 10*10 = 10+10+10+10+10+10+10+10+10+10 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
13^2 = 13*13 = 13+13+13+13+13+13+13+13+13+13+13+13+13 = 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

@JonathanAllan Evet, gördüğüm tüm yazım hatalarını aldın. İyi iş! Hiçbir şey alamazsın.
R. Kap

2
@JonathanAllan benden teşekkürler. R. Kap, 3'üm için endişelenmeme neden oldu
Calvin'in Hobileri

Eh, (Neyse ki) =hiçbirinin solunda yanlış bir yer yoktu 3.
R. Kap

5
Lütfen bir dahaki sefere "knuth'un yukarı okları gösterimini genişletme" yapmayın
Matthew Roh

1
STDIN'den girişi tek bir dize olarak okursak, 2^3geçerli bir giriş formatı var mı? Yoksa boşluk / virgül / satır besleme ile ayrılmış bir şey mi olmalı?
Martin Ender

Yanıtlar:


11

Python 3.6 , 88 74 bayt

Dada sayesinde -2 bayt (kullanım ~)
Erwan sayesinde -5 bayt (Python 3.6'dan f dizeleri kullanın)

lambda a,b:f"{a}^{b}={a}{f'*{a}'*~-b}={a}{f'+{a}'*~-a**~-b}=1"+"+1"*~-a**b

çevrimiçi ide kimse?

Nasıl?

Bu, iki tamsayı girişi alan ave bher biri diğerinden büyük olan adsız bir fonksiyondur 0(şartname sadece ondan büyükler için olsa bile 1).

Python 3.6'da yeni bir özellik var, yani biçimlendirilmiş dize değişmezleri veya "f-dizeleri". Bunlar çalışma zamanı değerlendirilen dizge yapımına izin verir. Bir lider f(veya F) böyle bir yapı oluşturur, örneğin f"blah"veya f'blah'. Bir f telinin içinde bir çift tel arasındaki herhangi bir şey {...}, değerlendirilecek bir ifadedir.

Bunun gibi f"{a}^{b}={a}{f'*{a}'*~-b}={a}{f'+{a}'*~-a**~-b}=1"değerlendirilmekte her a, b, a, f'*{a}'*~-b, a, ve f'+{a}'*~-a**~-b}tutma ifadeleri gibi ^, =, =ve =1birlikte birleştirilmiş olur hepsi dizeleri gibi.

aVe bifadeler temsilciliklerine değerlendirmek ave bsırasıyla.

f'*{a}'Ve f'+{a}'sırayla ayrıca değerlendirmek bu ifadelerin içindeki f-dizeleri vardır alider ile '*'ve lider '+'sırasıyla

Ve bölümleri aiçin gerekli s ve işlem sayısını oluşturmak için, birlikte çarpılıp ekleneceğini unutmayın . Her durumda daha sonra s sayısından daha az bir operatör işareti gerekir . Biz f-dizeleri tekrarlayabilirsiniz Yani ve (kullanarak orada operatörleri ve her biri tek bir ile başa ekleyerek kadar çok kez) . olduğu ve bir .*+b aa**(b-1) aaf'*{a}f'+{a}'*a(b-1)~-b(a**(b-1))-1~-a**~-b

Aynı için yapılır 1kullanarak s (a**b)-1varlık ~-**b, ancak o zamandan beri biz f-dizeleri yükü gerekmez 1sabittir tekrarlanan standart dize ile birleştirilmiş, böylece +.


Önceki Python sürümleri, 81:

lambda a,b:'%s^%s=%s=%s=1'%(a,b,('*%s'%a*b)[1:],('+%s'%a*a**~-b)[1:])+'+1'*~-a**b

Çevrimiçi deneyin!


Eğer yerini alamaz (b-1)ile ~-b?
Dada

Evet haklısın, bunu özledim.
Jonathan Allan,

1
python 3.6'dan f string kullanıyorsanız 5 byte kazanabilirsiniz:lambda a,b:f"{a}^{b}={(f'*{a}'*b)[1:]}={(f'+{a}'*a**~-b)[1:]}=1"+'+1'*~-a**b
Erwan

@Erwan evet, geri döndüğümde f dizelerini kullanmayı planlıyordum (şimdi). Ben de birkaç kurtarabilirim.
Jonathan Allan

1
Kurbağa yavrusu operatörlerini görmek her zaman iyidir.
Jack Brounstein

11

Cubix, 238 234 217 151 110 100 bayt

ETHProductions sayesinde 14 bayt kurtardı

u'^.:s+.;;;\-?W?rsos\(rrOIO:ur>'=o;^u.;;.>$.vUo^'rsu1;;@!\q?s*su;;IOu*+qU../;(*\(s.;<..r:''uq....qu\

Expanded:

          u ' ^ . :
          s + . ; ;
          ; \ - ? W
          ? r s o s
          \ ( r r O
I O : u r > ' = o ; ^ u . ; ; . > $ . v
U o ^ ' r s u 1 ; ; @ ! \ q ? s * s u ;
; I O u * + q U . . / ; ( * \ ( s . ; <
. . r : ' ' u q . . . . q u \ . . . . .
. . . . . . . . . . . . . . . . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .

Çevrimiçi deneyin!

Burada dene

açıklama

Kod iki aşamada 8 adımdan oluşmaktadır. Kod bölüm bölüm gözden geçireceğim.

1. Adım (A ^ B)

          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
I O : u . . . . . . . . . . . . . . . .
U o ^ ' . . . . . . . . . . . . . . . .
; I O u . . . . . . / ; ( * \ . . . . .
? ? r : . . . . . . ? . . . \ ? ? ? ? ?
. . . . ? . . . . . ? . . . . . . . . .
          ? ? ? ? ?
          . . . . .
          . . . . .
          . . . . .
          . . . . .

Bu, kaldırılan ilk adımla alakasız parçaları olan küp. Soru işareti, IP'nin ziyaret edemediği kişileri yolunu daha net hale getirmek için gösterir.

IO:'^o;IO:r*(; # Explanation
I              # Push the first input (A)
 O             #   output that
  :            #   duplicate it
   '^          # Push the character "^"
     o         #   output that
      ;        #   pop it from the stack
       I       # Push the second input (B)
        O      #   output that 
         :     #   duplicate
          r    #   rotate top 3 elements
           *   # Push the product of the top two elements
            (  #   decrease it by one
             ; #   pop it from the stack (making the last
               #   two operations useless, but doing it
               #   this way saves 10B)

Şimdi, yığın şöyle gözüküyor: A, B, A, B

2. Adım (yazdırma döngüsü için hazırlanın)

Baskı döngü 3 bağımsız değişkenleri (yığın ilk 3 öğeleri) alır: P, Qve R. Ptekrarların miktarı Q, ayırıcı (karakter kodu) ve Rtekrarlanacak sayıdır. Neyse ki, döngü de sonuç dizesi sona gerektiğini şartı ilgilenir Rdeğil Q.

A*Tam olarak tekrar etmek istiyoruz B, bu yüzden ayırıcı *. Yığın olarak başladığını unutmayın A, B, A, B. Bir kez daha alakasız talimatları kaldırdım. IP Skuzeyi işaret etmeye başlar .

          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
. . . . r . . . . . . . . . . . . . . .
. . . . r . . . . . . . . . . . . . . .
. . . . * . . . . . . . . . . . . . . .
. . . . ' . . . . . . . . . . . . . . .
. . . . S . . . . . . . . . . . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .

'*rr # Explanation
'*   # Push * (Stack: A, B, A, B, *)
  rr # Rotate top three elements twice

Yığın şimdi A, B, B, *, A.

Adım 3/6/8 (yazdırma döngüsü)

kavram

E . . . . .
? r s o s u 
\ ( r r O <
. . . . . S

IP, döngüye girip Skuzeye doğru girer ve döngüden Etekrar kuzeye doğru çıkar . Bu açıklama için, yığın olarak ayarlanır [..., A, B, C]. Aşağıdaki talimatlar uygulanır. IP'nin döngüden soru işaretinden önce çıkamayacağını, bu nedenle ilk dört talimatın her zaman yürütüleceğini unutmayın.

Orr(?rsos # Explanation
O         # Output `C`
 rr       # Rotate top three elements twice (Stack: [..., B, C, A])
   (      # Decrease A by one (Stack: [..., B, C, A-1])
    ?     # If top of stack (A) > 0:
     r    #    Rotate top of stack (Stack: [..., A-1, B, C])
      s   #    Swap top elements (Stack: [..., A-1, C, B])
       o  #    Output top of stack (B) as character code
        s #    Swap top elements (Stack: [..., A-1, B, C]
          #
          # ... and repeat ...

uygulama

İşte yine küp, alakasız kısımlar çıkarıldı. IP Sdoğudan işaret ederek başlar .

          . . . . .
          . . . . .
          . . . . .
          ? r s o s
          \ ( r r O
. . . . . S ' = o ; ^ u . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .

Gördüğünüz gibi IP, döngüye girmeden önce dört yönergeyle karşılaşır. Karakter kodu tekrar kaldırıldığından, bu parçaya girdiğimizle aynı yığına sahip döngüye ulaşırız.

'=o; # Explanation
'=   # Push =
  o  #     Output
   ; #     Pop from stack

Döngünün içinde, yukarıdaki açıklama tutar.

4. Adım (IP'leri ayırt etme)

Yukarıdaki döngüyü birçok kez kullandığımızdan ve hepsi IP'nin aynı noktada bitmesine neden olduğundan, birden fazla çalışma arasında ayrım yapmamız gerekir. İlk olarak, ayırıcıyı ayırabiliriz (ilk çalıştırmada a vardır *, oysa iki ve üçte bir +ayırıcı vardır). Tekrarlanan sayının değerini kontrol ederek 2. ve 3. sıraları birbirinden ayırabiliriz. Bu ise, program sonlandırılmalıdır.

İlk karşılaştırma

İşte küpte göründüğü gibi. IP S'de başlar ve kuzeyi gösterir. Yığın içeriyor [..., * or +, A or 1, 0]. 1 rakamı, bu birinci döngü (kuzeyi işaret eder) ise IP'nin nerede biteceğini gösterir ve 2 sayısı, bu ikinci (veya üçüncü) döngü ise (doğuyu işaret eden) IP'nin nerede biteceğini gösterir.

          u ' . . .
          s + . 1 .
          ; \ - ? 2
          S . . . .
          . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .

;s'+-? # Explanation
;      # Delete top element (0)
 s     # Swap the top two elements (Stack: 1/A, */+)
  '+   # Push the character code of + 
    -  # Subtract the top two elements and push
       #  that to the stack (Stack: 1/A, */+, +, (*/+)-+)
     ? # Changes the direction based on the top
       # item on the stack. If it's 0 (if (*/+) == +)
       # the IP continues going right, otherwise, it
       # turns and continues going north.

IP şimdi ise 1, yığın [A, *, +, -1]. Aksi takdirde, yığın [A or 1, +, +, 0]. Gördüğünüz gibi, ikinci durumun yığında hala bilinmeyen bir şey var, bu yüzden başka bir karşılaştırma yapmalıyız.

İkinci karşılaştırma

IP 5. adımda, böyle yığın görünüyor geçirdi Çünkü: [A^(B-1) or nothing, A or 1, +, +, 0]. İlk eleman ise nothing, ikinci elemandır 1ve tersi de tutar. Küp bu gibi gözüküyor, IP S'den başlıyor ve doğuya bakıyor. Bu ikinci döngü ise, IP Ebatıya dönük olarak sona erer . Aksi takdirde, program vurur @ve sona erer.

          . . . . .
          . . . . ;
          . . . S W
          . . . . .
          . . . . .
. . . . . . . . . . . . . ; . . . . . .
. . . . . . . . . E @ ! \ q . . . . . .
. . . . . . . . . . . . ( * . . . . . .
. . . . . . . . . . . . q u . . . . . .
. . . . . . . . . . . . . . . . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .

Kontrol akışına hiçbir şey yapmayan talimatlar aşağıda listelenmiştir.

;;q*q(!@
;;       # Delete top two elements (Stack [A^(B-1)/null, A/1, +])
  q      # Send top element to the bottom (Stack [+, A^(B-1)/0, A/1])
   *     # Push product of top two elements 
         #    (Stack [+, A^(B-1)/0, A/1, A^B/0])
    q    # Send top element to the bottom 
         #    (Stack [A^B/0, +, A^(B-1)/0, A/1])
     (   # Decrease the top element by 1 
         #    (Stack [A^B/0, +, A^(B-1)/0, (A-1)/0])
      !  # If (top element == 0):
       @ #  Stop program

Yığın şimdi [A^B, +, A^(B-1), A-1], programın sonlandırılmaması şartıyla.

5. Adım ("A +" için hazırlanıyor (A ^ (B-1) 'i tekrarlayın))

Ne yazık ki, Cubix bir elektrik operatörüne sahip değil, bu yüzden başka bir döngüye ihtiyacımız var. Ancak, ilk önce şu anda bulunan yığını temizlememiz gerekir [B, A, *, +, -1].

Temizlemek

İşte yine küp. Her zamanki gibi IP, S'de başlar (kuzeyi gösterir) ve E'de biter ve batıya bakar.

          . . . ? .
          . . . ; .
          . . . S .
          . . . . .
          . . . . .
. . . . . . . . . . . . . . . . > $ . v
. . . . . . . . . . . . . . . . . . . ;
. . . . . . . . . . . . . . . . . . E <
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .

;; # Explanation
;; # Remove top 2 elements (Stack: [B, A, *])

A ^ (B-1) hesaplanıyor

Kabaca baskı döngüsüyle aynı şekilde çalışan başka bir döngü, ancak biraz daha kompakt. IP S, batıya bakacak şekilde istif ile başlar [B, A, *]. IP Ekuzeyi işaret etmek için çıkar .

          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
. . . . . . . . . . . . . . E . . . . .
. . . . . . . . . . . . . . ? s * s u .
. . . . . . . . . . . . . . \ ( s . ; S
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .

Döngü gövdesi aşağıdaki gibidir.

;s(?s*s # Explanation
;       # Pop top element.
 s      # Shift top elements.
  (     # Decrease top element by one
   ?    # If not 0:
    s   #    Shift top elements again
     *  #    Multiply
      s #    Shift back
        #
        # ... and repeat ...

Ortaya çıkan yığın [A, A^(B-1), 0].

Yığını temizleme (tekrar)

Şimdi yığının üst kısmı ile birlikte tekrar baskı döngüsüne gitmemiz gerekiyor [..., A^(B-1), +, A]. Bunu yapmak için aşağıdakileri uygularız. İşte yine küp.

          . . ^ ? :
          . . . . .
          . . . . .
          . . . . .
          E . . . .
. . . . . s . . . . . . . . ; . . $ . .
. . . . . + q U . . . . . . S . . s . .
. . . . . ' u q . . . . . . . . . ? . .
. . . . . . . ? . . . . . . . . . ? . .
. . . . . . . ? . . . . . . . . . ? . .
          . . ? . .
          . . ? . .
          . . ? . .
          . . ? . .
          . . ? . .

;:$sqq'+s # Explanation
;         # Delete top element (Stack: [A, A^(B-1)])
 :        # Copy top element
  $s      # No-op
    qq    # Send top two elements to the bottom
          #   (Stack: [A^(B-1), A^(B-1), A])
      '+  # Push +
          #   (Stack: [A^(B-1), A^(B-1), A, +])
        s # Swap top two elements
          #   (Stack: [A^(B-1), A^(B-1), +, A])

7. Adım (son döngü için hazırlanıyor)

Yığın şimdi [A^B, +, A^(B-1), A-1], IP başlıyor, Sbatıya gidiyor ve bitiyor, Esağa gidiyor

          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
. . . . . E . . . . . . . . . . . . . .
. . . . . . u 1 ; ; S . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .

Yürütülen talimatlar:

;;1 # Explanation
;;  # Delete top two elements
  1 # Push 1

Yığın şimdi benziyor [A^B, +, 1]ve IP yazdırma döngüsüne girmek üzere, bu yüzden işimiz bitti.


2
Evet, lütfen bir açıklama yapınız, en azından asılsız küp net versiyonunu yapınız
Yok

Açıklamayı tamamladım
Luke

Bu dili kim yaptı ... Hex-agony gibi ama küp-agony gibi. Birisi 3B altıgen bir acı çekiyor.
Sihirli Ahtapot Urn

1
@carusocomputing Ve hangi polyhedron 3D hex, hm olurdu?
mbomb007

1
Muhtemelen mozaiklenmiş tetrahedronların 3B yapısında çalışan bir dil yapabilirsiniz.
mbomb007

7

MATL , 46 bayt

XH'^'i'='XJ2G:"H'*']xJ&Gq^:"H'+']xJ&G^:"1'+']x

Çevrimiçi deneyin!

Burada "makul yol" sınırlarını genişletmek ancak ifadeler birbirinden ayrılmaktır.

açıklama

İlk ifade:

XH'^'i'='XJ

XH         % implicitly take input A, save it to clipboard H
'^'        % push literal '^'
i          % take input B
'='        % push literal '='
XJ         % copy '=' to clipboard J, we'll use this twice more so it's worth it

İkinci ifade:

2G:"H'*']xJ

2G         % paste the second input (B) again
:"         % do the following B times
  H        % paste A from clipboard H
  '*'      % push literal '*'
]          % end loop
x          % delete the final element (at the moment we have a trailing *)
J          % paste '=' from clipboard J

Üçüncü ifade:

&Gq^:"H'+']xJ

&G         % paste all of the input, ie push A and B
q          % decrement B
^          % power, giving A^(B-1)
:"         % do the following A^(B-1) times 
  H        % paste A from clipboard H
  '+'      % push literal '+'
]          % end loop
x          % delete the final element (at the moment we have a trailing +)
J          % paste '=' from clipboard J

Dördüncü ifade:

&G^:"1'+']x

&G         % paste all of the input, ie push A and B
^          % power, giving A^B
:"         % do the following A^B times 
  1        % push 1
  '+'      % push '+'
]          % end loop
x          % delete the final element (at the moment we have a trailing +)
           % (implicit) convert all to string and display

6

JavaScript (ES7), 78 bayt

Tımar sözdiziminde girişi Alır (a)(b). Bir dizge çıktılar.

a=>b=>a+'^'+b+(g=o=>'='+a+('+*'[+!o]+a).repeat(b-1))()+g(b=a**~-b)+g(b*=a,a=1)

Test durumları


3

Ruby, 52 bayt

->a,b{[[a,b]*?^,[a]*b*?*,[a]*a**~-b*?+,[1]*a**b*?+]}

3

05AB1E , 30 bayt

mUð¹'^²J'*¹«²×'+¹«X¹÷ׄ+1X×)€¦

Açıklama:

mU                               # Store a^b in variable X
  ð                              # Push a space character to the stack (will be deleted at the end, but this is needed to keep the character count low)
   ¹'^²J                         # Push the string "a^b" to the stack
        '*¹«                     # Push the string "*a" to the stack
            ²×                   # Repeat b times
              '+¹«               # Push the string "+a" to the stack
                  «X¹÷×          # Repeat a^b / a times
                       „+1       # Push the string "+1" to the stack
                          X×     # Repeat a^b times
                            )    # Wrap stack to array
                             €¦  # Remove the first character from each element in the array

Çevrimiçi deneyin!


¹²'^ý ¹'*¹«²<׫¹²m¹÷¹s×S'+ý 1¹²m×S'+ý», neden beni 5 byte ile yendin :(?
Magic Octopus Urn

1
Çünkü ben. : P
Okx

Nedense cevabınızı gördüm ve "80 bayt" okudum ve kendi kendime düşündüm, "dövmesi kolay" demiştim, sonra 80'i hedefleyerek benimkiyi yarattım ... Sonra tekrar, bazı şeylerde daha kısa mayınlar olduğunu düşünüyorum. senin haha
Magic Octopus Urn, 21.01

¹²«¹²×¹¹²m©¹÷×1®×)vySN"^*++"èý,daha yakın;). Şimdi sadece 1 ile kazanıyorsunuz;).
Sihirli Ahtapot Urn,

2

C (gcc) , 156 149 bayt

#define q for(x=0;x
x,y;p(a,b,c){printf("%c%d",x?b:61,c),x+=a;}e(n,i){x=1;p(0,0,n);p(0,94,i);y=!!i;q<i;y*=n)p(1,42,n);q<y;)p(n,43,n);q<y;)p(1,43,1);}

0 güç görmezden gelebilirsek -2 bayt ;y=!!iolabiliry=1

Çevrimiçi deneyin!


2

Java 7, 170 bayt

String c(int a,int b){String s="=",r=a+"^"+b+s+a;double i=0,x=Math.pow(a,b);for(;++i<b;r+="*"+a);r+=s+a;for(i=0;++i<x/a;r+="+"+a);r+=s+1;for(i=0;++i<x;r+="+1");return r;}

Ungolfed:

String c(int a, int b){
  String s = "=",
         r = a+"^"+b+s+a;
  double i = 0,
         x = Math.pow(a,b);
  for(; ++i < b; r += "*"+a);
  r += s+a;
  for(i = 0; ++i < x/a; r += "+"+a);
  r += s+1;
  for(i = 0; ++i < x; r += "+1");
  return r;
}

Test kodu:

Burada dene.

class M{
  static String c(int a,int b){String s="=",r=a+"^"+b+s+a;double i=0,x=Math.pow(a,b);for(;++i<b;r+="*"+a);r+=s+a;for(i=0;++i<x/a;r+="+"+a);r+=s+1;for(i=0;++i<x;r+="+1");return r;}

  public static void main(String[] a){
    System.out.println(c(2,2));
    System.out.println(c(2,3));
    System.out.println(c(2,4));
    System.out.println(c(2,5));
    System.out.println(c(3,2));
    System.out.println(c(3,3));
    System.out.println(c(3,4));
    System.out.println(c(3,5));
    System.out.println(c(4,2));
    System.out.println(c(4,3));
    System.out.println(c(10,2));
    System.out.println(c(13,2));
  }
}

Çıktı:

2^2=2*2=2+2=1+1+1+1
2^3=2*2*2=2+2+2+2=1+1+1+1+1+1+1+1
2^4=2*2*2*2=2+2+2+2+2+2+2+2=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
2^5=2*2*2*2*2=2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
3^2=3*3=3+3+3=1+1+1+1+1+1+1+1+1
3^3=3*3*3=3+3+3+3+3+3+3+3+3=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
3^4=3*3*3*3=3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
3^5=3*3*3*3*3=3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
4^2=4*4=4+4+4+4=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
4^3=4*4*4=4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
10^2=10*10=10+10+10+10+10+10+10+10+10+10=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
13^2=13*13=13+13+13+13+13+13+13+13+13+13+13+13+13=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

1

Pip , 38 35 34 bayt

33 baytlık kod, -nbayrak için +1 .

Ya**b[gJ'^aRLbJ'*aRLy/aJ'+1XyJ'+]

A ve B'yi komut satırı argümanları olarak alır; Her satıra bir ifade basar. Çevrimiçi deneyin!

açıklama

Ya**bKurulum kodu: yank a**biçine ydeğişken. Ondan sonra []dört ifademizi içeren bir listemiz var :

  • gJ'^: tam ar glistesini al (burada, ave içeren bir liste b) ve Jüzerine yaz^
  • aRLbJ'*: Kullanım REPEAT List içeren bir liste oluşturmak için bkopyaları adaha sonra, Jüzerinde kendisine oin*
  • aRLy/aJ'+: (yani ) kopyalarını RLiçeren bir liste oluşturmak için kullanın , sonra siliny/aa**(b-1)aJ+
  • 1XyJ'+: 1, string ile çarpılır y, Joined+

-nBayrak sayesinde liste, ayırıcı olarak newline ile yazılmıştır .


1

Javascript 115 113 104 bayt

Her bir baytta golf oynamak için @Neil ve @TuukkaX'a, 9 baytta golf oynamak için @ETHproductions ve Luke'a teşekkürler

a=>b=>[a+'^'+b,(a+'*').repeat(b-1)+a,(a+'+').repeat(Math.pow(a,b-1)-1)+a,1+'+1'.repeat(Math.pow(a,b)-1)]

Çevrimiçi Deneyin


Sen currying sözdizimi kullanabilirsiniz: a=>b=>.
Yytsi

Neden olmasın '=1'+'+1'.repeat?
Neil

Aşağıdakileri kullanarak başka bir bayttan tasarruf edebilirsiniz .join:a=>b=>[a+'^'+b,(a+'*').repeat(b-1)+a,(a+'+').repeat(Math.pow(a,b-1)-1)+a,1+'+1'.repeat(Math.pow(a,b)-1)].join`=`
ETHproductions

Eğer "dört ifade, sıralı ve açıkça farklı oldukları sürece makul herhangi bir şekilde çıkarılabilir." ayrıca dört farklı element içeren bir dizi döndürmeyi de dahil etmek için .join()...
Luke

1

Jöle , 29 bayt

*⁹’,¤;@
,`;1ẋ"ç
,W;çj"“^*++”Y

Çevrimiçi deneyin!

Nasıl?

*⁹’,¤;@ - Link 1, get list lengths: a, b
    ¤   - nilad followed by link(s) as a nilad
 ⁹      - right: b
  ’     - decrement: b-1
   ,    - pair with right: [b-1, b]
*       - exponentiate: [a^(b-1), a^b]
     ;@ - concatenate with reversed arguments: [b, a^(b-1), a^b]

,`;1ẋ"ç - Link 2, create lists: a, b
 `      - monad from dyad by repeating argument
,       - pair: [a, a]
  ;1    - concatenate 1: [a, a, 1]
      ç - last link (1) as a dyad: [b, a^(b-1), a^b]
     "  - zip with the dyad...
    ẋ   -     repeat list:  [[a, a, ..., a], [a, a, ..., a], [1, 1, ..., 1]]
                                <- b ->       <- a^(b-1) ->     <- a^b ->

,W;çj"“^*++”Y - Main link: a, b
,             - pair: [a, b]
 W            - wrap: [[a, b]]
   ç          - last link (2) as a dyad: [[a, a, ..., a], [a, a, ..., a], [1, 1, ..., 1]]
  ;           - concatenate [[a, b], [a, a, ..., a], [a, a, ..., a], [1, 1, ..., 1]]
      “^*++”  - list of characters: ['^', '*', '+', '+']
     "        - zip with the dyad...
    j         -     join: ["a^b", "a*a*...*a", "a+a+...+a", "1+1+...+1"]
            Y - join with line feeds
              - implicit print

1

tinylisp repl, 178 186 bayt

(load library
(d W(q((_ N S #)(i(e # 1)(c N _)(W(c S(c N _))N S(s # 1
(d ^(q((x y)(i y(*(^ x(s y 1))x)1
(d X(q((A B)(list(list A(q ^)B)(W()A(q *)B)(W()A(q +)(^ A(s B 1)))(W()1(q +)(^ A B

Repl kullanımı, satırların sonundaki örtük parantez içinde 8 baytlık tasarruf sağlar. Xİki sayı alan ve ifadelerin listesini döndüren bir işlevi tanımlar . Her ifade, işleçlerin etrafındaki boşluklarla parantez içine alınır (aslında, bu sayıların ve işleç sembollerinin bir listesidir):

((2 ^ 3) (2 * 2 * 2) (2 + 2 + 2 + 2) (1 + 1 + 1 + 1 + 1 + 1 + 1 + 1))

Umarım bu çıktı formatı kabul edilebilir. Çevrimiçi deneyin! (birkaç test durumuyla).

açıklama

(load library)

Standart kütüphaneden iki işleve ihtiyacımız var: listve* .

(d W(q((_ N S #)(i(e # 1)(c N _)(W(c S(c N _))N S(s # 1))))))

WBir akümülatör _, sayı N, sembol Sve sayma alan bir işlev tanımlayın ("örgü" için kısa)# . İfadelerimizin çoğunu üretmek için bu işlevi kullanacağız: örneğin,(W () 2 (q +) 3) sonuçta (2 + 2 + 2).

(e # 1)Sayı 1 ise , o zaman akümülatörün önüne sayıyı(c N _) belirtin ve geri döndürün. Aksi takdirde, tekrarlayın:

  • Yeni akümülatör (c S(c N _)) : sembolü ve önceki akünün önüne çıkan sayı;
  • N ve S aynıdır;
  • Yeni sayım (s # 1) : sayı - 1.

Bir biriktirme derinliği hatasını önleyen uygun kuyruk özyinelemesi elde etmek için akümülatör deyimi gereklidir . (Bu değişiklik +8 bayt sayısından sorumludur. 13^2Dava önceki sürümde işe yaramadı.)

(d ^(q((x y)(i y(*(^ x(s y 1))x)1))))

Ne yazık ki, kütüphanenin şu anda üstel işlevi yok, bu yüzden bir tanesini tanımlamamız gerekiyor. ve ^alır . Eğer truthy (sıfır olmayan) ise, ( ) ile tekrarlanır ve sonucu çarpılır . Aksi halde sıfırdır ve geri döneriz .xyyy-1(s y 1)xy1

(Not: Bu fonksiyon yok değil düzgün kuyruk özyineleme kullanma Ben üsler meselenin Bazı TIO üzerinde deney Bu soru için yeterli olmalıdır iddia ediyorum 325 maksimum üs, belirtilen olmayacak küçük yeterince olacağını varsayabiliriz... OP aynı fikirde olmazsa değiştiririm.)

(d X(q((A B)(list(list A(q ^)B)(W()A(q *)B)(W()A(q +)(^ A(s B 1)))(W()1(q +)(^ A B))))))

Son olarak, ilgilendiğiniz işlevi Xalır Ave Bve döndürür dört öğe listesi:

  • (list A(q ^)B): bir Ahazır bilgi içeren ^veB ;
  • (W()A(q *)B): Kelimenin tam anlamıyla iç içe geçmiş kopyalarının Wbir listesini almak için çağrı ;BA*
  • (W()A(q +)(^ A(s B 1))): Kelimenin tam anlamıyla iç içe geçmiş kopyalarının Wbir listesini almak için çağrı ;A^(B-1)A+
  • (W()1(q +)(^ A B)): kelimesi harfiyle iç içe geçmiş kopyalarının Wbir listesini almak için arayın .A^B1+

1

Brainfuck , 372 bayt

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

Çevrimiçi deneyin!

notlar

  1. İki giriş, bu şekilde A**Başılmayacak şekilde seçilmelidir255 . Bunun nedeni, beyin fırtınasının yalnızca bir baytlık değerleri depolayabilmesidir.
  2. Bir giriş 9'dan büyükse, bir sonraki ASCII karakterini kullanın. 10olur :, 11olur ;vb. Bunun nedeni, Brainfuck'ın yalnızca bir baytlık girdileri alabilmesidir.

açıklama

İşte benim bir şekilde yorumlanmış kodum. Bunu daha sonra genişleteceğim.

,.                      print A
> +++++ +++
[
    > +++++ +++++ ++    set up 96 (for ^ sign)
    > +++++ +++         set up 64 (for = sign)
    > +++++             set up 40 (for plus and * sign)
    <<< -
]
> --.                   print ^
< ,.                    print B
>
> ---.                  print =
> ++                    prepare *

> +++++ +++             convert B from char code
[
    <<<< ----- -
    >>>> -
]

<<<< -                  print loop "A*"
[
    < .
    >>>> .
    >> +
    <<<<< -
]
< .                     print final A
>>> .                   print =


<< +++++ +++            convert A from char code
[
    < ----- -
    > -
]

<
[                       duplicate A
    > +
    >>>> +
    <<<<< -
]

>>>>>                   exponentiation (A**(B minus 1))
>>+<[->[-<<[->>>+>+<<<<]>>>>[-<<<<+>>>>]<<]>[-<+>]<<]<

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

>[<+>-]                 move

<<<<< <<< +++++ +++     convert A to char code
[
    > +++++ +
    < -
]

>>>> +                  convert * to plus sign
>> -                    print loop "A plus"
[
    <<<< < .
    >>> .
    >> -
]
<<<<< .                 print final A
>> .                    print =

>>>>                    move
[
    < +
    > -
]

                        multiply A**(B minus 1) by A
<<[->[->+>+<<]>>[-<<+>>]<<<]        

>>> +++++ +++           generate the char code for 1 (49)
[                           generate 8*6 = 48
    <<< +++++ +
    >>> -
]
<<< +                       add one

>> -                    print loop "1 plus"
[
    << .
    < .
    >>> -
]
<< .                    print final 1

0

Pyth, 32 31 bayt

AQjMC,"^*++"[Q*]GH*^GtH]G*]1^GH

Girişi alır [2,10] , çıktı olarak alır["2^10", "2*2*2*2*2*2*2*2*2*2", "2+2+...

Açıklama:

Q = eval(input())                     #  
G, H = Q                              #  AQ
operators = "^*++"                    #        "^*++"
operands = [Q,                        #              [Q
  [G]*H,                              #                *]GH
  G**(H-1)*[G]                        #                    *^GtH]G
  [1]*G**H                            #                           *]1^GH
]                                     #
map( lambda d: join(*d),              #    jM
     zip(operators, operands)         #      C,...
)                                     #

Burada dene.


0

Perl , 81 bayt

78 bayt kodu + -nflag (kodun içerdiğinden beri 3 bayt olarak sayılır $').

$,=$/;print s/ /^/r,map{/\D/;join$&,($`)x$'}"$`*$'","$`+".$`**~-$',"1+".$`**$'

Çevrimiçi deneyin!


0

R, 147 bayt

w=switch;function(A,B)for(s in letters[1:4]){cat(rep(w(s,d=1,a=c(A,B),b=,c=A),w(s,a=1,b=B,c=A^B/A,d=A^B)),sep=w(s,a="^",b="*",d=,c="+"));cat("\n")}

İstenilen çıktıyı, çıktıyı, satır satır çıkaran adsız işlev. Bu çözüm switchişlevden geniş ölçüde yararlanır .

switchFonksiyonu (burada bir ifade alır s, bir numara ya da bir karakter dizisi olarak değerlendirilir (bunun) ?switchtekabül eden ALTERNATİFLER), ardından s. Bir alternatif eksikse (örneğin switch(s, a=, b= "PPCG"), bir sonraki eksik olmayan alternatif değerlendirilir (örnekte s="a"çıktılar "PPCG").

repİşlevleri tekrarlar (çoğaltır, aslında) ilk bağımsız değişken sayısı İkinci değişken bir işaret etmiştir.

cat, sep =argüman ile seçilebilen bir ayırıcıyla nesneleri tamamlamak, birleştirmek ve yazdırmak için . İkinci catişlev, satır sonu için burada.

Ungolfed:

f=function(A,B)
    for(s in letters[1:4]){
        cat(
            rep(switch(s, d = 1, a = c(A,B), b =, c = A),
            switch(s, a = 1, b = B, c = A^B/A, d = A^B)),
        sep=switch(s,a = "^", b = "*", d =, c = "+"))
    cat("\n")
}



0

Kardinal 202 bayt

%:.~:#"^"."=">v
x            "~
             *.
     >~=088v "~
     v88+88< ?
     8       -
     8      x#<
     v     < 0
     >   t / <
v~.~ <#"="?<
-
#?"+"^t
0
V
#?"="  >"1"-v
/ {   <^"+"?<
>     ^

Yalnızca Kardinal'deki işaretçiler tarafından tutulabilecek değerlerdeki sınırlamalar nedeniyle hesaplanan değerin <256 olduğu sayılar için çalışacaktır.

Çevrimiçi Deneyin

Açıklama:

Aşama 1

%:.~:#"^"."="

İki a ve b olarak girdi ve çıktıları alır "a ^ b ="
aktif değeri a ve aktif olmayan bir değer b bir işaretçi geçirir

Adım 2

        >v
        "~
        *.
>~=088v "~
v88+88< ?
8       -
8      x#<
v     < 0
>   t / <

"A" + ("* a") (b-1) kez basan aktif değeri a ve etkin olmayan b değeri olan
bir işaretçi alır Bir sonraki kısma a ^ (b-1) aktif değeri olan bir işaretçiyi geçirir

Aşama 3

v~.~ <#"="?<
-
#?"+"^t
0
V
#?"="  
/ {   <
>     ^ 

^ (B-1) değerine sahip bir işaretçi alır ve "= a" + ("+ a") tekrarlanan (a ^ (b-1) -1) çarpı + "="
a ^ b değerine sahip bir işaretçi iletir sonraki bölüme

4. adım

>"1"-v
^"+"?<

A ^ b değerine sahip bir işaretçi alır ve "1" + ("+ 1") tekrar tekrar ^ b-1 kez basar


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.