Nesse desafio, você precisará determinar se é Pi Day, Pi Minute ou Pi Second.
Como o Pi é irracional, ele deseja que seu código seja o mais curto possível.
Exemplos
Nenhuma entrada é fornecida , seu programa deve usar a hora do sistema. Acabei de adicionar para maior clareza
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>
O que é Pi Dia / Minuto / Segundo
Pi Day
é quando o mês é março e a data é 14Pi Minute
é quando a hora é 3 e o minuto é 14Pi Second
é quando o minuto é 3 e o segundo é 14Pi Day
deve ser preferido em vez dePi Minute
ouPi Second
ePi Minute
deve ser preferido em vez dePi Second
.- Para esse desafio, você deve usar o tempo de 12 horas (15:14 == 3:14). A data / hora usada para determinar a data
Pi Day/Minute/Second
deve ser baseada na hora do sistema .
Pontuação e bônus
Bônus de 15 bytes: se você imprimir "No Pi Time"
quando não for a hora do Pi.
Como sempre, as brechas padrão não são permitidas. Este é o código mais curto do código-golfe em bytes ganhos!
Respostas:
CJam, 41 bytes
Teste aqui. Como alternativa, use esse link para stub o resultado
et
para um teste mais fácil.Explicação
fonte
Javascript (ES6),
114112-15 = 97 bytesUngolfed:
Obrigado por -2 bytes @ edc65
fonte
Date()
vez denew Date
'Pi '+['Day','Minute','Second'].find((x,i)=>
................"Pi undefined"
nderscore
queunderscore
.Ruby,
125124 caracteresInfelizmente, o mais inteligente
%i[month day hour min sec].map{|x|Time.new.send x}
é mais longo.A chave aqui é o uso de
each_cons
para evitar repetições (veja as últimas linhas da explicação abaixo).fonte
'Pi'
como fezt
, não?[(p='Pi ')+Day','',p+'Minute',p+'Second']
é mais longo.Python 2,
219186183 Bytes (198-15)eu tentei
Ungolfed:
Golfe:
fonte
from datetime import*;n=datetime.now()
é mais curto. Além disso, não faz sentido indexar em uma matriz quando você estiver imprimindo seqüências constantes.time.localtime()
; ele se reduz a 148 a 15 bytes (sem a correção de 12 horas). A coisa de 12 horas é lamentável; sem ele você pode facilmente obtê-lo para baixo para 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')
(e 118-15 bytes em Python 3, através da conversão de bytes e usando find, o que torna as coisas mais simples)Japt, 78 - 15 = 63 bytes
Bem simples - basta verificar a data de cada caso.
Explicação:
D=Ð)g
obtenha a data atual (Ð
), armazene-a na variávelD
e obtenha o mês (g
). Por que armazená-lo na variável, se já é uma letra? Porque, desde então, você pode vestir qualquer parte da data comDa
, ondea
está a função, retornar ano, mês, data etc. Mas, caso contrário, você precisaria fazer issoÐ a
, veja o espaço.¥3
ou seja==3
, verificar se o mês é março.©
é&&
, ou seja, "e".Df
é o dia do mês.E
é 14?...:...
- conjuntos típicos de operadores ternáriosDd %C
o lembrete de dividir a hora (Dd
) por 12 (C
)Dc
são os minutosDb
são segundosExperimente online!
Para emular o Pi Day:
Para emular o Pi Minute :
Para emular o Pi Second :
fonte
TI-BASIC, 124 bytes
Agradecimentos a FlagAsSpam por remover alguns bytes.
fonte
i
(unidade imaginária) ee
(constante de Euler) como atalhos? Caso contrário, isso também poderá economizar alguns bytes.e
na verdade são dois bytes!Perl, 80 - 15 = 65 bytes
Tome 2, analisando a representação em cadeia de
localtime
. No momento, isso se parece com isso:A posição da sequência correspondente é usada para determinar o tempo do Pi correto.
Perl, 100 bytes
localtime
retorna os meses zero indexados, daí a necessidade de3-/3/
.fonte
Python 3, 137 - 15 = 122 bytes
O requisito de 12 horas foi lamentável, pois teria sido de 118 a 15 = 103 bytes sem ele:
fonte
AppleScript,
202190187183181 bytesEi, isso não é tão ruim, afinal.
Na verdade, eu achei um uso para a chamada de método do AppleScript. Vai saber.Não. Acontece que simI'm an idiot
. Definir uma variável é mais curto.(para quem está se perguntando, o comando date atual retorna um tipo de data com o conteúdo
"Saturday, January 2, 2016 at 2:46:01 PM"
ou algo parecido)fonte
PHP, 85 - 15 = 70 bytes
O principal truque usado aqui é o
Ymdhi_is
formato da data , no momento da redação,date('Ymdhi_is')
retorna201501030258_5828
.md
,hi
Eis
são os valores que serão substituídos por0314
se for algo Pi. Observe que todas essas cadeias sempre serão substituídas por uma cadeia longa de 4 caracteres.strpos
interromperão a pesquisa na primeira ocorrência da agulha; portanto, os colocamos na ordem de prioridade.hi
eis
é necessário porque não queremosstrpos
combinar um valor que se sobreponha a ambos (graças ao primo para salvar bytes aqui).0314
porque314
corresponderia incorretamente às 10:31:42 como Pi-Second.A parte Y é a mais complicada. Precisamos de um prefixo para compensar a primeira ocorrência de Pi-something, permitindo distinguir
strpos
os valores de retorno entrefalse
(não encontrado, Pi-nothing) e0
(encontrado no índice 0, Pi-dia).E queremos que esse prefixo tenha 4 ou 5 caracteres, pois estamos planejando dividir
strpos
o valor de retorno por 4.Y tem 4 caracteres, mas:
Y
será substituído por 4 dígitos, mas não é verdade .Como o PHP não existia no ano 314 e provavelmente não existirá mais no ano 10314, acho que esses erros podem ser ignorados com segurança.
Observe que
0314
pode se sobrepor,Ymd
pois:Ymmd
configuração: não há 31º mês.YYmm
configuração: não há 14 meses.YYYm
configuração: há menos de 40 meses.Além disso, há uma versão sem os bugs relacionados ao ano, que é 86 - 15 = 71 bytes :
fonte
Ymd_hi_is
. Além disso, eu não acho que um separador é necessário entremd
ehi
, como o de 12 horash
nunca pode ser 14, e nunca começar com 3 ou 4.Python 3, 179 bytes
fonte