pengantar
Kalkulator saya bertingkah aneh. Kadang-kadang ketika saya mengetik 8
itu menampilkan a 2
. Dan terkadang ketika saya mengetik a 6
itu menampilkan a +
. Beberapa tombol tercampur aduk!
Adakah yang bisa membantu saya menentukan yang mana?
Tantangan:
Input: Daftar persamaan yang salah , dengan hasil yang benar .
Output: Dua tombol yang ditukar.
Misalnya:
Suatu input dapat berupa:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Untuk itu output yang diharapkan adalah: 2
dan *
.
Mengapa? Karena SEMUA persamaan akan benar jika kita menukar 2 dan *:
1*3 = 3
84*3 = 252
4+4 = 8
427-10 = 417
9/3 = 3
4*-9 = -36
Aturan tantangan:
- Input dapat dalam format apa pun yang masuk akal. Dapat berupa string tunggal dengan ruang terbatas; daftar string atau -array; daftar dengan persamaan dan daftar lain dengan hasil yang benar. Panggilanmu. Harap sebutkan format input mana yang telah Anda gunakan!
CATATAN: Ini juga berarti Anda diizinkan memasukkan kasus uji-5--15
sebagai-5- -15
atau-5 - -15
. Namun, angka yang dihasilkan--
harus dimasukkan tanpa spasi atau dengan spasi di antara setiap digit. Jadi test case9119
dapat dimasukkan seperti9119
atau9 1 1 9
(alasan91 19
tidak diperbolehkan adalah karena Anda kemudian dapat dibimbing oleh ruang untuk menemukan- -
). Jadi spasi (agak) opsional dan diizinkan. - Format output juga bisa dalam format yang masuk akal. Bisa dua karakter; string dua karakter tunggal; daftar string yang berisi dua karakter. Panggilanmu. Sekali lagi, sebutkan format output mana yang telah Anda gunakan!
- Anda diizinkan untuk menggunakan 14 output berbeda yang dipetakan
0123456789+-*/
. Jadi Anda bahkan diperbolehkan untuk mengeluarkan dua bilangan bulat yang berbeda jika Anda mau (sekali lagi, sebutkan pemetaan yang Anda gunakan, jika ada). - Anda hanya perlu mendukung bilangan bulat. Jadi tidak akan ada test case seperti
1/8=0.125
atau1/8=0
. - Operan aritmatika yang harus Anda dukung: Selain (
+
); pengurangan (-
); multiplikasi (*
atau×
atau·
); divisi (/
atau÷
). (CATATAN: Karakter antara kurung hanya ditambahkan sebagai klarifikasi.) - Anda harus mendukung angka negatif. Ini berarti
-
dapat diartikan dalam persamaan sebagai operan matematika atau indikator negatif. - Anda dapat mengasumsikan persamaan yang diberikan salah dan seharusnya persamaan yang benar selalu valid (sehingga tidak akan ada hal-hal seperti
4-/2
atau9+-+8
misalnya). - Input-persamaan yang salah dapat berisi pembagian dengan 0, tetapi persamaan yang dikoreksi dan diharapkan tidak akan mengandung pembagian dengan 0.
- Input-persamaan yang salah sudah bisa benar bahkan jika Anda menukar tombol yang diinginkan kembali.
- Persamaan input yang diberikan dapat menjadi tidak relevan untuk tombol untuk bertukar (seperti
4+4=8
dan9/3=3
persamaan, dengan tombol swapped2
dan*
). - Anda dapat mengasumsikan akan selalu ada hanya satu kemungkinan swap yang dapat dilakukan dengan test case yang diberikan.
- Kedua tombol untuk bertukar akan selalu ada setidaknya dalam salah satu persamaan yang salah.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
Kasus uji:
Input:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Output: 2 *
Input:
4/2 = 6
3/0 = 3
0/8+2 = 4
95-5 = 90
4+2 = 2
Output: + /
Input:
7+4 = 11
5-15 = 46
212-23 = -2121
Output: 1 -
Input:
4+8/2-9*1 = -5
99/3-13 = 20
1+2+3+4 = 10
4-3-2-1 = -6
Output: 2 4
Input:
18/18 = 1
98-8 = 90
55*88 = 4840
-5--15 = 10
Ouput: 5 8
Input:
9119 = 18
5-3 = 513
8*-9 = 152
13116/3 = -1
Output: 1 -
--
. Sebagai contoh 1991 = 2, -/3 = 3
. (Banyak bahasa mengacaukan hal ini dengan operator penurunan.)
91 19
jika solusinya 9--9
dan tidak ada ruang 9119
jika solusinya 9229
membutuhkan pengetahuan tentang solusi saat membuat kasus uji. Jika ini dibolehkan, saya bisa menambahkan spasi hanya sebelum karakter yang ditukar dan solusinya dapat langsung berasal dari test case.
*
dan /
sebelum +
dan biner -
?