Jest grudzień 2014, a 2015 prawie się zaczął. Wydaje się jednak, że nie wszyscy zdali sobie z tego sprawę.
Ale ludzie PPCG przybywają na ratunek!
Wejście
Wasz program ma siatkę podobną do ściany, w której dni w grudniu wyglądają inaczej niż w listopadzie i styczniu. Każdy tydzień rozpoczyna się w niedzielę i kończy w sobotę.
Dni w ciągu miesiąca są reprezentowane przez #
. Dni, które przypadają poza miesiącem, są reprezentowane przez (spacja, kod ASCII 32). Każdy tydzień jest na osobnej linii. Linie są oddzielone znakiem nowej linii (
\n
). Twój program może wymagać wycofania lub włączenia nowego wiersza na końcu danych wejściowych.
Na przykład jest to dane wejściowe z grudnia 2009 r .:
#####
#######
#######
#######
#####
Kalendarz jest zawsze z grudnia.
Zadanie
Biorąc pod uwagę dane wejściowe, musisz znaleźć rok związany z kalendarzem. Ponieważ kalendarz ma wiele lat, dla których kalendarz jest zgodny, musisz zwrócić rok (przed 2015 r.), Który jest najbliższy 2015 r. (Z wyłączeniem samego 2015 r.)
Twój program musi generować prawidłowe dane wyjściowe dla dowolnego roku <2015, z wyjątkiem tych, które mają układ kalendarza na grudzień, który jest taki sam jak dla innego roku (przed 2015) bliższego 2015.
Jeśli rok jest mniejszy niż 2014, należy również obliczyć różnicę między rokiem a 2014. Na przykład dla roku 2012 różnica wynosi 2
.
Wynik
Wyjście twojego programu musi być:
- Tekst:
Your calendar is for <year>.
(Uwaga: ponieważ pierwotnie został napisany jako „kalendarz”, zaakceptuję również tę pisownię). - Następnie następuje nowa linia (
\n
lub\r\n
). - Po tekście:
It's almost 2015.
- Jeśli rok jest <2014, po tym musi następować tekst:
You're <difference> years behind.
Musi być w osobnym wierszu. - Następnie następuje nowa linia (
\n
lub\r\n
). - Po tekście:
Go buy a new calendar!
- Opcjonalnie następuje nowa linia (
\n
lub\r\n
).
Zasady
- Możesz wybrać, czy chcesz otrzymywać kalendarz jako argument wiersza poleceń (np.
yourprogram.exe <calendar>
), Czy monit o wprowadzenie danych przez użytkownika. - Możesz założyć, że twój program nie otrzyma nieprawidłowych danych wejściowych. Niepoprawne dane wejściowe obejmują układ kalendarza, dla którego nie istnieje rok.
- Najkrótszy kod (w bajtach, w dowolnym języku) wygrywa.
Wszelkie niestandardowe argumenty wiersza polecenia (argumenty, które zwykle nie są wymagane do uruchomienia skryptu) są liczone do całkowitej liczby znaków.
Czego twój program nie może zrobić:
- Zależy od wszelkich zasobów zewnętrznych.
- Zależy od posiadania określonej nazwy pliku.
- Wyprowadzaj cokolwiek innego niż wymagane wyjście.
- Uruchomienie zajmuje wyjątkowo długo. Jeśli Twój program działa przez minutę na komputerze przeciętnego użytkownika domowego, jest nieprawidłowy.
- Twój program nie może być napisany w języku programowania, dla którego nie istniał publicznie dostępny kompilator / tłumacz przed opublikowaniem tego wyzwania.
Przykłady
Wejście:
#####
#######
#######
#######
#####
Wynik:
Your calendar is for 2009.
It's almost 2015.
You're 5 years behind.
Go buy a new calendar!
Wejście:
######
#######
#######
#######
####
Wynik:
Your calendar is for 2014.
It's almost 2015.
Go buy a new calendar!
Wejście:
#
#######
#######
#######
#######
##
Wynik:
Your calendar is for 2012.
It's almost 2015.
You're 2 years behind.
Go buy a new calendar!
źródło
Odpowiedzi:
CJam, 126 bajtów
źródło
Python 3, 178 bajtów
Prosta tabela przeglądowa oparta na lokalizacji pierwszego
#
.Rozszerzony:
źródło
Perl - 187
źródło
Perl 5: 137
143Poprzednie podejście:
Kalendarz na standardowym wejściu (oczywiście tylko pierwszy wiersz jest istotny)
źródło
C # 235
zminimalizowane:
Nie golfił
Cóż, język jest pełny :)
źródło
Program
naP
. To powinno uratować ci kilka znaków :)y
obliczania, jeśli indeksujesz ciąg, możesz zapisać składnię wymaganą do opisania tablicy (tj.var y = "1054382"[index]-48
(0
To ASCII 48)).y
można również włączyć doz
obliczeń w celu uzyskania dalszych oszczędności.C #,
384,363325 bajtówCzas C #, proszę powiedz mi, czy przegapiłem jedną z zasad itp
Wejście
Wynik
Wejście 2
Wyjście 2
Edycja: zaktualizowano, udało się usunąć niektóre bajty
źródło
Java, 243 bajty
To pełny język :-)
Unminified
źródło
JavaScript (ES6),
199170 bajtówNie jestem przyzwyczajony do pisania ES6, więc wszelkie wskazówki będą mile widziane:
Tabela przeglądowa, 170 bajtów
Oryginał, 199 bajtów
Unminified
JavaScript (ES5),
212182 bajtówPoniżej zamieściłem również moją oryginalną wersję
Tablica wyszukiwania, 182 bajty
Unminified
Oryginalny, 212 bajtów
Unminified
źródło
CoffeeScript,
211177 bajtówPodobnie do mojej odpowiedzi na PHP, ale CoffeeScript nie ma
do-while
pętli ani krótkiego trójskładnikowego operatora:Unminifed
Skrócony przy użyciu tabeli odnośników:
źródło
PHP,
215181 bajtówTabela przeglądowa, 181 bajtów
Ze względu na krótką składnię tablic działa tylko na PHP 5.4+:
Unminified
Oryginalny, 215 bajtów
Działa z większością (jeśli nie wszystkimi) wersjami PHP 5:
Unminified
źródło
Ruby, 174
źródło
PHP, 145 bajtów
dwa podziały wiersza za tagiem zamykającym, ponieważ PHP zignoruje pierwszy
pobiera dane wejściowe z argumentu wiersza poleceń;
wymaga PHP 5.6 (wydanego 18 grudnia 2014 r.) lub nowszego do indeksowania literału ciągu.
źródło
SmileBASIC, 159 bajtów
źródło
C # (interaktywny kompilator Visual C #) ,
178175172 bajtówWypróbuj online!
źródło