В этом задании вам нужно будет определить, будет ли это Pi Day, Pi Minute или Pi Second.
Поскольку Pi иррациональный, он хочет, чтобы ваш код был максимально коротким.
Примеры
Нет данных , ваша программа должна использовать системное время. Я только добавил это для ясности
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>
Что такое пи день / минута / секунда
Pi Day
когда месяц март, а дата 14Pi Minute
это когда час 3, а минута 14Pi Second
это когда минута 3, а вторая 14Pi Day
должно быть предпочтительным вместоPi Minute
илиPi Second
, иPi Minute
должно быть предпочтительным вместоPi Second
.- Для этого испытания вы должны использовать 12-часовое время (15:14 == 3:14). Дата / время, используемые для определения,
Pi Day/Minute/Second
должны основываться на системном времени .
Скоринг и бонус
Бонус -15 байт: если вы печатаете, "No Pi Time"
когда не время Pi.
Как всегда, стандартные лазейки запрещены. Это код-гольф кратчайший код в байтах выигрывает!
Ответы:
CJam, 41 байт
Проверьте это здесь. Или используйте эту ссылку чтобы заглушить результат
et
для упрощения тестирования.объяснение
источник
Javascript (ES6),
114112 - 15 = 97 байтUngolfed:
Спасибо за -2 байта @ edc65
источник
Date()
вместоnew Date
'Pi '+['Day','Minute','Second'].find((x,i)=>
................"Pi undefined"
nderscore
чем сказатьunderscore
.Рубин,
125124 знакаУвы, умнее
%i[month day hour min sec].map{|x|Time.new.send x}
дольше.Ключевым моментом здесь является использование,
each_cons
чтобы избежать повторения (см. Последние несколько строк объяснения ниже).источник
'Pi'
как вы сделали сt
, нет?[(p='Pi ')+Day','',p+'Minute',p+'Second']
больше.Python 2,
219186183 байта (198-15)Я старался
Ungolfed:
Golfed:
источник
from datetime import*;n=datetime.now()
короче Кроме того, нет смысла индексировать массив при печати константных строк.time.localtime()
; доходит до 148-15 байт (без 12-часового исправления). 12-часовая вещь, к сожалению, хотя; без него вы могли бы легко получить его до 129-15 байт: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')
(и 118-15 байт в Python 3, преобразовав в байты и используя find, что упрощаетJapt, 78 - 15 = 63 байта
Довольно просто - просто проверяет дату для каждого случая.
Объяснение:
D=Ð)g
получить текущую дату (Ð
), сохранить ее в переменнойD
и получить месяц (g
). Зачем хранить его в переменной, если он уже состоит из одной буквы? Потому что с тех пор вы можете одеть любую часть датыDa
, гдеa
находится функция, возвращая год, месяц, дату и т. Д. Но в противном случае вам придется это сделатьÐ a
, посмотрите пробел.¥3
есть==3
проверка, если месяц март.©
есть&&
, то есть "и".Df
это день месяца.E
это 14?...:...
- типичные множества тернарных операторовDd %C
напоминание о делении часа (Dd
) на 12 (C
)Dc
это минутыDb
секундыПопробуйте онлайн!
Чтобы подражать Pi Day:
Чтобы подражать Пи Минуте :
Чтобы подражать Пи Второму :
источник
TI-BASIC, 124 байта
Спасибо FlagAsSpam за бритье нескольких байтов.
источник
i
(мнимая единица) иe
(постоянная Эйлера) в качестве ярлыков? Если нет, то это также может сэкономить вам несколько байтов.e
на самом деле это два байта!Perl, 80 - 15 = 65 байт
Возьмите 2, разбирая строковое представление
localtime
. В настоящее время это выглядит примерно так:Положение соответствующей строки используется для определения правильного времени Pi.
Perl, 100 байт
localtime
возвращает нулевые индексированные месяцы, отсюда и необходимость3-/3/
.источник
Python 3, 137 - 15 = 122 байта
12-часовое требование было неудачным, так как без него было бы 118-15 = 103 байта:
источник
AppleScript,
202190187183181 байтЭй, это не так уж и плохо.
Я действительно нашел применение для вызова метода AppleScript. Пойди разберись.Нет. Просто получается такI'm an idiot
. Установка переменной короче.(для тех, кто интересуется, текущая команда date возвращает тип даты с содержимым
"Saturday, January 2, 2016 at 2:46:01 PM"
или тому подобное)источник
PHP, 85 - 15 = 70 байт
Основным приемом, используемым здесь, является
Ymdhi_is
формат даты , на момент написания которойdate('Ymdhi_is')
возвращается201501030258_5828
.md
,hi
Иis
те ценности , которые будут заменены0314
, если это Пи-кое - что. Обратите внимание, что все эти строки всегда будут заменены длинной строкой из 4 символов.strpos
поиск прекращается при первом появлении стрелки, поэтому мы располагаем их в порядке приоритета.hi
иis
необходим, потому что мы не хотимstrpos
совпадать со значением, которое перекрывало бы оба (благодаря primo за сохранение байтов здесь).0314
потому что314
будет неправильно соответствовать 10:31:42 как Пи-Второй.Часть Y самая хитрая. Нам нужен префикс, чтобы компенсировать первое вхождение Pi-чего-то, что позволяет нам различать
strpos
возвращаемые значения междуfalse
(not found, Pi-nothing) и0
(найдено с индексом 0, Pi-day).И мы хотим, чтобы этот префикс был длиной 4 или 5 символов, так как мы планируем делить
strpos
возвращаемое значение на 4.Y имеет длину 4 символа, но:
Y
она будет заменена на 4 цифры, но это не так .Поскольку PHP не существовал в 314 году и, вероятно, не будет существовать в 10314 году, я думаю, что эти ошибки можно безопасно игнорировать.
Обратите внимание, что
0314
может перекрываться,Ymd
так как:Ymmd
Конфигурация: нет 31-го месяца.YYmm
Конфигурация: 14-го месяца нет.YYYm
Конфигурация: осталось менее 40 месяцев.Также есть версия без ошибок, связанных с годом, которая составляет 86 - 15 = 71 байт :
источник
Ymd_hi_is
. Кроме того, я не думаю, что разделитель необходим междуmd
иhi
, так как 12-часовойh
никогда не может быть 14 и никогда не начинаться с 3 или 4.Python 3, 179 байт
источник