Tujuan Anda adalah untuk menulis sebuah program yang mengambil input, dan, ketika dirantai bersamaan N
, melakukan "multiplikasi berurutan". Apa itu perkalian berurutan, Anda mungkin bertanya? Ini adalah urutan dengan seed yang a
didefinisikan sebagai berikut:
f(0) = a
f(n+1) = f(n)*(f(n)-1)
Jadi, biarkan a = 5
. Dengan demikian, f(0) = 5
, f(1) = f(0)*(f(0)-1) = 5*4 = 20
, dan f(2) = f(1)*(f(1)-1) = 20*19 = 380
.
Jika program Anda ABC
, maka ABC
harus mengambil input a
dan output f(1)
. Program ABCABC
harus menampilkan f(2)
, dll. Seri program Anda hanya boleh mengambil input satu kali dan hanya output satu kali.
Ini adalah kode-golf sehingga program terpendek dalam byte menang. Celah standar dilarang.
sumber
if
danelse
.CJam, 5 byte
Cobalah online!
Bagaimana itu bekerja
sumber
pl, 5 byte
Cobalah online.
Akan menjadi 4 byte jika saya tidak malas dan tidak menerapkan "assign to _" ...
Penjelasan
sumber
05AB1E , 3 byte
Kode:
Penjelasan:
Cobalah online!
sumber
GolfScript, 5 byte
Cobalah online.
De-golf dan berkomentar:
Interpreter GolfScript secara otomatis membaca input dan menempatkannya di tumpukan, tetapi sebagai string, bukan sebagai angka. Jadi, kita perlu mengubah input menjadi angka dengan
~
, dan menggantinya lagi dengan`
. Pada akhirnya, juru bahasa akan secara otomatis mencetak nomor yang diketik pada tumpukan.(Sekarang, jika tantangannya adalah untuk beralih
f(n+1) = f(n)*(-f(n)-1)
, saya bisa melakukan itu dalam 4 byte dengan~.~*
. Mencari tahu bagaimana dan mengapa itu berhasil dibiarkan sebagai latihan. :)sumber
JavaScript REPL,
2520 byteAkan berupaya menghilangkan REPL
sumber
Lua,
3518 BytesItu sesuatu yang bisa dilakukan Lua dengan mudah sekali!
Sunting: Saya telah menemukan banyak hal di Lua sejak saya melakukan ini, jadi saya memperbaruinya :)
...
berisi argumen baris perintah yang tidak dibongkar, yang akan digunakan adalah nilai pertama dalam kasus ini karena tidak akan diizinkan untuk dikeluarkan, sehingga hanya mencetakn*(n-1)
.sumber
Y , 7 byte
Coba di sini!
Beginilah cara kerjanya:
j
mengambil input numerik.z
mengaktifkan pencetakan implisit.C
memulai tautan baru.:
menduplikasi nilai pada stack, dant
menurunkannya, meninggalkan kita[a a-1]
. Lalu, kita dapatkan[a*a-a]
dari*
.!
melompati perintah selanjutnya; pada EOF, itu tidak melakukan apa-apa. Ketika dirantai bersama, itu melompati perintah input, dan proses dimulai lagi.sumber
Jolf, 6 byte
Coba di sini!
Penjelasan
sumber
𝔼𝕊𝕄𝕚𝕟, 5 karakter / 7 byte
Try it here (Firefox only).
Haruskah saya benar-benar menjelaskan ini? Oh well, ini dia ...
Penjelasan
Ini pada dasarnya dievaluasi
input*=--input;
dalam JS.sumber
Perl, 23 byte
Versi alternatif, 10 byte
Ini membutuhkan
-p
sakelar. Saya tidak yakin apakah itu permainan yang adil dalam pertanyaan tata letak sumber .sumber
Haskell,
1411 byteContoh penggunaan
Mungkin ini bukan fungsi yang tepat. Jika Anda melakukan nitpicking, Anda dapat menggunakan
(*)=<<pred$id
(<-ada spasi di bagian akhir) selama 14 byte.Sunting: @Zgarb menulis ulang fungsi menggunakan fungsi monad dan menyimpan 3 byte. Terima kasih!
sumber
(*)=<<pred$
menghemat 3 byte. Juga, harus dicatat bahwa ini sebenarnya tidak mendefinisikan suatu fungsi, dan nilai input harus ditempatkan langsung setelahnya.id
membuatnya menjadi fungsi yang tepat. Saya sudah mencatat di jawaban saya.Bash murni (tanpa utilitas), 40
sumber
TI-Basic,
65 byteBerjalan pada kalkulator TI-83/84
Program ini berfungsi karena fakta bahwa ekspresi pada baris terakhir program dicetak bukan
Done
teks biasa .sumber
:Ans²-Ans
Mathcad, 39 "byte"
Dari perspektif pengguna, Mathcad secara efektif adalah papan tulis 2D, dengan ekspresi dievaluasi dari kiri ke kanan, atas-ke-bawah. Mathcad tidak mendukung input "teks" konvensional, tetapi malah menggunakan kombinasi teks dan item tombol / toolbar / menu khusus untuk menyisipkan ekspresi, teks, plot, atau komponen. Misalnya, ketik ":" untuk memasukkan operator definisi (ditampilkan di layar sebagai ": ="), "[" untuk memasukkan indeks array, atau "ctl-" "untuk memasukkan operator loop sementara (termasuk placeholder untuk mengendalikan kondisi dan ekspresi satu tubuh). Apa yang Anda lihat pada gambar di atas adalah persis apa yang muncul pada antarmuka pengguna dan sebagai "mengetik" pada.
Untuk tujuan bermain golf, hitungan "byte" adalah jumlah yang setara dengan operasi keyboard yang diperlukan untuk memasukkan ekspresi.
Satu hal yang saya bahkan kurang yakin tentang (dari sudut pandang kesetaraan "byte") adalah bagaimana cara menghitung membuat wilayah baru (misalnya, a: = 5 atau k: = 0..n-1). Saya telah menyamakan setiap perpindahan ke wilayah baru sama dengan baris baru, dan karenanya 1 byte (dalam praktiknya, saya menggunakan mouse untuk mengklik di mana saya ingin wilayah tersebut).
Saya hanya menyertakan pernyataan aktif dan bukan komentar, dan saya sudah memasukkan masing-masing 2 byte untuk input a dan n tetapi tidak nilainya sendiri (5 dan 7 dalam contoh).
sumber
Haskell, 72 byte
Tantangan ini tidak bersahabat dengan Haskell .. Namun, berikut ini berfungsi jika input tidak digunakan dan kode dieksekusi dalam GHCI:
Penjelasan:
Unary selalu aneh, jadi aplikasi pertama akan dikonversi ke desimal.
x*(x-1)
selalu sama, jadi jika tidak kembalix*(x-1)
, di manax
input. Karena Haskell sangat diketik dan simbol 'khusus' tidak bisa disebut seperti&1
, saya percaya bahwa ini adalah satu-satunya cara untuk menyelesaikan ini di Haskell, kecuali satu menggunakan variabel global atau bentuk input yang bahkan lebih aneh.sumber
C ++ (gcc) , 173/176 byte
Kedua versi memiliki baris baru yang penting di bagian akhir.
Versi makro, 173 byte
Cobalah online!
Versi templat, 176 byte
Agak lebih C ++ ish:
Cobalah online!
sumber
Burlesque - 5 byte
sumber