Dalam tantangan ini, Anda perlu menentukan apakah itu Hari Pi, Pi Menit, atau Pi Kedua.
Karena Pi tidak rasional, ia ingin kode Anda sesingkat mungkin.
Contohnya
Tidak ada input yang diberikan , program Anda harus menggunakan waktu sistem. Saya baru saja menambahkannya untuk kejelasan
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>
Apa itu Pi Day / Minute / Second
Pi Day
adalah ketika bulan Maret, dan tanggal 14Pi Minute
adalah ketika jam adalah 3, dan menit adalah 14Pi Second
adalah ketika menit adalah 3, dan yang kedua adalah 14Pi Day
harus lebih disukai daripadaPi Minute
atauPi Second
, danPi Minute
harus lebih disukai daripadaPi Second
.- Untuk tantangan ini, Anda harus menggunakan waktu 12 jam (15:14 == 3:14). Tanggal / waktu yang digunakan untuk menentukan
Pi Day/Minute/Second
harus berdasarkan waktu sistem .
Penilaian & Bonus
-15 byte Bonus: Jika Anda mencetak "No Pi Time"
saat ini bukan waktu Pi.
Seperti biasa, celah standar tidak diizinkan. Ini adalah kode-golf kode terpendek dalam bytes menang!
Jawaban:
CJam, 41 byte
Uji di sini. Atau gunakan tautan ini untuk mematikan hasil
et
pengujian yang lebih mudah.Penjelasan
sumber
Javascript (ES6),
114112 - 15 = 97 byteTidak Terkumpul:
Terima kasih untuk -2 byte @ edc65
sumber
Date()
bukannyanew Date
'Pi '+['Day','Minute','Second'].find((x,i)=>
................"Pi undefined"
nderscore
daripadaunderscore
.Ruby,
125124 karakterSayangnya, si pintar lebih
%i[month day hour min sec].map{|x|Time.new.send x}
panjang.Kuncinya di sini adalah penggunaan
each_cons
untuk menghindari pengulangan (lihat beberapa baris terakhir dari penjelasan di bawah).sumber
'Pi'
seperti yang Anda lakukant
, bukan?[(p='Pi ')+Day','',p+'Minute',p+'Second']
lebih lama.Python 2,
219186183 Bytes (198-15)Saya mencoba
Tidak Terkumpul:
Golf:
sumber
from datetime import*;n=datetime.now()
lebih pendek. Juga, tidak ada gunanya mengindeks ke dalam array ketika Anda mencetak string konstan.time.localtime()
; turun ke 148-15 byte (tanpa perbaikan 12 jam). Masalah 12 jam sangat disayangkan; tanpanya Anda dapat dengan mudah menurunkannya menjadi 129-15 byte: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')
(dan 118-15 byte pada Python 3, dengan mengonversikannya menjadi byte dan menggunakan find, yang membuat semuanya lebih sederhana)Japt, 78 - 15 = 63 byte
Cukup mudah - cukup periksa tanggal untuk setiap kasus.
Penjelasan:
D=Ð)g
dapatkan tanggal saat ini (Ð
), simpan dalam variabelD
dan dapatkan bulan (g
). Mengapa menyimpannya dalam variabel, jika sudah satu huruf? Karena sejak itu Anda dapat berpakaian dengan bagian mana pun dari tanggalDa
, di manaa
fungsinya, tahun kembali, bulan, tanggal, dll. Tetapi jika tidak, Anda harus melakukannyaÐ a
, lihat ruangnya.¥3
adalah==3
, memeriksa apakah bulannya bulan Maret.©
adalah&&
, yaitu "dan".Df
adalah hari dalam sebulan.E
adalah 14?...:...
- set khas operator ternaryDd %C
pengingat membagi jam (Dd
) dengan 12 (C
)Dc
adalah menitDb
detikCobalah online!
Untuk meniru Hari Pi:
Untuk meniru Pi Minute :
Untuk meniru Pi Kedua :
sumber
TI-BASIC, 124 byte
Terima kasih kepada FlagAsSpam untuk mencukur beberapa byte.
sumber
i
(unit imajiner) dane
(konstanta Euler) sebagai pintasan? Jika tidak, itu juga bisa menghemat beberapa byte.e
sebenarnya adalah dua byte!Perl, 80 - 15 = 65 byte
Ambil 2, parsing representasi string
localtime
. Saat ini, ini terlihat seperti ini:Posisi string yang cocok digunakan untuk menentukan Waktu Pi yang benar.
Perl, 100 byte
localtime
mengembalikan bulan nol diindeks, maka kebutuhan untuk3-/3/
.sumber
Python 3, 137 - 15 = 122 byte
Persyaratan 12 jam sangat disayangkan, karena ini akan menjadi 118-15 = 103 byte tanpa itu:
sumber
AppleScript,
202190187183181 byteHei, ini tidak terlalu buruk.
Saya benar-benar menemukan penggunaan untuk pemanggilan metode AppleScript. Sosok pergi.Nggak. Ternyata ituI'm an idiot
. Pengaturan variabel lebih pendek.(bagi mereka yang bertanya-tanya, perintah tanggal saat ini mengembalikan tipe tanggal dengan konten
"Saturday, January 2, 2016 at 2:46:01 PM"
atau sejenisnya)sumber
PHP, 85 - 15 = 70 byte
Trik utama yang digunakan di sini adalah
Ymdhi_is
format tanggal , pada saat penulisan,date('Ymdhi_is')
kembali201501030258_5828
.md
,hi
danis
adalah nilai-nilai yang akan digantikan oleh0314
jika itu Pi-sesuatu. Perhatikan bahwa semua string itu akan selalu diganti dengan string panjang 4-karakter.strpos
akan berhenti mencari pada saat pertama kali jarum, jadi kami menempatkannya dalam urutan prioritas.hi
danis
diperlukan karena kami tidak inginstrpos
mencocokkan nilai yang akan tumpang tindih keduanya (berkat primo untuk menyimpan byte di sini).0314
karena314
salah mencocokkan 10:31:42 dengan Pi-Second.Bagian Y adalah yang paling sulit. Kita perlu awalan untuk mengimbangi kemunculan pertama dari Pi-sesuatu, yang memungkinkan kita untuk membedakan
strpos
nilai-nilai pengembalian antarafalse
(tidak ditemukan, Pi-tidak ada) dan0
(ditemukan pada indeks 0, hari-Pi).Dan kami ingin awalan ini panjangnya 4 atau 5 karakter, karena kami berencana untuk membagi
strpos
nilai pengembalian dengan 4.Y adalah 4 karakter, tetapi:
Y
akan diganti dengan 4 digit, tetapi itu tidak benar .Karena PHP tidak ada di tahun 314, dan kemungkinan tidak akan ada lagi di tahun 10314, saya kira bug ini dapat diabaikan dengan aman.
Catatan yang
0314
dapat tumpang tindihYmd
sejak:Ymmd
konfigurasi: tidak ada bulan ke-31.YYmm
konfigurasi: tidak ada bulan ke-14.YYYm
konfigurasi: ada kurang dari 40 bulan.Juga, ada versi tanpa bug yang terkait dengan tahun ini, yaitu 86 - 15 = 71 byte :
sumber
Ymd_hi_is
. Juga, saya tidak berpikir pemisah diperlukan antaramd
danhi
, karena 12 jamh
tidak pernah bisa menjadi 14, dan tidak pernah mulai dengan 3 atau 4.Python 3, 179 byte
sumber