Wszystkiego najlepszego dla mnie!
Napisz program, który drukuje w Happy birthday to me!
dniu swoich urodzin.
- Urodziny programu to czas utworzenia, ostatniej modyfikacji lub kompilacji programu (który wybierzesz) i nie wolno go zapisywać na stałe.
- Wywołanie lub wykonanie programu w żaden sposób nie może wpłynąć na datę, której użyjesz jako datę urodzin. Nie możesz zmienić swoich urodzin.
- Aby uzyskać dodatkowy kredyt (-15% liczby bajtów), wydrukuj w
Happy birthday to you!
dniu urodzin (na stałe), jeśli nie pokrywa się to z programem. Lub skorzystaj z okazji urodzin niektórych gwiazd i zdobądź -14%. - Musi wydrukować tylko to i niczego innego nie drukować.
- Policz bajty w UTF-8.
- Użyj kalendarza gregoriańskiego.
Powodzenia i wszystkiego najlepszego (dla nowonarodzonych programów).
PS
Po komentarzu Izkaty, jeśli wydrukujesz Happy birthday to Mel
na urodziny Mel Kaye , otrzymasz 20% zniżki. Ale musisz podać wiarygodne źródło, że to ta data.
Odpowiedzi:
PHP
7775746560Wielkie dzięki wspaniałym sugestiom Tima Seguine :
Sneaky PHP:
46424140Wykorzystując pomysł Phila H i ponownie sugestię Tima Seguine'a :
źródło
''
wokółdm
ciągów. Wygenerowało ostrzeżenie, ale uważam, że jest wysyłane do standardowego błędu, jeśli raportowanie błędów jest włączone.<?date(dm,stat(__FILE__)[9])-date(dm)&&die?>Happy birthday to me!
Bash (podstępny): 36
Zgodnie z zasadami: „czas utworzenia, modyfikacji lub kompilacji programu”. Wybieram czas modyfikacji i ciągłą samo-modyfikację. [HT @ace za 1 znak]
Perl (również podstępny): 29
Ten jest prawdopodobnie mniej podstępny niż pierwszy; Programy w Perlu są zawsze kompilowane przed ich uruchomieniem, o czym nie wszyscy wiedzą - patrz, podstęp jest edukacyjny. Oto data kompilacji, której używam.
- Edytuj zmiany reguły -
Zostało to napisane, zanim pojawiła się jakakolwiek reguła dotycząca zmiany urodzin. Myślę, że Perl nadal stoi; wszystkie programy w Perlu są kompilowane przed ich uruchomieniem. Zostawię tu odpowiedź ze względów edukacyjnych!
źródło
!
z\!
i usuń cudzysłów, aby zapisać 1 charbash - 65
Dzięki ugoren , asowi i nyuszika7h za pomoc.
źródło
!
z\!
tak nie trzeba cytaty i oszczędzania 1 char.!
w interaktywnych powłokach, a nie skryptach.[
i]
zamiast[[
i]]
.C # 198,05 (233–15%)
Sformatowany:
191 (bez premii)
181,05 (213–15%)
Z kilkoma dodatkowymi instrukcjami (musisz to skompilować
b.exe
i uruchomić z katalogu, w którym znajduje się plik wykonywalny), mogę sprowadzić to do tego:171 (bez premii)
Te same instrukcje, co powyżej, tym razem tylko drukując wiadomość w jej urodziny (więc nie -15% premii).
źródło
,b="1202"==t
po otrzymaniu ciągu daty i używając go zamiast tego.,b="1202"==t
ale ta==t
część nie jest możliwa, ponieważ to daje wynik bool, a druga zmienna jest łańcuchem. Nie można (AFAIK) używać dwóch różnych typów w jednej deklaracji „var”.CreationTime.Date == DateTime.Today
.Java - 275 - 15% = 233,75 z bonusem / 237 bez bonusu
Z premią:
Bez premii:
Urodziłem się 23 kwietnia.
źródło
\n
) nie jest wymagany AFAIK, co oszczędza kolejne 4 bajty ;-)Jestem bardzo dumny z tej małej sztuczki, aby zaoszczędzić kilka bajtów na wiadomości. Mam nadzieję, że zostaną uwzględnione w innych odpowiedziach. Pierwszy o tym pomyślałem!
Pyton
105 znaków, bez dodatkowego kredytu. Zapisz plik jako „wszystkiego najlepszego dla mnie” i uruchom. Działa tylko w GMT, a „urodziny” są zdefiniowane jako data urodzenia, a nie rocznica (często nazywane również „urodzinami”).
Aby zadziałało, zapisz to jako „wszystkiego najlepszego dla mnie” i biegnij
python "happy birthday to me"
Uwaga: oczywiście w nazwie pliku może znajdować się tylko mały pasek startowy, dzięki czemu dowolny dowolny kod może zostać zredukowany do poziomu paska startowego. Zwykle rozważałbym to „oszustwo”. Jednak „wszystkiego najlepszego dla mnie” nie jest nieuzasadnioną nazwą pliku - opisuje to, co robi program, znacznie lepiej niż niektóre programy (np. „Python”), więc w tym przypadku pozwolę na to :)
źródło
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
Nazwa pliku musi być „fm”
źródło
strncmp(x, y, 5)
porównuje daty jak28-12-2013
pierwsze 15 znaków (28-12
np. 28 grudnia). Czy to działa również, gdyyyyy/mm/dd
na przykład są ustawienia regionalne użytkownika ? Czy Matlab domyślnie madd-mm-yyyy
zawsze? (Po prostu ciekawy). Edytuj Nevermind: znalazłem! . Wygląda na to, że tak. To nie ma znaczenia, w każdym razie domm/dd/yyyy
lubdd-mm-yyyy
od zarówno lewy i prawy operand użyłby tego samego formatu i tak oba 5 lewostronne znaków będzie pasować w każdym razie; tak długo, jak rok nigdy nie prowadzi.t
? Niedir('f.m').date
działa?t
jest konieczne, abydir
zwrócić atrybuty pliku (w przeciwnym razie po prostu zwróci wszystkie pliki w katalogu, które pasują'f.m'
). Ponadtot
jest konieczne, aby uzyskać dostęp dodate
pola.GNU COBOL z opcją -free, 204
Łamam zasady dotyczące celebrytów, więc nie ma tu bonusu ...
Wytworzony tekst jest wprowadzany przez użytkownika (wymagany podczas uruchamiania). Jeśli nie jest to dobre, należy zdefiniować linię
C
, tak jak to ma miejsceACCEPT C
, iDISPLAY C
musi się staćDISPLAY "HAPPY BIRTHDAY TO ME!"
dla dodatkowych siedmiu znaków.WHEN-COMPILED
to specjalny rejestr zawierający datę / czas kompilacji, który jest dostępny dla programu (zawsze przydatny, możesz wiedzieć, że masz poprawną wersję). Jest obcięty,MOVE
ponieważ reszta nie jest potrzebna.DATE
jest bieżącą datą - ta data to rymdd.W
/
definicji A jest to symbol edycji wstawiania, ponieważ data kompilacji zawiera ukośniki. Dodatkowa postać, ale ułatwia porównanie.Celebrity = Grace Hopper
źródło
Partia - 37 bajtów
Kradzież metody zastosowanej przez jedną z odpowiedzi Basha.
Inna metoda - 145 bajtów
źródło
Rubinowy, 69 znaków / bajtów
31536000
to liczba sekund w ciągu roku i86400
liczba sekund w ciągu dnia.źródło
JavaScript
Node.js, 156 bytes
Uses the file's modification time.
źródło
Powershell - 105 bytes
Ungolfed:
The bonus isn't worth it, I can only get 117.5.
źródło
Powershell - 127
For the 15% bonus - 151 bytes, less 15% = 128.4
źródło
write
command - With just"happy birthday to me!"
it will print it out.Ruby -
8010387 bytesRuby -
123115135121 - 15% =104.5597.75114.75102.85 pointsMight be a little longer or shorter depending on where your birthday falls in the year, and the shortest way to represent that. For mine, that's
36e5
(seconds since epoch; time zone dependent).Does Mel Gibson count? Here's a 138 byte - 35% bonus = 89.7-point program that celebrates itself, me, and Mel!
źródło
PureBasic
Without Bonus - 142
With Bonus - 218 - 15% = 185.3
źródło
TI-BASIC, 68 bytes
Remember, these tokens are one byte:
If , Ans, →, Disp
.getDate
is two bytes. All other one-character symbols are one byte.źródło
J 79
Bonus version120 - 15% = 102
Do I get extra credit for also printing both when both are having their birthday?
Explanation (right to left):
The central verb of the train
The left tine for the central train:
źródło
Java - 196
This differs from the other Java submission by using Strings, shaving 41 characters off in the process. It uses String.format("%tj") to format a java.util.Date or a long as a day-of-year String, and then compares these two Strings.
Formatted:
źródło
C# 191 no bonus
formatted:
źródło
var x="MMdd";
+ ToString(x
) + ToString(x
) = 15 whereas ToString("MMdd"
); + ToString("MMdd"
); only costs 12.WriteLine()
can be shortened toWrite()
. With above and this change in place you have the exact same solution as I do ;-)JavaScript (node.js) - 100 bytes
źródło
vb.net ~161c
This will print the celebration message to all whose birthday it is.
Alan => Alan Kaye
Score: 253c (-33c vb.net min) = 220 - 15% (my birthday bonus) = 187c - 14% (Celeb Birthday) = 160.82 ~161c or 220c - 29% = 156.2 ~157c
źródło
Powershell, 82 bytes
where
is the combinations of shortcuts and aliases for the expression:
that equivalent a canonical form:
Powershell, 119 bytes - 14% = 102.34 Points
At January 3, the script display
Happy birthday to Prof!
. If this script is saved on January 3, two greetings will be displayed.źródło
C# - 63 bytes
I choose compilation time. Since the C# code compiles to MSIL which on runtime is compiled to the executable code by the JIT Compiler, this program meets the conditions.
EDIT-- Possibly invalid answer as pointed in comments.
źródło