Seismometer USGS baru saja mendeteksi gempa besar! Tim tanggap darurat membutuhkan perkiraan cepat jumlah orang yang terkena dampak. Tulis program untuk menghitung perkiraan ini.
Program Anda menerima 2 input. Yang pertama adalah detail gempa itu sendiri. Gempa bumi dimodelkan sebagai segmen garis di mana bumi pecah, bersama dengan jarak kritis dari patahan di mana kerusakan bisa diperkirakan. Input kedua adalah daftar lokasi dan populasi kota di daerah tersebut. Program Anda harus menghitung jumlah orang yang tinggal di daerah yang terkena dampak, yaitu jumlah populasi semua kota dalam jarak kritis dari segmen patahan.
Memasukkan
Pertama, garis yang menggambarkan gempa bumi, yang berisi koordinat x, y dari titik awal dan titik akhir sesar, ditambah jarak kritis. Formatnya adalah A_x A_y B_x B_y D
. Sebagai contoh:
3.0 3.0 7.0 4.0 2.5
mengkodekan kesalahan yang memanjang dari (3.0,3.0) ke (7.0,4.0) dan jarak kritis 2.5.
Kedua, satu garis per kota di daerah itu, yang berisi koordinat x, y dari kota dan penduduknya. Sebagai contoh:
1.0 1.0 2500
5.0 7.0 8000
3.0 4.0 7500
9.0 6.0 3000
4.0 2.0 1000
Keluaran
Jumlah orang yang tinggal di daerah yang terkena dampak. Untuk contoh di atas hanya kota ketiga dan kelima yang berada di daerah bahaya, jadi hasilnya akan seperti itu
8500
Kode terpendek menang.
Contoh 2
0.0 0.0 10.0 0.0 5.0
5.0 4.0 10000
5.0 -4.0 1000
5.0 6.0 100
11.0 2.0 10
-4.0 4.0 1
menghasilkan
11010
8500.0
ok untuk contohnya? Dan bisakah kita mendapatkan beberapa testcases lagi?Jawaban:
Ruby,
171152155153 153Ini adalah pengiriman ruby pertama saya dan golf kode pertama saya. Implementasi tugas yang lurus ke depan. Tolong beri saya beberapa petunjuk bagaimana meningkatkan (harus ada cara yang lebih singkat untuk membaca mengapung ...).
sumber
map
daneval
, dan inliningt
. Dan karena Anda sudah mengevaluasi, Anda dapat menggunakan format-string bukan.to_f
, sehingga blok terakhir dapat disingkat menjadip eval$<.map{|l|"(x=%f-u;t=(x*a+b*y=%f-v)/(a**2+b**2);d*d<(x-t=t<0?0:t>1?1:t)**2+(y-t*b)**2?0:%d)"%l.split}*'+'
t
lagi menyimpan dua lagi.undefined method > for nil:NilClass (NoMethodError)
Javascript (437)
Ini mungkin bisa di-golf secara signifikan, tetapi tidak cukup untuk mengalahkan solusi Ruby.
Anda dapat melihatnya beraksi di sini .
sumber
b-0
alih-alih(b*1)
, 1 karakter dengan menghapus tanda titik koma. Akhirnya, mulailah denganM=Math
dan ganti semuaMath
denganM
, simpan 6 karakter. Menggunakan Prototipe dan.value
menyimpan 2 karakter (#
dan satu kurung).C # -
743715Non-Golf:
sumber
quake.cs(1,254): error CS1525: Unexpected symbol ',', expecting 'from', 'group', 'join', 'let', 'orderby', 'select', or 'where'
). Versi ungolfed berfungsi dengan baik.c - 471 karakter
Ini mengasumsikan perpustakaan standar Anda
getline
.Metode ini diklarifikasi sedikit dalam komentar ke versi yang tidak diklik:
sumber
scala: 660 karakter:
ungolfed:
sumber