Pengantar:
Mari kita lihat Kalkulator standar di Windows:
Untuk tantangan ini, kita hanya akan melihat tombol-tombol berikut, dan mengabaikan yang lainnya:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
Tantangan:
Input:
Anda akan menerima dua input:
- Salah satunya adalah sesuatu untuk menunjukkan rotasi dengan peningkatan 90 derajat
- Yang lainnya adalah daftar koordinat yang mewakili tombol yang ditekan pada kalkulator yang diputar.
Berdasarkan input pertama, kami memutar tata letak yang disebutkan di atas searah jarum jam dengan peningkatan 90 derajat. Jadi, jika inputnya 0 degrees
, tetap apa adanya; tetapi jika inputnya adalah 270 degrees
, ia akan diputar tiga kali searah jarum jam (atau sekali berlawanan arah jarum jam). Berikut adalah empat kemungkinan tata letak:
Default / 0 degrees:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
90 degrees clockwise:
0 1 4 7
0 2 5 8
. 3 6 9
+ - * /
180 degrees:
+ . 0 0
- 3 2 1
* 6 5 4
/ 9 8 7
270 degrees clockwise / 90 degrees counterclockwise:
/ * - +
9 6 3 .
8 5 2 0
7 4 1 0
Input kedua adalah daftar koordinat dalam format wajar † . Sebagai contoh (0-index 2D integer-array):
[[1,2],[2,3],[0,3],[1,0],[1,1]]
Output:
Kami menampilkan jumlah, serta hasilnya (dan tanda yang sama =
).
Contoh:
Jadi jika inputnya adalah 270 degrees
dan [[1,2],[2,3],[0,3],[1,0],[1,1]]
, outputnya akan menjadi:
517*6=3102
Aturan tantangan:
- † Input dapat dalam format apa pun yang wajar. Input pertama bisa
0-3
,1-4
,A-D
,0,90,180,270
, dll input kedua bisa menjadi 0-diindeks array 2D, 1-diindeks array 2D, String, daftar Point-benda, dll panggilan Anda. Bahkan mungkin untuk menukar koordinat x dan y dibandingkan dengan contoh input yang diberikan. Harap sebutkan format input mana yang Anda gunakan dalam jawaban Anda! - Anda diizinkan menambahkan spasi (yaitu
517 * 6 = 3102
) jika Anda mau. - Anda diijinkan untuk menambahkan tertinggal angka nol setelah koma, untuk max tiga (yaitu
3102.0
/3102.00
/3102.000
bukan3102
atau0.430
bukan0.43
). - Anda tidak diizinkan untuk menambahkan tanda kurung di output, jadi
(((0.6+4)-0)/2)/4=0.575
bukan output yang valid. - Anda diizinkan menggunakan simbol-simbol operan lain untuk bahasa Anda. Jadi
×
atau·
bukannya*
; atau÷
bukannya/
; dll. - Karena kalkulator secara otomatis menghitung ketika memasukkan operan, Anda harus mengabaikan prioritas operator! Jadi
10+5*3
akan menghasilkan45
((10+5)*3=45
), bukan25
(10+(5*3)=25
)
(yaitu10
→+
→5
→*
(sekarang menampilkan 15 di layar) →3
→=
(sekarang menampilkan jawabannya45
)). Ingatlah ini saat menggunakaneval
dan fungsi serupa pada jumlah yang dihasilkan. - Tidak akan ada uji kasus untuk pembagian dengan 0.
- Tidak akan ada kasus uji dengan lebih dari tiga digit desimal sebagai hasilnya, jadi tidak perlu membulatkan hasilnya.
- Tidak akan ada kasus uji di mana beberapa operan saling mengikuti, atau di mana dua titik saling mengikuti.
- Tidak akan ada kasus uji untuk angka negatif. Tanda minus (
-
) hanya akan digunakan sebagai operan, bukan sebagai negatif. - Tidak akan ada kasus uji untuk
.##
tanpa nomor utama sebelum koma (yaitu2+.7
tidak akan menjadi kasus uji yang valid, tetapi2+0.7
bisa jadi).
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, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, tambahkan link dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
Kasus uji:
Input: 270 degrees & [[1,2],[2,3],[0,3],[1,0],[1,1]]
Output: 517*6=3102
Input: 90 degrees & [[3,1],[0,0],[0,1],[3,3],[2,0],[0,3],[0,0],[0,2],[3,0],[2,1]]
Output: 800/4+0.75=200.75
Input: 0 degrees & [[0,0],[1,0],[2,0],[3,0],[1,2],[2,1],[2,2]]
Output: 789/263=3
Input: 180 degrees & [[3,0],[1,0],[1,2],[0,0],[3,2],[0,1],[2,0],[0,3],[2,1],[0,3],[3,2]]
Output: 0.6+4-0/2/4=0.575
1+-*/+-*/2
akan memberikan 0.5
pada Windows (10) kalkulator.
[1,3],
2+.7
?