Ada 500 perwakilan hadiah tidak resmi untuk mengalahkan jawaban terbaik saat ini .
Tujuan
Tujuan Anda adalah melipatgandakan dua angka hanya dengan menggunakan rangkaian operasi aritmatika dan penugasan variabel yang sangat terbatas.
- Tambahan
x,y -> x+y
- Timbal balik
x -> 1/x
( bukan pembagianx,y -> x/y
) - Negasi
x -> -x
( bukan penguranganx,y -> x-y
, meskipun Anda bisa melakukannya sebagai dua operasix + (-y)
) - Konstanta
1
(tidak ada konstanta lain yang diizinkan, kecuali dihasilkan oleh operasi dari1
) - Tugas variabel
[variable] = [expression]
Penilaian: Nilai mulai dalam variabel a
dan b
. Tujuan Anda adalah untuk menyimpan produk mereka a*b
ke dalam variabel c
menggunakan sesedikit mungkin operasi. Setiap operasi dan penugasan +, -, /, =
biaya satu titik (setara, setiap penggunaan (1), (2), (3), atau (4)). Konstanta 1
gratis. Solusi poin paling sedikit menang. Tiebreak adalah posting paling awal.
Kelonggaran: Ekspresi Anda harus benar secara aritmatika untuk real "acak" a
dan b
. Hal ini dapat gagal pada subset ukuran nol dari R 2 , yaitu satu set yang tidak memiliki area jika diplot di a
- b
pesawat Cartesian. (Ini mungkin diperlukan karena kebalikan dari ekspresi yang mungkin 0
seperti itu 1/a
.)
Tatabahasa:
Ini adalah atom-kode-golf . Tidak ada operasi lain yang dapat digunakan. Secara khusus, ini berarti tidak ada fungsi, kondisional, loop, atau tipe data non-numerik. Berikut adalah tata bahasa untuk operasi yang diizinkan (kemungkinan dipisahkan oleh |
). Suatu program adalah urutan <statement>
s, di mana a <statement>
diberikan sebagai berikut.
<statement>: <variable> = <expr>
<variable>: a | b | c | [string of letters of your choice]
<expr>: <arith_expr> | <variable> | <constant>
<arith_expr>: <addition_expr> | <reciprocal_expr> | <negation_expr>
<addition_expr>: <expr> + <expr>
<reciprocal_expr>: 1/(<expr>)
<negation_expr>: -<expr>
<constant>: 1
Anda sebenarnya tidak harus memposting kode dalam tata bahasa yang tepat ini, asalkan jelas apa yang Anda lakukan dan jumlah operasi Anda benar. Misalnya, Anda dapat menulis a-b
untuk a+(-b)
dan menghitungnya sebagai dua operasi, atau mendefinisikan macro untuk singkatnya.
(Ada pertanyaan sebelumnya, Multiply tanpa Multiply , tetapi memungkinkan serangkaian operasi yang lebih longgar.)