No calendário tailandês, o ano de 2017 corresponde a 2560. O calendário tailandês está sempre 543 anos à frente do calendário gregoriano.
Os codificadores observadores observarão que 2560 é igual a 2^9 * 5
, ou seja, possui 10 fatores primos. Isso não acontecerá novamente por mais 896 anos! Chamamos um ano de tenaz se tiver exatamente dez fatores principais.
Escreva um programa que produza um valor verdadeiro se o ano atual usando o calendário tailandês, com base no relógio do sistema, for tenaz e, caso contrário, um valor falsey.
Casos de teste:
- Se o programa for executado durante 2017,
true
- Se o programa for executado durante qualquer um dos anos de 2018 a 2912,
false
- Se o programa for executado durante 2913,
true
(2913 + 543 =2^7 * 3^3
)
Respostas:
Bash + coreutils, 35 bytes
A saída é uma sequência não vazia (verdade) ou uma sequência vazia (falsy).
Experimente online!
Versão alternativa: 37 bytes.
Não como golfe, mas eu gosto deste.
Experimente online!
Como funciona
A
$[
data de expansão aritmética +% Y é+543]
executadadate +%Y
para obter o ano atual (completo) e adiciona 543 ao ano.O fator toma a soma como argumento e imprime a fatoração primária: primeiro o número a ser fatorado, depois uma lista de fatores primários individuais.
Finalmente, o awk filtra a entrada, imprimindo apenas linhas com exatamente 11 campos (o número mais 10 fatores primos).
fonte
05AB1E , 10 bytes
Experimente online! ou como um conjunto de testes
Explicação
fonte
CJam , 13 bytes
Experimente online!
Explicação
fonte
Mathematica,
3731 bytes5 bytes salvos devido ao lanlock4 .
Função anônima. Não aceita e retorna
True
ouFalse
como saída.fonte
Now
está implícito. Você pode usarDateValue@"Year"
.&
do final? Além disso,Date[][[1]]
é um par de bytes menor queDateValue@"Year"
(se você não se importa queDate
é obsoleto).#&@@Date[]
no lugar deDate[][[1]]
. Além disso, acho que o "ambiente Mathematica + REPL" é uma linguagem de programação válida aqui, para a qual você não precisa finalizar&
.Pitão, 11 bytes
Intérprete online disponível aqui.
Explicação
fonte
Japonês ,
18 1413 bytesEconomizou 4 bytes graças ao ETHproductions. Guardado 1 byte graças a obarakon.
Experimente online!
fonte
A¥º543+Ki¹k l
ou543+Ki¹k l ¥A
¹
usado, não)
faria a mesma coisa?)
.Python 2 ,
9289 bytes-3 bytes graças a Jonathan Allan
Experimente online!
Iterar até o ano, extraindo (e couting) os principais fatores.
A linha exec é equivalente a:
fonte
c=i=1
;c-=1
;print-9==c
.Oitava , 31 bytes
Experimente online!
Dois truques usados aqui:
clock()(1)
indexar diretamente na saída declock
(clock(1)
não funciona)nnz
em vez denumel
, como todas as entradas são garantidas como diferentes de zero.Versão alternativa, mesma contagem de bytes
Esta versão só pode ser usada por anos que excedam
30
, masobviamentedesconsiderando viagens no tempo, inclui todos os anos em que o programa pode ser executado. Também funciona em Matlab.fonte
PHP,
1116866conta diretamente o número de fatores primos.
Ideia antiga:
11190Isso não usa um fator de fatoração interno embutido, mas basicamente uma peneira primária de contagem para obter o número de fatores primos de um número <10000. Isso é mapeado para o ano de 4 dígitos fornecido pelo PHP usando
date('Y')
:fonte
Y
não precisa de aspas-nr
.$a[$i*$j]=($a[$i]?:1)+($a[$j]?:1)
salva 13 bytes.$j=++$i<1e4
salva um. E sem aspas paraY
mais duas.MATL , 14 bytes
Experimente online!
fonte
Lote, 123 bytes
Você pode falsificar o script substituindo manualmente a
date
variável antes de executá-lo.fonte
J , 18 bytes
Organismo do programa:
Experimente online!
10=
é dez igual a#
a contagem deq:
os principais fatores de543+
esse número foi adicionado a{.
o chefe (primeiro item, isto é, o ano) da6!:0''
a data (como YMD hms)fonte
JavaScript (ES6),
7975 bytesPorta da minha resposta em lote. Passe no ano civil tailandês se desejar realizar um teste específico. Editar: salvou 4 bytes graças a @dandavis.
fonte
new Date().getYear()+2443
false
? shortners:+Date().slice(11,15)+543
e emy?
vez dey>1
y?
é inútil,y
nunca é zero.