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 -
code-golf
number
arithmetic
integer
code-golf
math
number
geometry
code-golf
grid
code-golf
math
number
sequence
primes
code-golf
sequence
kolmogorov-complexity
code-golf
string
ascii-art
alphabet
code-golf
math
sequence
integer
code-golf
number-theory
integer
natural-language
code-golf
date
code-golf
function
code-golf
ascii-art
code-golf
math
number-theory
primes
classification
code-golf
array-manipulation
decision-problem
matrix
code-golf
number
code-golf
code-golf
ascii-art
matrix
code-golf
string
code-golf
sequence
base-conversion
code-golf
code-golf
math
number-theory
combinatorics
integer-partitions
code-golf
integer
binary
base-conversion
code-golf
integer
base-conversion
palindrome
code-golf
code-golf
integer-partitions
code-golf
math
ascii-art
matrix
code-golf
number
sequence
number-theory
matrix
code-golf
interpreter
code-golf
graph-theory
code-golf
ascii-art
decision-problem
code-golf
division
code-golf
array-manipulation
primes
code-golf
string
ascii-art
code-golf
primes
counting
code-golf
matrix
unicode
code-golf
source-layout
code-golf
grammars
code-golf
string
cops-and-robbers
regular-expression
obfuscation
string
code-challenge
cops-and-robbers
regular-expression
code-golf
kolmogorov-complexity
game
card-games
code-golf
kolmogorov-complexity
code-golf
array-manipulation
matrix
code-challenge
cops-and-robbers
code-challenge
decision-problem
cops-and-robbers
code-golf
permutations
Kevin Cruijssen
sumber
sumber
--
. Sebagai contoh1991 = 2, -/3 = 3
. (Banyak bahasa mengacaukan hal ini dengan operator penurunan.)91 19
jika solusinya9--9
dan tidak ada ruang9119
jika solusinya9229
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-
?Jawaban:
Perl 6 ,
132113 byteTerima kasih kepada Jo King untuk -19 byte.
Cobalah online!
Input adalah string persamaan yang dipisah koma dan string hasil yang dipisahkan koma (harap ini OK). Output adalah string yang berisi dua tombol yang ditukar.
Menangani dengan benar
--
. Produk kekuatan positif palsu untuk---
,++
,**
, atau//
, tapi aku tidak bisa datang dengan kasus uji.sumber
---
;++
;**
;//
; atau hal-hal lain seperti*+
dll Satu-satunya ganda yang berdekatan non-digit Anda harus dukungan--
. Juga, jika saya memahami kode Anda dengan benar, Anda tidak akan perlu.subst('-','- '
, karena memasukkan test case-5--15
dengan spasi diperbolehkan. Anda bukan yang pertama menambahkan kode untuk menambahkan ruang ini secara terprogram, jadi saya akan menentukan ini lebih jelas dalam deskripsi tantangan.**
karena mereka memiliki arti sebagai ekspresi Perl 6 dan mungkin menyebabkan positif palsu.1992 = 1
bisa1**2 = 1
atau1//2 = 1
, misalnya. Inisubst
untuk kasus di mana persamaan yang benar berisi--
, misalnya kasus uji baru yang Anda tambahkan.JavaScript (ES7),
159158 byteSunting: versi baru untuk mematuhi aturan yang diperbarui tentang
--
Tersimpan 1 byte berkat @Shaggy
Mengambil input dalam sintaks currying di
(e)(r)
mana e adalah array dari persamaan dan r adalah array dari hasil yang diharapkan. Mengembalikan array karakter.Uji kasus
Tampilkan cuplikan kode
Diformat dan dikomentari
sumber
eval
memasukkantry / catch
: codepen.io/anon/pen/rzRrLp .1991 = 2
. Solusinya harus1--1 = 2
dengan9
dan-
ditukar.Python 2 ,
204,199,193,173, 165 byteCobalah online!
sumber
Oracle SQL & PL / SQL, 458 Bytes
Kompilasi fungsi PL / SQL (210 byte):
Jalankan SQL (248 byte):
Setelah membuat tabel
T
dengan data tes:Keluaran:
Versi Sebelumnya :
Diasumsikan input string seperti
'123 = 3'
:Fungsi PL / SQL dan SQL (322 byte) yang sama:
Setelah membuat tabel
T
dengan data tes:Keluaran:
Pembaruan - Pengujian :
SQL Fiddle
Pengaturan Skema Oracle 11g R2 :
Pertanyaan 1 :
Hasil :
Pertanyaan 2 :
Hasil :
Pertanyaan 3 :
Hasil :
Pertanyaan 4 :
Hasil :
Pertanyaan 5 :
Hasil :
Pertanyaan 6 :
Hasil :
sumber
||REPLACE(x,'--','- -')||
, format input / output fleksibel, jadi Anda diizinkan untuk memasukkan-5--15
seolah--5- -15
olah Anda mau. Juga, apa cara termudah bagi saya untuk memverifikasi semua kasus uji berfungsi, terutama yang terakhir? Apakah tautan TIO bisa dilakukan?||REPLACE(x,'--','- -')||
digunakan untuk persamaan yang diharapkan yang benar, seperti kasus uji terakhir yang saya tambahkan?--
memulai komentar dalam SQL, sehingga kasus uji perlu dirumuskan sehingga--
tidak pernah terjadi dalam persamaan (menggantinya dengan- -
) atau memerlukan beberapa kode defensif untuk mencegahnya.13116/3 = -1
perlu ditulis131 16/3 = -1
untuk menghapus panggilan ituREPLACE
.Powershell,
222209192 byteNaskah uji dan penjelasan:
Keluaran:
sumber
05AB1E , 21 byte
Input sebagai dua daftar, yang pertama adalah persamaan dan yang kedua adalah hasilnya. Output sebagai daftar pasangan yang difilter dengan kedua rotasi (yaitu
[["2","*"],["*","2"]]
).Cobalah secara online atau verifikasi semua kasus uji . (CATATAN: Menggunakan versi lawas 05AB1E di TIO, karena
.E
dinonaktifkan di versi yang lebih baru di TIO. Karena itu, ditambahkanï
(cast to integer) tambahan, karena dalam versi lawas 05AB1E1.0
dan1
daftar di dalam tidak sama. .)Penjelasan:
sumber