Saya melihat BIDMAS Anda dan memberi Anda BADMIS
Tantangan
Diberikan satu set angka dengan operator di antara mereka: "5 + 4 * 9/3 - 8", kembalikan semua hasil ekspresi yang mungkin untuk setiap permutasi dari urutan operasi dasar: [/, *, +, -].
Aturan
- Celah standar dilarang
- I / O
- Input harus dipesan dengan operasi infiks, tetapi yang paling mudah (string atau array)
- Anda tidak diharuskan mendukung operator unary (mis. "-3 * 8 / +2")
- Integer dapat diganti dengan float untuk bahasa yang secara implisit menguraikan tipe (mis. 45 ⟶ 45.0)
- Keluaran harus berupa semua hasil ekspresi yang mungkin, tanpa format atau urutan yang ditentukan
- Semua input valid (mis. Tidak perlu berurusan dengan "7/3 + *"). Ini juga berarti bahwa Anda tidak perlu membagi dengan nol.
- Semua operator asosiatif kiri sehingga "20/4/2" = "(20/4) / 2"
- Ini adalah Code Golf sehingga jumlah byte yang paling sedikit menang
Test Cases (Dengan penjelasan)
- "2 + 3 * 4" = [14, 20]
- 2 + (3 * 4) ⟶ 2 + (12) ⟶ 14
- (2 + 3) * 4 ⟶ (5) * 4 ⟶ 20
- "18/3 * 2 - 1" = [11, 2, 6]
- ((18/3) * 2) - 1 ⟶ ((6) * 2) - 1 ⟶ (12) - 1 ⟶ 11
- (18/3) * (2 - 1) ⟶ (6) * (1) ⟶ 6
- (18 / (3 * 2)) - 1 ⟶ (18 / (6)) - 1 ⟶ (3) - 1 ⟶ 2
- 18 / (3 * (2 - 1)) ⟶ 18 / (3 * (1)) ⟶ 6
- 18 / ((3 * 2) - 1) ⟶ 18/5 ⟶ 3.6
Test Cases (Tanpa penjelasan)
- "45/8 + 19/45 * 3" = [6.891666666666667, 18.14166666666666666, 0,11111111111111113, 0,01234567901234568, 0,01234567901234568, 0,01234567901234568, 5.765740740740741]
- "2 + 6 * 7 * 2 + 6/4" = [112 196 23 87.5]
code-golf
permutations
Freddie R
sumber
sumber
2 - 3 + 4
=>[-5, 3]
2*3-6+2-9/6*8+5/2-9
memberikan 24 hasil berbeda.Jawaban:
JavaScript (V8) ,
118112 byteMencetak hasilnya.
Cobalah online!
Atau lihat hasil deduplikasi .
sumber
C # (Visual C # Interactive Compiler) , 285 byte
Cobalah online!
sumber
JavaScript (Node.js) , 132 byte
Cobalah online!
Ini memungkinkan duplikasi output.
JavaScript (Node.js) ,
165161155153152137 byteCobalah online!
Mengambil string dengan spasi antara operator dan angka.
sumber
[3, -5]
sekarang.Perl 6 ,
92 9088 byteCobalah online!
Mengambil string dengan spasi setelah operator apa pun dan mengembalikan serangkaian angka. Ini sebagian besar bekerja dengan mengganti semua instance dari
n op n
dengan hasil yang dievaluasi untuk semua permutasi operator.Penjelasan:
sumber
set
, karena kondisi untuk menghilangkan duplikat telah dihapus. Kode yang bagusPython 3 , 108 byte
Cobalah online!
Fungsi mengambil string tunggal sebagai input dan mengembalikan daftar hasil yang mungkin.
Tidak disatukan
Cobalah online!
sumber
Jelly , 30 byte
Cobalah online!
Sepasang tautan. Yang kedua adalah tautan utama, dan sebagai argumennya daftar Jelly float / integer diselingi dengan operator sebagai karakter. Ini adalah versi rata dari cara Jelly mengambil inputnya ketika dijalankan sebagai program lengkap dengan argumen baris perintah. Nilai balik tautan adalah daftar daftar daftar anggota tunggal, yang masing-masing merupakan nilai yang mungkin untuk ekspresi.
Penjelasan
Tautan pembantu
Membawa daftar float / integer bergantian dengan operator (sebagai karakter) sebagai argumen kiri dan operator sebagai karakter sebagai argumen kanannya; mengembalikan daftar input setelah mengevaluasi angka yang dipisahkan oleh operator terkait, bekerja dari kiri ke kanan.
Tautan utama
Mengambil daftar float / integer bergantian dengan operator (sebagai karakter)
sumber
Python 2 ,
182172 byteCobalah online!
Mengambil input dengan int yang diformat sebagai float, sesuai "Integer dapat diganti dengan float untuk bahasa yang secara implisit tipe parse".
sumber
Julia 1.2 , 88 (82) byte
Membawa kaset dalam bentuk vektor angka dan fungsi infiks, mengevaluasi setiap panggilan fungsi tunggal dan secara rekursif melewati setiap kaset yang dihasilkan kembali ke dirinya sendiri sampai hanya satu nomor yang tersisa. Sayangnya,
get(t, (), ...)
tidak berfungsi dengan baik di Julia 1.0, sehingga diperlukan versi yang lebih baru.Enam byte dapat disimpan, jika sekelompok array bersarang dapat diterima sebagai output:
Keluaran:
sumber
Perl 5 (
-alp
), 89 byteTIO
atau nilai unik, 99 byte
sumber