En el calendario tailandés, el año 2017 corresponde a 2560. El calendario tailandés siempre está 543 años por delante del calendario gregoriano.
Los codificadores observadores notarán que 2560 es igual a 2^9 * 5
, en otras palabras, tiene 10 factores primos. ¡Esto no volverá a suceder por otros 896 años! Llamamos a un año tenaz si tiene exactamente diez factores primos.
Escriba un programa que arroje un valor verdadero si el año actual que usa el calendario tailandés, basado en el reloj del sistema, es tenaz y un valor falso de lo contrario.
Casos de prueba:
- Si el programa se ejecuta durante 2017,
true
- Si el programa se ejecuta durante cualquiera de los años 2018 a 2912,
false
- Si el programa se ejecuta durante 2913,
true
(2913 + 543 =2^7 * 3^3
)
Respuestas:
Bash + coreutils, 35 bytes
La salida es una cadena no vacía (verdad) o una cadena vacía (falsa).
Pruébalo en línea!
Versión alternativa: 37 bytes.
No es tan golfoso, pero me gusta este.
Pruébalo en línea!
Cómo funciona
La
$[
fecha de expansión aritmética +% Y se+543]
ejecutadate +%Y
para obtener el año actual (completo) y agrega 543 al año.Factor toma la suma como argumento e imprime su factorización prima: primero el número a factorizar, luego una lista de factores primos individuales.
Finalmente, awk filtra la entrada, imprimiendo solo líneas con exactamente 11 campos (el número más 10 factores primos).
fuente
05AB1E , 10 bytes
Pruébalo en línea! o como un conjunto de pruebas
Explicación
fuente
CJam , 13 bytes
Pruébalo en línea!
Explicación
fuente
Mathematica,
3731 bytes5 bytes guardados debido a lanlock4 .
Función anónima. No toma entrada y regresa
True
oFalse
como salida.fuente
Now
Es implícito. Puedes usarDateValue@"Year"
.&
al final? Además,Date[][[1]]
es un par de bytes más corto queDateValue@"Year"
(si no le importa queDate
sea obsoleto).#&@@Date[]
en lugar deDate[][[1]]
. Además, creo que el "entorno Mathematica + REPL" es un lenguaje de programación válido aquí, para el cual no necesita la terminación&
.Pyth, 11 bytes
Intérprete en línea disponible aquí.
Explicación
fuente
Japt ,
18 1413 bytesGuardado 4 bytes gracias a ETHproductions. Guardado 1 byte gracias a obarakon.
Pruébalo en línea!
fuente
A¥º543+Ki¹k l
o543+Ki¹k l ¥A
¹
usa, no)
haría lo mismo?)
en su lugar.Python 2 ,
9289 bytes-3 bytes gracias a Jonathan Allan
Pruébalo en línea!
Iterar hasta el año, extrayendo (y eliminando) los factores primos.
La línea ejecutiva es equivalente a:
fuente
c=i=1
;c-=1
;print-9==c
.Octava , 31 bytes
Pruébalo en línea!
Dos trucos usados aquí:
clock()(1)
para indexar directamente en la salida declock
(clock(1)
no funciona)nnz
en lugar denumel
, ya que todas las entradas están garantizadas para ser distintas de cero.Versión alternativa, mismo recuento de bytes
Esta versión solo se puede usar durante años que exceden
30
, peroobviamente, sin tener en cuenta el viaje en el tiempo, esto incluye todos los años en los que se puede ejecutar el programa. Funciona en Matlab también.fuente
PHP,
1116866cuenta directamente el número de factores primos.
Vieja idea:
11190Esto no utiliza un factor principal de valorización incorporado, sino básicamente un tamiz primo de conteo para obtener el número de factores primos de un número <10000. Esto se asigna al año de 4 dígitos que PHP proporciona usando
date('Y')
:fuente
Y
no necesita comillas con-nr
.$a[$i*$j]=($a[$i]?:1)+($a[$j]?:1)
ahorra 13 bytes.$j=++$i<1e4
salva uno. Y no hay citas paraY
dos más.MATL , 14 bytes
Pruébalo en línea!
fuente
Lote, 123 bytes
Puede falsificar el script anulando manualmente la
date
variable antes de ejecutarlo.fuente
J , 18 bytes
Cuerpo del programa:
Pruébalo en línea!
10=
es diez igual a#
el recuento deq:
los factores primos de543+
este número agregado a{.
la cabeza (primer elemento, es decir, el año) de6!:0''
la fecha (como AMD hms)fuente
JavaScript (ES6),
7975 bytesPuerto de mi respuesta Batch. Pase el año calendario tailandés si desea realizar una prueba específica. Editar: Guardado 4 bytes gracias a @dandavis.
fuente
new Date().getYear()+2443
false
? acortadores:+Date().slice(11,15)+543
y eny?
lugar dey>1
y?
tiene sentido,y
nunca es cero.