Selamat ulang tahun untukku!
Tulis program yang mencetak Happy birthday to me!
pada hari ulang tahunnya.
- Ulang tahun program adalah kreasi, modifikasi terakhir, atau waktu kompilasi program (yang Anda pilih), dan tidak boleh dengan kode keras.
- Tanggal yang Anda gunakan sebagai tanggal lahir tidak boleh dipengaruhi oleh permintaan atau eksekusi program dengan cara apa pun. Anda tidak dapat mengubah tanggal lahir Anda.
- Untuk kredit tambahan (-15% jumlah byte), cetak
Happy birthday to you!
pada hari ulang tahun Anda (hard coded), jika tidak sesuai dengan program. Atau gunakan ulang tahun selebriti dan dapatkan -14%. - Ini harus mencetak hanya ini, dan tidak mencetak apa pun di hari lain.
- Hitung byte, dalam UTF-8.
- Gunakan kalender Gregorian.
Semoga sukses dan selamat ulang tahun (untuk program yang baru lahir).
PS
Mengikuti komentar Izkata, jika Anda mencetak Happy birthday to Mel
pada hari ulang tahun Mel Kaye , Anda mendapat diskon 20%. Tetapi Anda harus memberikan sumber yang kredibel bahwa ini adalah tanggal ini.
Jawaban:
PHP
7775746560Banyak terima kasih atas saran luar biasa dari Tim Seguine :
PHP Sneaky:
46424140Menggunakan ide Phil H dan lagi saran Tim Seguine :
sumber
''
sekitardm
string. Ini menghasilkan peringatan, tapi saya yakin itu akan dikirim ke kesalahan standar jika pelaporan kesalahan diaktifkan.<?date(dm,stat(__FILE__)[9])-date(dm)&&die?>Happy birthday to me!
Bash (licik): 36
Menurut aturan: "waktu pembuatan, modifikasi atau kompilasi program". Saya memilih waktu modifikasi, dan modifikasi diri abadi. [HT @ace untuk 1 karakter]
Perl (juga licik): 29
Yang ini bisa dibilang kurang licik dari yang pertama; Program Perl selalu dikompilasi sebelum dijalankan, yang tidak semua orang tahu - lihat, ada putaran edukatif pada kecerdikan. Jadi ini dia tanggal kompilasi yang saya gunakan.
- Edit untuk perubahan aturan -
Ini ditulis sebelum ada aturan untuk mengubah hari ulang tahun Anda. Saya pikir Perl masih berdiri; semua program Perl dikompilasi sebelum dijalankan. Saya akan meninggalkan jawabannya di sini karena alasan pendidikan!
sumber
!
dengan\!
dan menghapus tanda kutip untuk menyimpan 1 charbash - 65
Terima kasih kepada ugoren , ace dan nyuszika7h untuk bantuannya.
sumber
!
dengan\!
sehingga Anda tidak perlu tanda kutip dan menyimpan 1 char.!
dalam shell interaktif, bukan skrip.[
dan]
bukannya[[
dan]]
.C # 198.05 (233 - 15%)
Diformat:
191 (Tidak ada bonus)
181,05 (213 - 15%)
Dengan beberapa instruksi tambahan (Anda perlu mengkompilasi ini
b.exe
dan menjalankannya dari direktori yang dapat dieksekusi) saya dapat membahasnya:171 (Tidak ada bonus)
Instruksi yang sama seperti di atas, kali ini hanya mencetak pesan pada hari ulang tahunnya sendiri (jadi tidak ada bonus -15%).
sumber
,b="1202"==t
setelah Anda mendapatkan string tanggal dan menggunakannya.,b="1202"==t
tetapi==t
bagian itu tidak mungkin karena yang mengevaluasi bool dan var lainnya adalah string. Anda tidak dapat (AFAIK artinya) menggunakan dua jenis berbeda dalam satu deklarasi "var".CreationTime.Date == DateTime.Today
.Java - 275 - 15% = 233,75 dengan bonus / 237 tanpa bonus
Dengan bonus:
Tanpa bonus:
Saya lahir pada tanggal 23 April.
sumber
\n
) tidak diperlukan AFAIK yang menyelamatkan Anda 4 byte ;-)Saya cukup bangga dengan trik kecil ini untuk menghemat beberapa byte pada pesan. Saya harap ini akan dimasukkan dalam jawaban lain. Saya adalah orang pertama yang memikirkan hal ini!
Python
105 karakter, tidak ada kredit tambahan. Simpan file sebagai "selamat ulang tahun untukku" dan jalankan. Berjalan dalam GMT saja, dan "ulang tahun" didefinisikan sebagai tanggal kelahiran Anda, bukan ulang tahun itu (juga sering disebut "ulang tahun").
Agar berhasil, simpan ini sebagai "selamat ulang tahun untukku" dan jalankan
python "happy birthday to me"
Catatan: tentu saja, semua kecuali bootstrap kecil bisa dalam nama file, membuat kode besar sembarang mengurangi ke bootstrap. Biasanya saya akan menganggap ini "curang". Namun, "selamat ulang tahun untuk saya" bukan nama file yang tidak masuk akal - ini menggambarkan apa yang program lakukan, jauh lebih baik daripada beberapa program (misalnya "python"), jadi dalam hal ini saya akan mengizinkannya :)
sumber
eval(sys.argv[0])
?However, "happy birthday to me" is not an unreasonable filename - it describes what the program does, much better than some programs (e.g. "python"), so in this case I'm going to allow it
Matlab: 66
Nama file harus 'fm'
sumber
strncmp(x, y, 5)
membandingkan tanggal seperti28-12-2013
15 karakter pertama (28-12
mis. 28 Desember). Apakah ini juga berfungsi ketika pengaturan lokal penggunayyyy/mm/dd
misalnya? Apakah Matlab defaultdd-mm-yyyy
selalu? (Hanya penasaran). Sunting Nevermind: ditemukan! . Sepertinya memang begitu. Lagi pula tidak masalah untukmm/dd/yyyy
ataudd-mm-yyyy
karena kedua operan kiri dan kanan akan menggunakan format yang sama dan kedua karakter paling kiri tetap cocok; sepanjang tahun tidak pernah memimpin.t
? Tidakdir('f.m').date
bekerjat
diperlukan untukdir
mengembalikan atribut file (jika tidak, ia hanya akan mengembalikan semua file dalam direktori yang cocok'f.m'
). Selanjutnya,t
perlu untuk mengaksesdate
bidang.GNU COBOL dengan -gratis, 204
Saya melanggar aturan tentang selebriti, jadi tidak ada bonus di sana ...
Teks yang dihasilkan adalah input pengguna (diminta saat dijalankan). Jika itu tidak baik, maka definisi baris
C
perlu dihapus, seperti halnyaACCEPT C
, danDISPLAY C
harus menjadiDISPLAY "HAPPY BIRTHDAY TO ME!"
, untuk tujuh karakter tambahan.WHEN-COMPILED
adalah register khusus yang berisi tanggal kompilasi / waktu yang tersedia untuk program (selalu berguna, Anda dapat mengetahui bahwa Anda memiliki versi yang benar). Itu terpotong diMOVE
karena sisanya tidak diperlukan.DATE
adalah tanggal saat ini - ini adalah yymmdd.The
/
dalam definisi A adalah simbol pengeditan penyisipan, karena tanggal kompilasi berisi garis miring. Karakter tambahan, tetapi memudahkan perbandingan.Selebriti = Grace Hopper
sumber
Batch - 37 Bytes
Mencuri metode yang digunakan oleh salah satu jawaban Bash ..
Metode lain - 145 Bytes
sumber
Ruby, 69 karakter / byte
31536000
adalah jumlah detik dalam setahun, dan86400
jumlah detik dalam sehari.sumber
JavaScript
Node.js, 156 byte
Menggunakan waktu modifikasi file.
sumber
Powershell - 105 byte
Tidak Disatukan:
Bonus tidak sepadan, saya hanya bisa mendapatkan 117,5.
sumber
Powershell - 127
Untuk bonus 15% - 151 byte, kurang 15% = 128,4
sumber
write
perintah - Dengan hanya"happy birthday to me!"
itu akan mencetaknya.Ruby -
8010387 byteRuby -
123115135121 - 15% =104,5597,75114,75 102,85poinMungkin sedikit lebih lama atau lebih pendek tergantung di mana ulang tahun Anda jatuh pada tahun itu, dan cara terpendek untuk mewakili itu. Bagi saya, itu
36e5
(detik sejak zaman; tergantung zona waktu).Apakah Mel Gibson masuk hitungan? Berikut adalah 138 byte - bonus 35% = program 89,7 poin yang merayakan dirinya sendiri, saya, dan Mel!
sumber
PureBasic
Tanpa Bonus - 142
Dengan Bonus - 218 - 15% = 185,3
sumber
TI-BASIC, 68 byte
Ingat, token ini adalah satu byte:
If , Ans, →, Disp
.getDate
adalah dua byte. Semua simbol satu karakter lainnya adalah satu byte.sumber
J 79
Bonus versi 120 - 15% = 102
Apakah saya mendapatkan kredit tambahan untuk mencetak keduanya saat keduanya berulang tahun?
Penjelasan (kanan ke kiri):
Kata kerja pusat kereta
Tine kiri untuk kereta pusat:
sumber
Jawa - 196
Ini berbeda dari pengajuan Java lainnya dengan menggunakan Strings, mencukur 41 karakter dalam proses. Ia menggunakan String.format ("% tj") untuk memformat java.util.Date atau selama String sehari-tahun, dan kemudian membandingkan dua String ini.
Diformat:
sumber
C # 191 tidak ada bonus
diformat:
sumber
var x="MMdd";
+ ToString (x
) + ToString (x
) = 15 sedangkan ToString ("MMdd"
); + ToString ("MMdd"
); hanya biaya 12.WriteLine()
dapat dipersingkatWrite()
. Dengan di atas dan perubahan ini di tempat Anda memiliki solusi yang sama persis seperti yang saya lakukan ;-)JavaScript (node.js) - 100 byte
sumber
vb.net ~ 161c
Ini akan mencetak pesan perayaan untuk semua orang yang berulang tahun.
Alan => Alan Kaye
Nilai: 253c (-33c vb.net min) = 220 - 15% (bonus ulang tahun saya) = 187c - 14% (Ulang Tahun Perayaan) = 160,82 ~ 161c atau 220c - 29% = 156,2 ~ 157c
sumber
Powershell, 82 byte
dimana
adalah kombinasi pintasan dan alias untuk ekspresi:
yang setara dengan bentuk kanonik:
Powershell, 119 byte - 14% = 102,34 Poin
Pada 3 Januari , skrip ditampilkan
Happy birthday to Prof!
. Jika skrip ini disimpan pada 3 Januari, dua salam akan ditampilkan.sumber
C # - 63 byte
Saya memilih waktu kompilasi . Karena kode C # dikompilasi ke MSIL yang pada saat runtime dikompilasi ke kode yang dapat dieksekusi oleh JIT Compiler , program ini memenuhi persyaratan.
EDIT - Kemungkinan jawaban tidak valid seperti yang ditunjukkan dalam komentar.
sumber