Tantangan
Mengingat bahwa Natal adalah:
- Desember
- Bulan 12
- 25 hari
Setiap tahun, tentukan tanggal hari ini, dan apakah hari ini Natal atau tidak. Jika ini Natal, Anda harus mencetak "It's Christmas"
. Jika ini bukan Natal, Anda harus entah bagaimana menunggu sampai Natal dan kemudian mencetak "It's Christmas"
.
Contoh
Dari Pertanyaan Stack Overflow ini
import time
while time.strftime("%b, %d", time.localtime()) != "Dec, 25":
time.sleep(60)
print "It's Christmas"
Python dalam 115 Karakter
Aturan
Berikut aturannya:
- Asumsikan bahwa jam komputer selalu benar.
- Kode Anda harus dapat dimulai kapan saja.
- Kode Anda harus dicetak
"It's Christmas"
pada Natal. - Looping tentu tidak perlu, tetapi sekali mulai kode Anda tidak boleh berhenti sampai sudah dicetak.
- Kode terpendek menang.
Jawaban:
Perl + Unix, 40 karakter
Ini sama dengan solusi Perl JB , kecuali bahwa saya menyimpan beberapa karakter dengan menggunakan
date
perintah eksternal, bukan Perllocaltime
.sumber
Bash, 39
Bagi mereka yang tidak sabar:
Ini mengikuti semua aturan, terutama yang pertama.
sumber
Unix, 39 byte
Dengan bantuan dari Dennis, terima kasih untuk itu.
sumber
echo{,} "It\'s Christmas"|at -t12252359
, ini lebih pendek dari jawaban yang diterima. (Omong kosong diperlukan oleh cara.)PowerShell, 45
46karakterIni tentu saja tidak sangat hemat daya, sehingga baterai laptop mungkin mati sebelum Natal (alasan untuk berharap yang baru, mungkin). Tapi tidak tidur pasti lebih pendek .
Ini juga agnostik-lokal. Dan terima kasih kepada Jaykul untuk trik yang bagus dalam mengurangi ini lebih jauh.
Menyalahgunakan aturan sedikit, 45 karakter
Ini akan mencetak baris kosong sampai Natal, yang di atasnya akan mencetak "Ini Natal".
Saya t ...
sumber
-match
, dan dilakukan tanpa wildcard, tanpa ada untung / rugi karakter.Python (36 karakter)
Dalam semangat menyalahgunakan aturan:
Pasti mencetak "Ini Natal" pada Natal
Jika ini bukan Natal, habiskan waktu dengan mencetak "Ini Natal"
sumber
while 1:print"It's Christmas"
.PostScript, 90
Jangan jalankan di printer, itu tidak mencetak halaman, dan itu hanya akan melakukan printer Anda sampai hari Natal. Kemudian lagi, mendapatkan kembali printer Anda akan menjadi hadiah yang bagus.
sumber
Mathematica, 47
sumber
Perl, 44
45Bukankah waktu GMT sudah mencukupi? (Off 3 karakter ;-)
sumber
1until localtime=~/c 25/;
akan menghemat satu char. :)-E
pada saat itu. Terima kasih!localtime
bawah. Jangan ragu untuk mencurinya jika Anda mau, tetapi saya merasa ketergantungan ekstra membenarkan jawaban yang terpisah.)Perl, 45
Perl, 44
menggunakan operator ternary (Terima kasih kepada Ilmari Karonen).
sumber
? :
bukannya&& ;
akan menghemat satu char juga. (Dan saya akan menggunakansay
sebagai gantidie
untuk hasil yang lebih cantik.)say
alih-alih mati, skrip tidak pernah selesai.Javascript, 51 karakter
Ini adalah pembunuh CPU:
sumber
Saya ingin melakukan ini tanpa parsing string. Selanjutnya, ada banyak angka ajaib dalam kode saya.
Saya melakukan perkiraan untuk menghitung tahun kabisat. Tidak ada yang mengatakan bahwa ia harus mencetaknya tepat pada pukul 00:00:00, 25 Desember!
Perl,
806957 karakterDiedit untuk pengulangan yang lebih ringkas!
sumber
R (47)
sumber
Python, 66
68sumber
1
pada akhir baris kedua terlihat cukup mencurigakan bagi saya. : P1
menyediakan tubuh untuk while-loop. Ini pada dasarnya menunggu sibuk sampai 25 Desember. Ini memiliki efek yang mirip denganwhile 1:if'c 25'in time.asctime():break
.time.ctime()
akan melakukannya.TI-BASIC,
4238Diharapkan format tanggal menjadi YYYY / MM / DD.
getDate membuat daftar tiga elemen
{year,month,day}
; hanya pada hari Natal adalah bulan ^ 2 + hari ^ 2 sama dengan 769.23 byte digunakan untuk string karena huruf kecil masing-masing dua byte, kecuali untuk i yang ditampilkan sebagai token unit imajiner.
sumber
File batch, 68 karakter
Tidak dapat digunakan secara interaktif, karena sesi ini terbunuh. Memecahkan itu membutuhkan 5 karakter lebih banyak.
Juga sensitif terhadap lokal. Ini berfungsi di lokal saya yang menggunakan format tanggal ISO 8601.
Tapi hei, itu file batch (oleh sebagian besar bahkan tidak dianggap sebagai bahasa pemrograman). Dan lebih pendek dari Javascript (dan setara dengan Python).
sumber
Groovy, 55
Berpikir itu berhasil, tetapi masih menunggu hasil.
sumber
.*
sama sekali tidak perlu. (Mz. Anda dapat mengujinya dengan menunggu 5 Des alih-alih 25.)(pdf) eTeX - 180 karakter saja 1-25 Desember.
TeX hanya memiliki cara untuk mengakses tanggal ketika program dimulai, dan waktu yang berlalu sejak awal, dibatasi pada 32.768 detik, jadi saya perlu menghitung jumlah detik untuk menunggu, dan untuk setiap detik lakukan satu loop yang menunggu untuk waktu yang telah berlalu untuk mencapai
1s
dan mengatur ulang waktu. (Tepatnya, saya sedang melakukan blok 900 detik.)Bekerja untuk bulan apa pun membutuhkan lebih banyak pekerjaan: 355 karakter.
sumber
MySQL, 180 karakter
Karena untuk apa Anda menggunakan mesin basis data Anda?
Tidak terlalu kompetitif memanjang, tapi hei, itu bisa dilakukan!
sumber
DELIMITER /
,RETURNS TEXT
danCURDATE()LIKE'%12-25'
; dan mencoba untuk menghapus spasi.Ruby, 53
sumber
PHP, 40 byte
Lingkaran sampai 25 Desember; kemudian keluar ke mode biasa dan cetak.
Jalankan dengan pengaturan default (jangan tampilkan pemberitahuan).
sumber
8086 kode mesin, 33 byte
sumber
Javascript,
93897877 karakterfunction x(){Date().match("c 25")?alert("It's Christmas"):setTimeout(x,1)}x()
sumber
setInterval('/c 25/.test(Date())&&alert("It\'s Christmas")',9)
pada 61 karakter ... satu-satunya kelemahan adalah bahwa ia akanalert()
sepanjang hari pada hari Natal.setInterval
harus 1?setInveral
untuk1000*60*60*24
dan keduanya tidak akan membuat proses menderita dan hanya akan memberi tahu sekali pada hari Natal.D, 130
sumber
t.month^12|t.day^25
(jika prioritas saya tepat)Q, 63 karakter
akan bekerja untuk hari natal setiap tahun
sumber
SQL * Plus + PL / SQL - 100
SERVEROUTPUT ON
DBMS_OUTPUT.put
bukanDBMS_OUTPUT.put_line
tetapi itu tidak mencetak apa pun.sumber
C # (126)
Lebih bagus untuk baterai Anda:
C # (163)
sunting
Versi kedua ("lebih bagus untuk baterai Anda") memang memiliki sedikit masalah Desember. 26 hingga Desember. Saya hanya memikirkan: P
Kedua versi mungkin dapat dipersingkat lebih sedikit.
sumber
Japt , 27 byte (tidak bersaing)
Untuk menguji tanggal hari ini: Ganti
c 25
dengan huruf terakhir (singkatan) bulan ini + spasi + hari dalam sebulan.Feb 02
==b 02
Cobalah online! Non-bersaing karena Japt jauh lebih baru daripada tantangan ini.
sumber
VBA, 58 Bytes
VBE anonim akan mengaktifkan fungsi jendela yang tidak menerima input dan berjalan hingga hari Natal, saat itu ia mengeluarkan
It's Christmas
VBE untuk mengaktifkan jendela.sumber
bash-n-date: 69 karakter:
Tapi itu akan gagal pada 26 Desember hingga 31 Desember.
sumber
Q (60)
sumber