En este desafío, deberá determinar si es Pi Day, Pi Minute o Pi Second.
Como Pi es irracional, quiere que su código sea lo más breve posible.
Ejemplos
No se proporciona ninguna entrada , su programa debe usar la hora del sistema. Lo acabo de agregar para mayor claridad
March 14, 2016 0:00:00
Pi Day
December 25, 2015 3:14:45
Pi Minute
December 29, 2015 0:03:14
Pi Second
January 1, 2016 0:00:00
<No Output>
¿Qué es Pi Day / Minute / Second?
Pi Day
es cuando el mes es marzo y la fecha es el 14Pi Minute
es cuando la hora es 3, y el minuto es 14Pi Second
es cuando el minuto es 3, y el segundo es 14Pi Day
debería preferirse en lugar dePi Minute
oPi Second
, yPi Minute
debería preferirse en lugar dePi Second
.- Para este desafío, debe usar un tiempo de 12 horas (15:14 == 3:14). La fecha / hora utilizada para determinar el
Pi Day/Minute/Second
debe basarse en la hora del sistema .
Puntuación y bonificación
-15 bytes de bonificación: si imprime "No Pi Time"
cuando no es hora de Pi.
Como siempre, las lagunas estándar no están permitidas. ¡Este es el código de código de golf más corto en bytes gana!
Respuestas:
CJam, 41 bytes
Pruébalo aquí. Alternativamente, use este enlace para ocultar el resultado de
et
una prueba más fácil.Explicación
fuente
Javascript (ES6),
114112 - 15 = 97 bytesSin golf:
Gracias por -2 bytes @ edc65
fuente
Date()
lugar denew Date
'Pi '+['Day','Minute','Second'].find((x,i)=>
................"Pi undefined"
nderscore
queunderscore
.Rubí,
125124 caracteresPor desgracia, el más listo
%i[month day hour min sec].map{|x|Time.new.send x}
es más largo.La clave aquí es el uso de
each_cons
para evitar la repetición (vea las últimas líneas de la explicación a continuación).fuente
'Pi'
como lo hiciste cont
, ¿no?[(p='Pi ')+Day','',p+'Minute',p+'Second']
es más largo.Python 2,
219186183 Bytes (198-15)Lo intenté
Sin golf:
Golfizado:
fuente
from datetime import*;n=datetime.now()
Es más corto. Además, no tiene sentido indexar en una matriz cuando imprime cadenas constantes.time.localtime()
; se reduce a 148-15 bytes (sin la corrección de 12 horas). Sin embargo, lo de 12 horas es desafortunado; sin él, podría reducirlo fácilmente a 129-15 bytes:import time;x=3,14;T=time.localtime();print{1:'Pi Day',3:'Pi Minute',4:'Pi Second'}.get((zip(T,T[1:])+[x]).index(x),'No Pi Time')
(y 118-15 bytes en Python 3, al convertir a bytes y usar find, lo que simplifica las cosas)Japt, 78-15 = 63 bytes
Bastante sencillo: solo verifica la fecha de cada caso.
Explicación:
D=Ð)g
obtener la fecha actual (Ð
), almacenarla en la variableD
y obtener el mes (g
). ¿Por qué almacenarlo en la variable, si ya es de una letra? Porque desde entonces puedes vestir cualquier parte de la fechaDa
, dóndea
está la función, regresar año, mes, fecha, etc. Pero de lo contrario tendrías que hacerloÐ a
, ver el espacio.¥3
es==3
comprobar si el mes es marzo.©
es&&
decir, "y".Df
Es el día del mes.E
es 14?...:...
- conjuntos típicos de operadores ternariosDd %C
el recordatorio de dividir la hora (Dd
) por 12 (C
)Dc
son los minutosDb
son segundosPruébalo en línea!
Para emular Pi Day:
Para emular Pi Minute :
Para emular Pi Second :
fuente
TI-BASIC, 124 bytes
Gracias a FlagAsSpam por reducir algunos bytes.
fuente
i
(unidad imaginaria) ye
(constante de Euler) como atajos? Si no, eso también podría ahorrarle algunos bytes.e
realidad son dos bytes!Perl, 80-15 = 65 bytes
Tome 2, analizando la representación de cadena de
localtime
. En la actualidad, esto se parece a esto:La posición de la cadena coincidente se utiliza para determinar el tiempo Pi correcto.
Perl, 100 bytes
localtime
devuelve los meses cero indexados, de ahí la necesidad de3-/3/
.fuente
Python 3, 137-15 = 122 bytes
El requisito de 12 horas fue desafortunado, ya que esto hubiera sido 118-15 = 103 bytes sin él:
fuente
AppleScript,
202190187183181 bytesOye, esto no es tan malo después de todo.
En realidad encontré un uso para la llamada al método AppleScript. Imagínate.No Resulta que esoI'm an idiot
. Establecer una variable es más corto.(para aquellos que se preguntan, el comando de fecha actual devuelve un tipo de fecha con el contenido
"Saturday, January 2, 2016 at 2:46:01 PM"
o similar)fuente
PHP, 85-15 = 70 bytes
El truco principal que se usa aquí es el
Ymdhi_is
formato de fecha , al momento de escribir, lasdate('Ymdhi_is')
devoluciones201501030258_5828
.md
,hi
yis
son los valores que serán reemplazados por0314
si es Pi-something. Tenga en cuenta que todas esas cadenas siempre serán reemplazadas por una cadena larga de 4 caracteres.strpos
que dejarán de buscar en la primera aparición de la aguja, por lo que los colocamos en el orden de prioridad.hi
yis
porque no queremosstrpos
hacer coincidir un valor que se superponga a ambos (gracias a primo por guardar bytes aquí).0314
porque314
coincidiría erróneamente 10:31:42 como Pi-Second.La parte Y es la más complicada. Necesitamos un prefijo para compensar la primera aparición de Pi-something, lo que nos permite distinguir
strpos
los valores de retorno entrefalse
(no encontrado, Pi-nothing) y0
(encontrado en el índice 0, Pi-día).Y queremos que este prefijo tenga 4 o 5 caracteres, ya que planeamos dividir
strpos
el valor de retorno entre 4.Y tiene 4 caracteres, pero:
Y
será reemplazado por 4 dígitos, pero no es cierto .Como PHP no existía en el año 314, y probablemente ya no existirá en el año 10314, supongo que estos errores se pueden ignorar de forma segura.
Tenga en cuenta que
0314
puede superponerseYmd
ya que:Ymmd
configuración: no hay 31 meses.YYmm
configuración: no hay 14 meses.YYYm
configuración: hay menos de 40 meses.Además, hay una versión sin los errores relacionados con el año, que es 86-15 = 71 bytes :
fuente
Ymd_hi_is
. Además, no creo que sea necesario un separador entremd
yhi
, ya que las 12 horash
nunca pueden ser 14, y nunca comienzan con 3 o 4.Python 3, 179 bytes
fuente