Perluas Eksponen

31

Diberikan dua bilangan bulat lebih besar dari satu, A dan B, menghasilkan empat ekspresi matematika dalam urutan ini:

  1. Ekspresi sederhana A ^ B (A ke kekuatan B). misal jika A = 2 dan B = 3 2^3,.

  2. Perluasan A ^ B dalam hal perkalian berulang A. misalnya 2*2*2.

  3. Perluasan A ^ B dalam hal penambahan berulang A. misalnya 2+2+2+2.

  4. Perluasan A ^ B dalam hal penambahan berulang 1. misalnya 1+1+1+1+1+1+1+1.

Keempat ungkapan itu bisa berupa keluaran dengan cara apa pun yang masuk akal asalkan teratur dan jelas berbeda. Misalnya, Anda dapat memasukkannya dalam daftar, atau mencetaknya pada baris yang berbeda

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

atau mungkin pada satu baris dipisahkan oleh tanda sama dengan:

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

Spasi dapat dimasukkan di sebelah operator matematika

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

akan menjadi output yang sama-sama valid ketika A = 2 dan B = 3.

Anda dapat menggunakan simbol sebagai alternatif untuk ^,, *dan +, tetapi hanya jika simbol baru lebih idiomatis untuk bahasa Anda (misalnya, **bukan ^dalam Python).

Anda dapat mengasumsikan bahwa A dan B cukup kecil sehingga A ^ B tidak akan melimpahi tipe integer default bahasa Anda (mengingat bahwa tipe tersebut memiliki maksimum yang masuk akal, setidaknya 255).

Kode terpendek dalam byte menang.

Uji Kasus

Satu output per baris. Input dapat disimpulkan karena ekspresi pertama selalu A ^ B.

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
Hobi Calvin
sumber
@ Jonathan Allan Ya, Anda mendapatkan semua kesalahan ketik yang saya lihat. Pekerjaan yang baik! Anda tidak mendapat apa-apa.
R. Kap
2
Anda mendapatkan terima kasih dari saya @ Jonathan Allan. R. Kap membuat saya khawatir tentang ketiga anak saya
Calvin's Hobbies
Yah, (untungnya) tidak ada yang salah tempat =di sebelah kiri 3.
R. Kap
5
Tolong jangan lakukan "memperluas notasi panah knuth's up" waktu berikutnya
Matthew Roh
1
Jika kita membaca input dari STDIN sebagai string tunggal, apakah 2^3format input yang valid? Atau harus dipisahkan dengan spasi / koma / linefeed atau semacamnya?
Martin Ender

Jawaban:

11

Python 3.6 , 88 74 byte

-2 byte terima kasih kepada Dada (gunakan ~)
-5 byte terima kasih kepada Erwan (gunakan f-string dari Python 3.6)

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

ide online siapa pun?

Bagaimana?

Ini adalah fungsi tanpa nama yang mengambil dua input integer adan bmasing - masing lebih besar dari 0(meskipun spesifikasinya hanya untuk yang lebih besar dari 1).

Dalam Python 3.6 tersedia fitur baru, yaitu string string yang diformat atau "f-string". Ini memungkinkan run-time dievaluasi konstruksi string. Seorang pemimpin f(atau F) menciptakan konstruksi seperti itu, misalnya f"blah"atau f'blah'. Di dalam apa pun f-string antara sepasang kawat gigi {...},, adalah ekspresi yang harus dievaluasi.

Dengan demikian f"{a}^{b}={a}{f'*{a}'*~-b}={a}{f'+{a}'*~-a**~-b}=1"mengevaluasi masing-masing a, b, a, f'*{a}'*~-b, a, dan f'+{a}'*~-a**~-b}sebagai ekspresi, menjaga ^, =, =, dan =1sebagai string, yang semuanya akan concatenated bersama-sama.

The adan bekspresi mengevaluasi ke representasi adan bmasing-masing.

The f'*{a}'dan f'+{a}'pada gilirannya juga f-string dalam ungkapan-ungkapan ini, yang mengevaluasi adengan terkemuka '*'dan terkemuka '+'masing-masing

Untuk membuat jumlah as dan operasi yang diperlukan untuk *dan +bagian perhatikan bahwa akan ada b ayang dikalikan bersama dan a**(b-1) aditambahkan bersama. Setiap kasing kemudian membutuhkan satu tanda operator lebih sedikit dari jumlah as. Jadi kita dapat mengulangi string-f f'*{a}dan f'+{a}'(menggunakan *) sebanyak yang ada operator dan masing-masing prepend dengan satu a. (b-1)adalah ~-bdan (a**(b-1))-1sekarang ~-a**~-b.

Hal yang sama dilakukan untuk 1s menggunakan (a**b)-1makhluk ~-**b, tapi kita tidak perlu overhead f-string karena 1adalah konstan, sehingga string standar diulang concatenated dengan +.


Versi Python sebelumnya, 81:

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

Cobalah online!

Jonathan Allan
sumber
Tidak bisakah Anda ganti (b-1)dengan ~-b?
Dada
Ya Anda benar, saya melewatkan itu.
Jonathan Allan
1
Anda dapat memenangkan 5 byte, jika Anda menggunakan f string dari python 3.6:lambda a,b:f"{a}^{b}={(f'*{a}'*b)[1:]}={(f'+{a}'*a**~-b)[1:]}=1"+'+1'*~-a**b
Erwan
@ Erwan ya, saya berencana menggunakan f string ketika saya kembali (sekarang). Saya dapat menyimpan lebih banyak pasangan juga.
Jonathan Allan
1
Selalu baik untuk melihat operator kecebong.
Jack Brounstein
11

Cubix, 238 234 217 151 110 100 byte

Disimpan 14 byte berkat ETHProductions

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

Diperluas:

          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 \ . . . . .
. . . . . . . . . . . . . . . . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .
          . . . . .

Cobalah online!

Coba di sini

Penjelasan

Kode terdiri dari 8 langkah, dengan dua loop. Saya akan membahas bagian kode bagian demi bagian.

Langkah 1 (A ^ B)

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

Ini adalah kubus dengan bagian-bagian yang tidak relevan dengan langkah pertama yang dihapus. Tanda tanya menunjukkan no-ops yang akan dikunjungi IP, untuk membuat jalurnya lebih jelas.

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)

Sekarang, tumpukan terlihat seperti ini: A, B, A, B

Langkah 2 (bersiap untuk loop cetak)

Loop cetak memakan waktu 3 argumen (bagian atas 3 elemen pada stack): P, Qdan R. Padalah jumlah pengulangan, Qadalah pemisah (kode karakter) dan Rmerupakan angka yang harus diulang. Untungnya, loop juga menangani persyaratan bahwa string yang dihasilkan harus diakhiri R, bukan Q.

Kami ingin mengulang A*tepat Bwaktu, jadi pemisahnya *. Perhatikan bahwa tumpukan dimulai sebagai A, B, A, B. Sekali lagi, saya menghapus semua instruksi yang tidak relevan. IP mulai di Smenunjuk utara.

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

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

Tumpukan sekarang A, B, B, *, A.

Langkah 3/6/8 (lingkaran cetak)

Konsep

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

IP memasuki loop through S, menunjuk ke utara, dan keluar dari loop pada E, menunjuk ke utara lagi. Untuk penjelasan ini, tumpukan diatur ke [..., A, B, C]. Instruksi berikut dijalankan. Perhatikan bahwa IP tidak dapat meninggalkan loop sebelum tanda tanya, jadi empat instruksi pertama akan selalu dieksekusi.

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 ...

Pelaksanaan

Inilah kubus lagi, dengan bagian-bagian yang tidak relevan dihapus. IP dimulai S, menunjuk ke timur.

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

Seperti yang Anda lihat, IP menemukan empat instruksi sebelum memasuki loop. Karena kode karakter dihapus lagi, kita mencapai loop dengan tumpukan yang sama persis seperti yang kita masukkan bagian ini.

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

Di dalam loop, penjelasan di atas berlaku.

Langkah 4 (membedakan IP)

Karena kita menggunakan loop di atas beberapa kali, dan mereka semua menyebabkan IP berakhir di tempat yang sama, kita harus membedakan antara beberapa run. Pertama, kita dapat membedakan antara separator (run pertama memiliki *, sedangkan run dua dan tiga memiliki +sebagai separator). Kita dapat membedakan antara run 2 dan 3 dengan memeriksa nilai angka yang diulang. Jika itu salah, program harus diakhiri.

Perbandingan pertama

Inilah yang terlihat seperti pada kubus. IP dimulai pada S dan menunjuk ke utara. Tumpukan berisi [..., * or +, A or 1, 0]. Angka 1 menunjukkan di mana IP akan berakhir jika ini adalah loop pertama (menunjuk ke utara) dan angka 2 menunjukkan di mana IP akan berakhir jika ini adalah loop kedua (atau ketiga) (menunjuk ke timur).

          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.

Jika IP sekarang di 1, tumpukan adalah [A, *, +, -1]. Jika tidak, tumpukannya [A or 1, +, +, 0]. Seperti yang Anda lihat, masih ada yang tidak diketahui dalam tumpukan kasus kedua, jadi kita harus melakukan perbandingan lain.

Perbandingan kedua

Karena IP telah melalui langkah 5, tumpukan terlihat seperti ini: [A^(B-1) or nothing, A or 1, +, +, 0]. Jika elemen pertama adalah nothing, elemen kedua adalah 1, dan kebalikannya juga berlaku. Kubus terlihat seperti ini, dengan IP mulai dari S dan menunjuk ke timur. Jika ini adalah loop kedua, IP berakhir di E, menunjuk ke barat. Jika tidak, program akan menyentuh @dan berakhir.

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

Instruksi yang dijalankan yang tidak melakukan apa pun untuk aliran kontrol tercantum di bawah ini.

;;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

Tumpukan sekarang [A^B, +, A^(B-1), A-1], asalkan program tidak berhenti.

Langkah 5 (mempersiapkan "A +" (ulangi A ^ (B-1)))

Sayangnya, Cubix tidak memiliki operator listrik, jadi kita perlu loop lain. Namun, kita perlu membersihkan tumpukan dulu, yang sekarang berisi [B, A, *, +, -1].

Membersihkan

Ini kubusnya lagi. Seperti biasa, IP dimulai pada S (menunjuk ke utara), dan berakhir di E, menunjuk ke barat.

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

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

Menghitung A ^ (B-1)

Loop lain yang bekerja kurang lebih sama dengan loop cetak, tetapi sedikit lebih kompak. IP dimulai S, menunjuk ke barat, dengan tumpukan [B, A, *]. IP keluar di Emenunjuk utara.

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

Badan loop adalah sebagai berikut.

;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 ...

Tumpukan yang dihasilkan adalah [A, A^(B-1), 0].

Membersihkan tumpukan (lagi)

Sekarang kita perlu kembali ke loop cetak, dengan bagian atas tumpukan berisi [..., A^(B-1), +, A]. Untuk melakukan ini, kami menjalankan yang berikut ini. Ini kubusnya lagi,

          . . ^ ? :
          . . . . .
          . . . . .
          . . . . .
          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])

Langkah 7 (mempersiapkan loop terakhir)

Tumpukannya sekarang [A^B, +, A^(B-1), A-1], IP mulai S, ke barat, dan berakhir pada E, ke kanan.

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

Instruksi dijalankan:

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

Tumpukan sekarang terlihat seperti [A^B, +, 1], dan IP akan memasuki lingkaran cetak, jadi kita sudah selesai.

Luke
sumber
2
Ya tolong buat penjelasan, setidaknya buat versi kubus tanpa ungolfed
Destructible Lemon
Saya telah menyelesaikan penjelasannya
Luke
Siapa yang membuat bahasa ini ... Ini seperti hex-agony tetapi cube-agony. Seseorang membuat penderitaan hex-3D.
Magic Octopus Urn
1
@carusocomputing Dan polyhedron apa yang akan menjadi 3D hex, hm?
mbomb007
1
Anda mungkin bisa membuat bahasa yang berjalan pada struktur 3D tetrahedron tessellated.
mbomb007
7

MATL , 46 byte

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

Cobalah online!

Membentang batas "cara yang masuk akal" di sini, tetapi ungkapannya terpisah.

Penjelasan

Ekspresi pertama:

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

Ekspresi kedua:

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

Ekspresi ketiga:

&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

Ekspresi keempat:

&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
B. Mehta
sumber
6

JavaScript (ES7), 78 byte

Mengambil input dalam sintaks currying (a)(b). Menghasilkan string.

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

Uji kasus

Arnauld
sumber
3

Ruby, 52 byte

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

05AB1E , 30 byte

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

Penjelasan:

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

Cobalah online!

Okx
sumber
¹²'^ý ¹'*¹«²<׫¹²m¹÷¹s×S'+ý 1¹²m×S'+ý», mengapa Anda mengalahkan saya dengan 5 byte :(?
Magic Octopus Mm
1
Karena aku. : P
Okx
Untuk beberapa alasan saya melihat jawaban Anda dan membaca "80 byte" dan berpikir pada diri saya sendiri, "mudah dikalahkan", kemudian saya membuat milik saya dengan tujuan 80 dalam pikiran ... Kemudian lagi, saya pikir ranjau lebih pendek pada beberapa hal dan sebagainya adalah milikmu haha.
Magic Octopus Urn
¹²«¹²×¹¹²m©¹÷×1®×)vySN"^*++"èý,lebih dekat ;). Anda hanya menang dengan 1 sekarang;).
Magic Octopus Urn
2

C (gcc) , 156 149 byte

#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);}

-2 byte jika kita dapat mengabaikan 0 kekuatan; y=!!imungkin menjadiy=1

Cobalah online!

Ahemone
sumber
2

Java 7, 170 byte

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;}

Tidak Disatukan:

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;
}

Kode uji:

Coba di sini.

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));
  }
}

Keluaran:

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
Kevin Cruijssen
sumber
1

Pip , 38 35 34 byte

33 byte kode, +1 untuk -nbendera.

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

Mengambil A dan B sebagai argumen baris perintah; mencetak satu ekspresi per baris. Cobalah online!

Penjelasan

Ya**badalah kode penyiapan: tarik a**bke dalam yvariabel. Setelah itu, kami memiliki daftar yang []berisi empat ekspresi kami:

  • gJ'^: ambil gdaftar ar lengkap (di sini, daftar yang berisi adan b) dan Jnyalakan^
  • aRLbJ'*: gunakan Repeat List untuk membuat daftar dengan bsalinan a, lalu Jnyalakan*
  • aRLy/aJ'+: gunakan RLuntuk membuat daftar dengan y/a(yaitu a**(b-1)) salinan a, lalu Jnyalakan+
  • 1XyJ'+: 1, string-dikalikan dengan y, Jdiaktifkan+

Daftar dicetak dengan baris baru sebagai pemisah berkat -nbendera.

DLosc
sumber
1

Javascript 115 113 104 byte

Terima kasih kepada @Neil dan @TuukkaX untuk bermain golf masing-masing satu byte dan @ETHproductions dan Luke untuk bermain golf dengan 9 byte

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)]

Cobalah secara Online

fəˈnɛtɪk
sumber
Anda bisa menggunakan sintaks currying: a=>b=>.
Yytsi
Mengapa tidak '=1'+'+1'.repeat?
Neil
Anda dapat menyimpan byte lebih lanjut dengan .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`=`
ETHproduk
Jika Anda mengartikan "Keempat ungkapan itu mungkin merupakan keluaran dengan cara yang masuk akal apa pun asalkan sesuai dan jelas berbeda." untuk menyertakan pengembalian array dengan empat elemen berbeda, Anda bahkan tidak perlu .join()...
Luke
1

Jelly , 29 byte

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

Cobalah online!

Bagaimana?

*⁹’,¤;@ - 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
Jonathan Allan
sumber
1

tinylisp repl, 178 186 bytes

(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

Menggunakan repl menghemat 8 byte dalam tanda kurung tersirat di ujung garis. Menentukan fungsi Xyang mengambil dua angka dan mengembalikan daftar ekspresi. Setiap ekspresi dikurung, dengan spasi di sekitar operator (sebenarnya, itu adalah daftar angka dan simbol operator):

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

Semoga format output ini dapat diterima. Cobalah online! (dengan beberapa kasus uji).

Penjelasan

(load library)

Kami membutuhkan dua fungsi dari pustaka standar: listdan *.

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

Tentukan fungsi W(kependekan dari "weave") yang mengambil akumulator _, angka N, simbol S, dan hitungan #. Kami akan menggunakan fungsi ini untuk menghasilkan sebagian besar ekspresi kami: misalnya, (W () 2 (q +) 3)akan menghasilkan (2 + 2 + 2).

Jika hitungnya 1 (e # 1), maka konsirmasikan angka ke depan akumulator (c N _)dan kembalikan itu. Jika tidak, kambuh:

  • Akumulator baru adalah (c S(c N _)): simbol dan nomor dituju ke depan akumulator sebelumnya;
  • Ndan Ssama;
  • Hitungan baru adalah (s # 1): hitungan - 1.

Ungkapan akumulator diperlukan untuk mencapai rekursi ekor yang tepat , mencegah kesalahan kedalaman rekursi. (Perubahan ini bertanggung jawab untuk +8 ke jumlah byte. 13^2Kasing tidak bekerja di versi sebelumnya.)

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

Sayangnya, perpustakaan tidak memiliki fungsi eksponensial saat ini, jadi kami harus mendefinisikannya. ^mengambil xdan y. Jika ybenar (bukan nol), kita kambuh dengan y-1( (s y 1)) dan kalikan hasilnya dengan x. Kalau tidak, ynol dan kami kembali 1.

(Catatan: Fungsi ini tidak menggunakan rekursi ekor yang tepat. Saya berasumsi bahwa eksponen akan cukup kecil sehingga tidak masalah. Beberapa percobaan di TIO menunjukkan eksponen maksimum 325, yang menurut saya cukup untuk pertanyaan ini. Jika OP tidak setuju, saya akan mengubahnya.)

(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))))))

Akhirnya, fungsi kita tertarik, X, mengambil Adan Bdan kembali daftar empat item:

  • (list A(q ^)B): daftar yang berisi A, literal ^, dan B;
  • (W()A(q *)B): panggilan Wuntuk mendapatkan daftar Bsalinan A, terjalin dengan literal *;
  • (W()A(q +)(^ A(s B 1))): panggilan Wuntuk mendapatkan daftar A^(B-1)salinan A, terjalin dengan literal +;
  • (W()1(q +)(^ A B)): panggilan Wuntuk mendapatkan daftar A^Bsalinan 1, terjalin dengan literal +.
DLosc
sumber
1

Brainfuck , 372 byte

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

Cobalah online!

Catatan

  1. Kedua input harus dipilih sedemikian rupa, A**Btidak melebihi 255. Ini karena brainfuck hanya dapat menyimpan nilai satu byte.
  2. Jika satu input lebih besar dari 9, gunakan karakter ASCII berikutnya. 10menjadi :, 11menjadi ;dll. Ini karena Brainfuck hanya dapat mengambil input satu byte.

Penjelasan

Ini kode saya yang agak dikomentari. Saya akan memperluas ini nanti.

,.                      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
Luke
sumber
0

Pyth, 32 31 byte

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

Mengambil input as [2,10], output as["2^10", "2*2*2*2*2*2*2*2*2*2", "2+2+...

Penjelasan:

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,...
)                                     #

Coba di sini.

busukxuan
sumber
0

Perl , 81 byte

78 byte kode + -nbendera (dihitung sebagai 3 byte karena mengandung kode $').

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

Cobalah online!

Dada
sumber
0

R, 147 byte

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")}

Fungsi anonim yang menampilkan yang diperlukan, baik, keluaran, baris demi baris. Solusi ini memanfaatkan switchfungsi secara luas.

The switchFungsi mengambil ekspresi (di sini, s) yang mengevaluasi ke nomor atau string karakter (lihat ?switch), diikuti oleh alernatives sesuai dengan s. Jika suatu alternatif hilang (misalnya switch(s, a=, b= "PPCG"), alternatif tidak hilang berikutnya dievaluasi (dalam contoh, s="a"keluaran "PPCG").

The repfungsi mengulangi (ulangan, sebenarnya) argumen pertama jumlah kali ditunjukkan dalam argumen kedua.

cat, untuk menyelesaikan, menggabungkan dan mencetak objek, dengan pemisah yang dapat dipilih dengan sep =argumen. Fungsi kedua di catsini untuk jeda baris.

Tidak Disatukan:

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")
}
Frédéric
sumber
0

k, 44 byte

{"^*++"{x/$y}'(x,y;y#x;(x*y-1)#x;(*/y#x)#1)}

Uji kasus.

zgrep
sumber
0

Kardinal 202 byte

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

Hanya akan berfungsi untuk angka-angka di mana nilai yang dihitung <256 karena keterbatasan dalam nilai-nilai yang dapat dipegang oleh pointer di Cardinal

Cobalah secara Online

Penjelasan:

Langkah 1

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

Menerima dua angka a dan b sebagai input dan output sebagai "a ^ b ="
Melewati sebuah pointer dengan nilai aktif a dan nilai tidak aktif b

Langkah 2

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

Menerima pointer dengan nilai aktif a dan nilai tidak aktif b mencetak "a" + ("* a") (b-1) kali
Melewati pointer dengan nilai aktif a ^ (b-1) ke bagian selanjutnya

Langkah 3

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

Menerima pointer dengan nilai a ^ (b-1) dan output "= a" + ("+ a") diulang (a ^ (b-1) -1) kali + "="
Melewati sebuah pointer dengan nilai a ^ b ke bagian selanjutnya

Langkah 4

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

Menerima pointer dengan nilai a ^ b dan mencetak "1" + ("+ 1") diulangi ^ b-1 kali

fəˈnɛtɪk
sumber
0

Retina, 89 88 byte

*`,
^
+`(1+),1
$1*$1,
:`.1+.$

{`^[1+]+
a$&z
+`a(.+)z.1
$1+a$1z*
)`.a.+z.

:`a

+`11
1+1

Input adalah nomor unary yang dipisahkan koma.

Cobalah online!

CalculatorFeline
sumber