No xkcd 1047 , Randall Munroe lista aproximações "levemente erradas" de quantidades e números variados com precisão e complexidade variadas, tais como que o número de litros em um galão é muito próximo de 3 + π ⁄ 4 . No meio dos quadrinhos, ele dá um intervalo: uma maneira de estimar a população mundial (e dos Estados Unidos) com base em um determinado ano.
(Cortado de xkcd: Aproximações de Randall Munroe)
Sua tarefa é escrever um programa que implemente essas fórmulas para aproximar o mundo atual e as populações dos EUA, replicadas da seguinte maneira.
População mundial
- Pegue os dois últimos dígitos do ano atual.
- Subtraia o número de anos bissextos (incluindo o ano atual) desde o furacão Katrina (2005). Para esses fins, qualquer ano divisível por 4 é considerado um ano bissexto.
- Adicione um ponto decimal entre os dois números (o mesmo que dividir por 10).
- Adicionar 6. Isso dá o resultado em bilhões de pessoas.
População dos EUA
- Pegue os dois últimos dígitos do ano atual.
- Subtraia 10.
- Multiplique por 3.
- Adicione 10.
- Adicione 3 ao início (para esse desafio, alguns números serão negativos; portanto, adicione 300). De alguma forma, eu não percebi que apenas concatenar não funcionaria porque o programa que eu usei para gerar os resultados acabou de adicionar 300.
- Isso dá o resultado em milhões de pessoas.
Detalhes
Essa fórmula "deve permanecer atual por uma década ou duas", mas você deve ser capaz de lidar teoricamente com qualquer ano 2000-2039, inclusive. Em alguns casos, os anos bissextos desde o Katrina terão um valor negativo ou zero.
Você é livre para simplificar a fórmula de qualquer forma, desde que todas as saídas correspondam às que estão abaixo.
Para o ano, use o ano de acordo com o relógio do computador. Ele deve funcionar no próximo ano e em qualquer outro ano deste século, para que você não possa simplesmente codificar em 2015. Por conveniência, convém incluir uma maneira de especificar o ano como uma variável ou entrada para testar outros anos.
O resultado deve ser a população mundial aproximada (em bilhões de pessoas), seguida por algum delimitador (por exemplo, espaço ou vírgula), seguido pela população dos EUA (em milhões de pessoas). Você também pode escrever uma função que retorne ou imprima uma string ou uma matriz de números ou strings.
Este é o código golf, pelo que o código mais curto em bytes vence. O desempate é o primeiro post.
Casos de teste
Esta é uma lista de todos os anos possíveis, seguidos pelas duas saídas.
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
, não deve 2040
fornecer uma população de 3100
? 40 - 10 = 30
, 30 * 3 = 90
, 90 + 10 = 100
, O que daria"3" + "100" = 3100
280
como resultado de -20+300=280
e não 3 . -20= "3-20"
)