Dalam xkcd 1047 , Randall Munroe daftar perkiraan "sedikit salah" dari berbagai macam jumlah dan angka dengan berbagai presisi dan kompleksitas, seperti bahwa jumlah liter dalam satu galon sangat dekat dengan 3 + π ⁄ 4 . Di tengah-tengah komik, ia memberikan jeda: cara untuk memperkirakan populasi dunia (dan Amerika Serikat) berdasarkan tahun tertentu.
(Dipotong dari xkcd: Perkiraan oleh Randall Munroe)
Tugas Anda adalah menulis program yang mengimplementasikan formula ini untuk memperkirakan populasi dunia dan AS saat ini, direplikasi sebagai berikut.
Populasi dunia
- Ambil dua digit terakhir tahun ini.
- Kurangi jumlah tahun kabisat (termasuk tahun ini) sejak Badai Katrina (2005). Untuk tujuan ini, setiap tahun yang dapat habis dibagi 4 dianggap sebagai tahun kabisat.
- Tambahkan titik desimal antara dua angka (sama dengan membagi dengan 10).
- Tambahkan 6. Ini memberikan hasil dalam miliaran orang.
Populasi AS
- Ambil dua digit terakhir tahun ini.
- Kurangi 10.
- Kalikan dengan 3.
- Tambahkan 10.
- Tambahkan 3 ke awal (untuk tantangan ini, beberapa angka akan negatif, jadi tambahkan 300 sebagai gantinya). Entah bagaimana saya tidak menyadari bahwa hanya menggabungkan tidak akan berhasil karena program yang saya gunakan untuk menghasilkan hasil hanya menambahkan 300.
- Ini memberikan hasil dalam jutaan orang.
Detail
Formula ini "harus tetap berlaku selama satu atau dua dekade," tetapi Anda harus dapat secara teoritis menangani tahun 2000-2039 inklusif. Untuk beberapa kasus, tahun kabisat sejak Katrina akan memiliki nilai negatif atau nol.
Anda bebas untuk menyederhanakan formula dengan cara apa pun, selama semua output cocok dengan yang di bawah ini.
Untuk tahun ini, gunakan tahun sesuai dengan jam komputer. Ini harus bekerja tahun depan dan tahun lainnya di abad ini, jadi Anda tidak bisa hanya dengan hardcode 2015. Untuk kenyamanan, Anda mungkin ingin memasukkan cara untuk menentukan tahun sebagai variabel atau input untuk menguji tahun lain.
Outputnya haruslah populasi dunia yang diperkirakan (dalam miliaran orang), diikuti oleh beberapa pembatas (misalnya ruang atau koma), diikuti oleh populasi AS (dalam jutaan orang). Anda juga dapat menulis fungsi yang mengembalikan atau mencetak string atau array angka atau string.
Ini adalah kode golf, jadi kode terpendek dalam byte menang. Tiebreaker adalah posting paling awal.
Uji kasus
Ini adalah daftar semua tahun yang mungkin, diikuti oleh dua keluaran.
Year World U.S.
2000 6.1 280
2001 6.2 283
2002 6.3 286
2003 6.4 289
2004 6.4 292
2005 6.5 295
2006 6.6 298
2007 6.7 301
2008 6.7 304
2009 6.8 307
2010 6.9 310
2011 7 313
2012 7 316
2013 7.1 319
2014 7.2 322
2015 7.3 325
2016 7.3 328
2017 7.4 331
2018 7.5 334
2019 7.6 337
2020 7.6 340
2021 7.7 343
2022 7.8 346
2023 7.9 349
2024 7.9 352
2025 8 355
2026 8.1 358
2027 8.2 361
2028 8.2 364
2029 8.3 367
2030 8.4 370
2031 8.5 373
2032 8.5 376
2033 8.6 379
2034 8.7 382
2035 8.8 385
2036 8.8 388
2037 8.9 391
2038 9 394
2039 9.1 397
3
, bukankah seharusnya 2040
memberi populasi 3100
? 40 - 10 = 30
, 30 * 3 = 90
, 90 + 10 = 100
, Yang akan memberikan"3" + "100" = 3100
280
sebagai hasil dari -20+300=280
dan tidak 3 . -20= "3-20"
)