Mengingat seni ASCII dari dua vektor, cari besaran dan derajat vektor yang dihasilkan.
Memasukkan
Ini dapat diterima melalui STDIN, membaca dari file lokal, atau disediakan melalui panggilan fungsi. Berikut adalah contoh input vektor dua:
^------>
|
|
|
x
Ini mewakili perubahan 4 unit utara dan 7 unit timur. Setiap titik awal input akan diwakili oleh x
(desimal 120
).
Semua vektor adalah garis horizontal atau vertikal.
Setiap vektor memiliki salah satu dari empat titik akhir ini:,
^v<>
dan terdiri dari tanda hubung (-
, desimal 45) atau bilah vertikal (|
, desimal 124).Poin kosong di pesawat diisi dengan spasi (
, desimal 32).
Input mungkin satu
x
.Vektor yang berdekatan selalu saling tegak lurus.
Semua vektor tip-to-tail.
Keluaran
Ini akan menjadi perpindahan dari titik yang dihasilkan (jarak dari titik awal) dan sejauh mana ia telah bergerak, relatif terhadap titik awal.
Untuk input di atas, output harus 8.06
satuan dan 60.3
derajat. Masing-masing harus memiliki tepat 3 angka signifikan. Berikut adalah beberapa contoh angka dengan 3 digit signifikan:
- 1,00
- 60.1
- 453
- 7.08
- 4,50
- 349
Semua pengukuran unit akan dilakukan <= 999
.
Angka-angka ini harus berupa output dalam format di bawah ini. Ini menggunakan angka-angka dari atas.
8.06 units @ 60.3 degrees
Ini dapat diikuti oleh satu spasi tambahan atau baris baru.
Jika input adalah tunggal x
, tanpa perpindahan dan karenanya tidak ada sudut perpindahan, output harus berupa baris kosong (karakter baris baru tunggal) atau dalam format berikut:
0 units @ - degrees
Jika Anda mencoba memenuhi syarat untuk bonus, arahnya juga harus -
.
Dalam hal bonus 2, 3, atau keduanya selesai, output harus mengikuti model di bawah ini dan mematuhi batasan yang sama seperti di atas.
8.06 units @ 60.3 degrees NE
Derajat harus diukur sesuai dengan bidang standar.
90
135 | 45
\|/
180 ---x---- 0
/|\
225 | 315
270
0
derajat adalah timur, 1 - 89
derajat timur laut, 90
utara, dll.
Bonus
Berikut ini bernilai total -50%.
Ambil bonus -10% untuk setiap vektor tambahan yang dapat ditangani. Bonus ini dapat diterapkan hingga 3 kali. Vektor tidak akan pernah tumpang tindih atau menyeberang.
Ambil bonus -10% jika output Anda menyertakan arah mata angin dari sudut (utara, selatan, timur, barat).
Ambil bonus -10% jika output Anda menyertakan arah tengah sudut (timur laut, barat laut, tenggara, barat daya).
Contohnya
Di:
x---->
|
v
Di luar:
5.39 units @ 338 degrees
Opsional SE
Di:
<--------------^
|
|
x
Di luar:
15.3 units @ 169 degrees
Opsional NW
Di:
x
|
|<-----^
| |
v------>
Di luar:
2.24 units @ 297 degrees
Opsional SE
Contoh (beberapa vektor)
Di:
x--->
|
|
v----------->
Di luar:
16.3 units @ 349 degrees
Opsional SE
Di:
<-------^
| |
| |
v |
|
|
x
Di luar:
8.54 units @ 159 degrees
Opsional NW
Di:
^-->
| |
| v
|
<--------x
Di luar:
6.32 units @ 162 degrees
Opsional NW
x
? Apa batas antara Utara dan Barat Laut?x-->
. Bisakah vektor melintas?x
. Mungkin ada lebih dari dua (jika berusaha menyelesaikan bonus), tetapi tidak kurang. Saya sedang mengerjakan contoh untuk beberapa input vektor. Dalam input tidak akan vektor lintas. @ThomasKwaJawaban:
JavaScript (ES6), 305 byte - 50% bonus = skor 152,5
Penjelasan
Input harus diisi dengan spasi. Gunakan semua bonus.
Uji
Tampilkan cuplikan kode
sumber
Python 2, 238.5 (
594562482477-50%) bytePenjelasan
Temukan posisi awal dan akhir dengan melihat setiap karakter dalam input.
Mulai adalah
x
Akhir ditemukan dengan melihat setiap panah (
<>^v
), dan tetangga mereka. Jika tetangga melanjutkan vektor, abaikan. Lain, ini akhirnya.Lihatlah tetangga yang tegak lurus dengan arah panah.
Jika mereka mengandung garis tegak lurus, maka itu adalah vektor yang berkelanjutan.
Contoh (
_
menunjukkan spasi):Karena titik akhir ditemukan, mungkin ada sejumlah vektor ( bonus 30% ).
sumber
\n
sebagai linebreak ...input()
dan pembungkus input yang sesuai dengan "", tetapi sepertinya tidak ada aturan yang melarangnya!