Hari posting ini diterbitkan adalah Malam Natal. Besok akan Natal. Kemarin adalah Malam Natal. Dalam dua hari akan tiba
Christmas Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve
.
Tugas Anda adalah mengambil tanggal program dijalankan dan menyandikannya dalam format Malam Natal.
- Jika program Anda dijalankan pada Natal, itu akan menampilkan string "Natal".
- Jika program Anda tidak berjalan pada Natal, itu akan menampilkan string "Natal", diikuti oleh string "Hawa" berulang
n
kali, di manan
jumlah hari sampai Natal.- Perhatikan bahwa ini harus didasarkan pada Natal berikutnya . Misalnya, jika hari itu 26 April 2019, Anda harus melakukan perhitungan berdasarkan 25 Desember 2019, bukan Natal lainnya.
- Ingatlah untuk menghitung hari kabisat.
- Natal adalah 25 Desember setiap tahun.
Ini adalah kode-golf , jadi kode terpendek menang! Perhatikan bahwa tujuannya bukan untuk menemukan program terpendek dalam bahasa apa pun, tetapi untuk menemukan program terpendek dalam setiap bahasa tertentu. Misalnya, jika Anda menemukan program C ++ terpendek, maka ia memenangkan kontes ini untuk C ++, bahkan jika seseorang menemukan program yang lebih pendek dengan Python.
Jawaban:
SmileBASIC,
737167 byteProgram ini mencetak "Natal", lalu mencetak "Hawa" setiap kali sehari, sampai tanggal 25 Desember. (12/25 = 0,48)
Mungkin membutuhkan waktu hingga satu tahun untuk berjalan.
sumber
Rumus Excel, 59 byte
sumber
YEAR(TODAY()+6)
selalu mengembalikan tahun yang benar, sehingga menghindari kondisinya.YEAR(NOW()+6)
berfungsi juga dengan 2 byte lebih sedikit.NOW()
termasuk waktu, jadi itu tidak akan menjadi bilangan bulat dan saya tidak yakinREPT
akan mengizinkannya.="Christmas"&REPT(" Eve",DATE(YEAR(DATE(2018,12,25)+6),12,26)-DATE(2018,12,25))
Perl 6 ,
6147 byteucapkan 'Natal' ~ 'Eve'x (Date.today ... ^ {. month == 12 &&. day == 25})Cobalah online!
-14 byte (!) Berkat Jo King
Date.today ...^ /12\-25/
adalah urutan tanggal mulai hari ini dan berakhir sehari sebelum Natal. (Ekspresi reguler/12\-25/
dicocokkan dengan representasi string dari tanggal.) String" Eve"
direplikasi beberapa kali sama dengan panjang urutan itu, dan merupakan output setelah string"Christmas"
.sumber
/12.25/
bekerja12025-12-24
R ,
112 10672 byteVia @digEmAll dan @ Joe
Cobalah online!
Jawaban asli saya sebelum klarifikasi bahwa kode tersebut akan mengambil tanggal di mana kode dijalankan sebagai input. Itu bisa dimodifikasi seperti di atas untuk menghemat banyak byte tetapi saya tidak akan repot.
Cobalah online!
Penjelasan: semua orang di gereja jadi saya punya waktu untuk melakukan ini. Ekstrak tahun, paksa ke integer. Buatlah vektor Xmas tahun itu dan Xmas tahun depan dan kurangi tanggal input untuk mendapatkan vektor dua perbedaan antara tanggal input dan kedua Xmases tersebut.
Pilih yang tidak negatif dan
cat
"Natal" dengan banyak "Hawa" itu.sumber
y
sekali sehingga Anda bisa menggunakannya secara langsung untuk 108 byte.z[z>=0][1]
bekerja, bukanmin
?Windows PowerShell ,
676463 byteCobalah online!
Berhasil mencukur
3 byte4 byte (terima kasih Sapi dukun ) dengan menggunakan-f
operator ormat.ToString()
, dan kemudian mengurangi string tanggal dari nilai numerik 1225 bukannya melakukan perbandingan dengan-ne
. Bilangan bulat yang dihasilkan akan ditafsirkan sebagai boolean untuk kondisi di mana0
(yang akan terjadi pada hari Natal) ditafsirkan sebagaiFalse
(jangan masukkan loop), dan nilai lainnya ditafsirkan sebagaiTrue
(masukkan loop).Karena bilangan bulat ada di sebelah kiri sekarang, string tanggal akan dikonversi ke bilangan bulat dan matematika akan dilakukan, sebagai lawan dari versi sebelumnya di mana
1225
bilangan bulat dikonversi ke string untuk perbandingan.Versi asli
Windows PowerShell , 67 byte
Cobalah online!
Menggunakan
for
loop sebagaiwhile
loop pada dasarnya, karena lebih pendek. Dalam kondisi loop kami memeriksa tanggal saat ini (date
, bentuk singkat dariGet-Date
), disalurkan keForEach-Object
alias%
, menggunakan formulir yang dapat memanggil metode dengan nama wildcarded; dalam hal ini metodenya adaAddDays()
padaDateTime
objek, dan nilai yang kita berikan adalah$i
.Ini disalurkan ke
ForEach-Object
lagi untuk memanggilToString()
metode, dengan format stringMd
(bulan, lalu hari, digit minimal karena kami tidak peduli dengan apa yang terjadi selanjutnya). String ini kemudian diuji untuk melihat apakah itu tidak sama-ne
dengan angka1225
, yang akan dikonversi ke string untuk perbandingan, menghemat kuotasi.Inilah sebabnya mengapa tidak masalah bahwa bulan dan hari adalah angka tunggal, itu tidak akan pernah ambigu karena tidak ada hari lain dalam setahun yang akan menjadi ketat
1225
.Loop terus sampai string adalah
1225
. Pada awal program,$i
akan menjadi nol sehingga akan membandingkan tanggal hari ini, dan loop tidak akan pernah dieksekusi, tetapi untuk hari lain$i
akan bertambah dalam tubuh loop, sehingga kita akan memiliki hitungan berapa hari sampai Natal berikutnya, secara otomatis terhitung tahun kabisat dan apakah Natal berlalu tahun ini atau tidak.Setelah loop, kami hanya menampilkan string yang
Christmas
digabungkan dengan hasil mengalikan nilai stringeve
kali$i
(yang, pada hari Natal, akan0
, menghasilkan noeve
s).sumber
;
setelahnya{$i++}
berlebihan? (juga wow Anda memimpin lagi bash)C # (Visual C # Interactive Compiler) , 89 byte
Cobalah online!
-3 byte terima kasih kepada @JeppeStigNielsen!
Strategi saya cukup mudah:
t
ke tanggal saat iniEve
kalaut
bukan Natalt
dan ulangiSaya mencoba beberapa hal yang lebih menarik, tetapi cara ini membutuhkan byte paling sedikit.
sumber
t.Month<12|t.Day!=25
dengan yang lebih pendek$"{t:Md}"!="1225"
. Ini menggunakan string yang diinterpolasi dan string format DateTime kustom.T-SQL,
9288 byteSunting: Disimpan 4 byte berkat @BradC.
sumber
PRINT'Christmas'+...
dan 2 lainnya dengan menggunakanDATEDIFF(D,
bukannyaDATEDIFF(DAY,
APL (Dyalog Unicode) ,
7663 byte SBCSProgram lengkap. Asumsi
⎕IO←0
(pengindeksan nol).Cobalah online!
⎕CY'dfns'
c o p y di perpustakaan dfns⎕TS
saat t ime s memadatkan sebagai [tahun, bulan, hari, jam, menit, detik, ms]days
[c] menemukan jumlah hari [n] sejak 1899/12/31 00: 00: 00.000(⍳366)
menambahkan 366 bilangan bulat pertama (0 … 365) untuk itudate
[c] temukan tanggal [n] yang sesuai dengan angka-angka itu (tabel 366 × 7; satu kolom per unit)⍉
transpos (tabel 7 × 366; satu baris per unit)1↓
turun satu baris (tahun)2↑
ambil dua baris pertama (bulan dan hari)12 25⍳⍨
menemukan indeks4×
perkalian Natal pertama yang oleh empat' Eve'⍴⍨
digunakan untuk membentuk kembali daftar karakter'Christmas ',
menambahkan bahwa untuk ini[c] kode fungsi itu
[n] mencatat untuk fungsi itu
sumber
Python 2 ,
111103 byteCobalah online!
Pembaruan terinspirasi oleh jawaban Richard Crossley .
Penjelasan:
sumber
Ruby , 80 byte
Cobalah online!
Terima kasih tsh untuk idenya
sumber
puts
denganp
: tautan Try It OnlinePHP, 61 byte
Jalankan dengan
-n
atau coba online .sumber
JavaScript,
1351311219288 byteSolusi (naif) pertama saya ( 135b ):
Ini menetapkan 2 tanggal: sekarang dan Natal tahun ini. Jika yang terakhir belum berlalu, itu hanya akan membuat mereka berbeda, jika sudah berlalu, akan berbeda dengan Xmas tahun depan. Baik menggunakan berbeda untuk jumlah pengulangan.
(Mencoba) Berpikir di Luar Kotak ( 131b ):
Tantangan menentukan output WHICH diperlukan ketika menjalankan program pada hari tertentu, tetapi tidak menentukan KAPAN untuk mengembalikannya ...
Ini hanya akan 'tidur' selama sehari, menambah penghitung dengan 1, dan ulangi sampai Xmas untuk memberikan hasil.
Karena JavaScript tidak menjamin waktu 'tidur', hasil yang sebenarnya mungkin tidak aktif.
Ini juga jelek untuk menggunakan
alert
fungsi, yang berarti kita sebenarnya tidak berurusan dengan JavaScript murni, tetapi dengan API browser juga (kita dapat menggunakanconsole.log
biaya tambahan 6 byte).Pendekatan yang lebih baik ( 121b ):
Mulai dari hari ini, tambahkan tanggal dengan satu hari hingga Natal, kemudian gunakan penghitung putaran itu untuk jumlah pengulangan yang diperlukan.
Meningkatkan (termasuk melalui minifier dan menggunakan trik 12Me21 untuk mencukur 5b ekstra) ( 92b ):
Sentuhan akhir ( 88b ):
sumber
t.getMonth()/t.getDate-.48
untuk memeriksa apakah tanggal tidak desember 25print
diperlukan karena ini adalah program yang bukan fungsi, kecuali 1. Anda mengubahnya menjadi lambda atau 2. Anda menyatakan bahwa Anda menggunakan REPLt=new Date(+t+864e5)
lebih pendek 1 byte.VBA (Excel), 108 byte
Salin dalam modul kosong. Mencetak ke jendela Segera:
Catatan: Menggunakan
:
alih-alih jeda baris menghemat dua byte per baris.Perhatikan bahwa editor VBA akan menyisipkan spasi tambahan antara kata kunci, operator, dll ... dan tanda kurung setelah Sub definisi, tetapi jika Anda menyalin dan menempelkan kode ini akan berfungsi (saya tidak bisa menghilangkan ruang itu sebelum
&
).Tidak buruk untuk VBA (sekali).
sumber
Christmas
: |&
melempar kesalahannow
. Ketika Anda melakukan itu, itu akan terlihat seperti?"Christmas";:For i=1To DateSerial(Year(Now+6),12,25)-Now:?" Eve";:Next
Bash + tanggal GNU,
7273 byte!=
dengan-
d=0
, karenadate -dday
tanggal + 1 dan tidak berfungsi pada 25/12Cobalah online
sumber
=~
tidak bekerja di for-loop conditional?Python 2, 128 byte / Python 3, 130 byte
tentu saja, dua byte lebih sedikit dengan Python 2
sumber
as D
sendiriBash ,
686561 byteGolf 4 byte terima kasih kepada Nahuel Fouilleul dengan menggunakan
``
substitusi perintah daneval
di tempat sede
danxargs
Cobalah online!
Di dalam
``
substitusi perintah , kami punyaeval
jalankan string berikut sebagai perintah shelldate\ -d{0..366}day\;
di bawah ekspansi penjepit dari{0..366}
, hasil ini dalam stringdate -d0day; date -d1day; date -d2day; ... date -d366day;
, setiap perintah dalam string ini menghitung tanggal antara 0 dan 366 hari dari sekarang menghasilkan output formatWed Dec 26 18:22:33 UTC 2018
, dengan masing-masing sejalan sendiri|sed
di mana, panggil perintah sed berikut/c.25/Q
jika regex/c.25/
cocok,Q
uit tanpa cetak\;cEve
jika tidak ubah baris keEve
Semua jumlah yang diperlukan
Eve
diproduksi masing-masing pada jalurnya sendiri. Output ini ditangkap``
, dan tunduk pada pemisahan kata di mana kata-kata dibagi pada baris baru. Setiap kata dimasukkan sebagai argumenecho
.echo Christmas
...
Setiap argumen untuk
echo
dicetak dengan dipisahkan oleh spasi, menghasilkan output yang diinginkan.sumber
bash
spesifik tentang solusi ini. Itu membutuhkan GNUdate
,sed
danseq
meskipun.C (gcc) , 157 byte
Saya berpikir bahwa saya akan dapat menghindari termasuk
time.h
tetapi itu hanya memberikan kesalahan segmen.Cobalah online!
sumber
#include <stdlib.h>
, tidak suka itu melakukan apa pun di sini*t;f(u)
bukannya*t,u;f()
dan#import<time.h>
bukannya#include <time.h>
dan5[t=localtime(&u)]
bukannyat=localtime(&u);t[5]
Groovy , 66 byte
Cobalah online!
Atas perkenan @ ASCII-only
sumber
Chistmas
: /Python 3, 106 Bytes
sumber
Scala ,
116113 byteCobalah online!
Dimana
c 25
kependekan dariDec 25
.sumber
contains("c 25")
sebagai gantinyamatches(".*c 25.*")
JavaScript,
8677 byteMenggunakan REPL itu akan menjadi
Kudos to ASCII-only untuk -9 byte
sumber
for(c='Christmas',d=new Date;!/c 25/.test(d=new Date(+d+864e5));)c+=' Eve';c
atau varian ini:for(s='Christmas',t=Date.now();!/c 25/.test(new Date(t+=864e5));)s+=' Eve';s
keduanya 76 byte.Lua ,
137118 byte.118 byte
137 byte (sebelumnya)
Perlu dicatat bahwa itu tidak berfungsi di LuaJIT (kesalahan sintaks)
sumber
MySQL, 102 byte
hampir sama dengan jawaban T-SQL Neil . Tampaknya tidak ada cara yang lebih pendek dalam SQL.
Cobalah online .
sumber
MATLAB, 91 byte
MATLAB Non-looper, 100 byte
sumber
Scala , 123 byte
Berkat kerja ASCII saja.
Cobalah online!
Scala + Joda-Time , 140 byte
Tidak berjalan di TIO karena memerlukan perpustakaan Joda-Time.
sumber
java.util.Date
bekerja di sini: /object Main extends App{}
karakter dalam penghitungan saya (karena saya tidak dalam jawaban Scala saya yang lain juga). Jika kami mengeluarkannya, Anda mengalahkan saya ^^withDate()
panggilan begitu mahal ...05AB1E ,
9389 byteCobalah secara online atau Coba online dengan tanggal 'hari ini' yang ditentukan sendiri yang ditiru .
Penjelasan:
05AB1E tidak memiliki bawaan untuk tanggal, kecuali untuk menerima tahun / bulan / hari / jam / menit / detik / mikrodetik saat ini, sehingga sebagian besar byte digunakan untuk perhitungan manual.
Lihat jawaban saya ini untuk memahami bagaimana kita pergi ke hari berikutnya. (PS:
1¾ǝ
telah diganti denganT`ǝ
, karena kami juga menggunakancounter_variable
tempat lain.)Lihat ini 05AB1E ujung tambang (bagian Cara menggunakan kamus? Dan Cara kompres bilangan bulat besar? ) Untuk memahami mengapa
'»ˆ
adalah"eve"
;'ŒÎ
adalah"christmas"
; danŽ9Ú
adalah1225
.sumber
C # (Visual C # Interactive Compiler) , 141 byte
Cobalah online!
sumber
Merah ,
8986847876 byte-10 byte berkat ASCII saja!
Cobalah online!
sumber
now
dan tidaknow/date
. Terima kasih atas peningkatan Anda!Perl 5 , 68 byte
Cobalah online!
Dimana
c 25
kependekan dariDec 25
.sumber