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 Dayes cuando el mes es marzo y la fecha es el 14Pi Minutees cuando la hora es 3, y el minuto es 14Pi Secondes cuando el minuto es 3, y el segundo es 14Pi Daydebería preferirse en lugar dePi MinuteoPi Second, yPi Minutedeberí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/Seconddebe 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
etuna 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"nderscorequeunderscore.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_conspara 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=Ð)gobtener la fecha actual (Ð), almacenarla en la variableDy 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óndeaestá la función, regresar año, mes, fecha, etc. Pero de lo contrario tendrías que hacerloÐ a, ver el espacio.¥3es==3comprobar si el mes es marzo.©es&&decir, "y".DfEs el día del mes.Ees 14?...:...- conjuntos típicos de operadores ternariosDd %Cel recordatorio de dividir la hora (Dd) por 12 (C)Dcson los minutosDbson 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.erealidad 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
localtimedevuelve 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_isformato de fecha , al momento de escribir, lasdate('Ymdhi_is')devoluciones201501030258_5828.md,hiyisson los valores que serán reemplazados por0314si es Pi-something. Tenga en cuenta que todas esas cadenas siempre serán reemplazadas por una cadena larga de 4 caracteres.strposque dejarán de buscar en la primera aparición de la aguja, por lo que los colocamos en el orden de prioridad.hiyisporque no queremosstrposhacer coincidir un valor que se superponga a ambos (gracias a primo por guardar bytes aquí).0314porque314coincidirí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
strposlos 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
strposel valor de retorno entre 4.Y tiene 4 caracteres, pero:
Yserá 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
0314puede superponerseYmdya que:Ymmdconfiguración: no hay 31 meses.YYmmconfiguración: no hay 14 meses.YYYmconfiguració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 entremdyhi, ya que las 12 horashnunca pueden ser 14, y nunca comienzan con 3 o 4.Python 3, 179 bytes
fuente