Mam proste zadanie, które powinno być stosunkowo łatwe do realizacji za pomocą kodu. Twoim celem jest napisanie programu, który wyświetli czas napisany w języku hiszpańskim, biorąc pod uwagę czas w formacie GG: MM. Wiele osób prawdopodobnie nie wie, jak to zrobić, więc rozwinę się.
Czas w języku hiszpańskim jest dość logiczny. Zwykle jest zgodny ze wzorem „Es la / Son las (godzina) y (minuty)”. Godziny są w formacie 12-godzinnym, a „Es la” jest używane tylko, jeśli godzina to 1 (tj. Godzina pierwsza). Protokoły to inna historia. Jeśli minuta jest mniejsza niż 30, jest ona reprezentowana jak pokazano powyżej. Jeśli minuta przekroczy 30, wówczas godzina jest zaokrąglana w górę, a minuta jest odejmowana. Na przykład 7:35 jest tłumaczone na „8 godzin minus 25 minut”. Więcej przykładów podano poniżej. Lista potrzebnych hiszpańskich numerów znajduje się tutaj . Na niektórych numerach są akcenty, ale nie są one konieczne.
Uwaga: źródło mówi „uno”, ale aby być poprawnym gramatycznie, powinno to być „una”. Jak dotąd nie powinno to wpłynąć na żadne odpowiedzi.
Uwaga 2: „Cero” nie jest konieczne. Jeśli twój program wypisuje „Es la una” lub „Son las tres”, nie mam nic przeciwko. Przepraszamy za te zmiany zasad.
Zasady
- Dane wejściowe będą dostarczane przez STDIN lub równoważny w twoim języku.
- Brak odczytu z bibliotek zewnętrznych.
- Twój kod może zrobić wszystko z nieprawidłowymi danymi wejściowymi.
Bonusy
- -10, jeśli twój kod dodaje te dodatkowe frazy - „y cuarto” dla: 15, „y media” dla: 30 i „menos cuarto” dla: 45 (w zaokrągleniu w górę).
- -15, jeśli twój kod może obsługiwać AM i PM, odpowiadając odpowiednio „de la mañana” i „de la tarde”.
- -15, jeśli Twój kod może przetłumaczyć aktualny czas, jeśli nie podano żadnych danych wejściowych.
Punktacja
- Jest to wyzwanie polegające na grze w golfa i będzie oceniane według bajtów, a nie znaków.
Przykłady
Wejście: 8:10
Wyjście:Son las ocho y diez.
Wejście: 6:45
Wyjście:Son las siete menos quince (or cuarto).
Wejście: 1:29
Wyjście:Es la una y veintinueve.
Wejście: 12:55
Wyjście:Es la una menos cinco.
Daj mi znać, jeśli jest tu coś do określenia. To moje pierwsze pytanie, więc zdecydowanie nie jest idealne.
Es la una y cero
jest dość powtarzalny, więc rozumiem twój punkt widzenia. Nie sprecyzowałem tego, więc chyba jedno z nich będzie w porządku. Dzięki za opinie.01:21
jako przypadek testowy, ponieważ co najmniej jeden odpowiadający był zdezorientowany tym, co powiedziałeś o una vs. uno .Odpowiedzi:
JavaScript (ES6) 308
316Błąd edycji Edit2 Edytuj zapomniałem ubiegać się o bonus
Jako program z I / O poprzez wyskakujące okienko
Jako funkcja do przetestowania
Testuj w konsoli FireFox / FireBug
Wydajność
źródło
Tak, powraca najmniej oczekiwany język na zawodach golfowych, kodowany przez najgorszego golfistę na świecie!
Java - 676 bajtów (716-10-15-15)
Gra w golfa:
Nie golfowany:
Zajmuje się
quarto
imedia
, z AM / PM i nie ma wkładu. Więc mogę ubiegać się o wszystkie bonusy, nawet jeśli gdybym nie wdrożył tych funkcji, miałbym jeszcze niższy wynik, lol. maseczkiźródło
Znaki Pythona 3: 294 - 10 = 284
Otrzymuje to dziesięć punktów premii za użycie „cuarto” i „media”
Godziny i minuty czytamy jako
int
s. Jeśli minuty są powyżej 30, przechodzimy do następnej godziny, odmierzamy minuty od 60 i zmieniamy koniunkcję na „menos”.Lista
d
zawiera przekłady hiszpańskich numerach do 15. Dokładamyd[0]
być''
, aby zapobiec takie rzeczy jak „diecicero”. Odbywa się to przez niezręczne wywoływaniesplit(' ')
z początkową spacją; zwykłysplit
po prostu zignoruje to. Sprawa zero minut jest obsługiwana później.Aby uzyskać liczby powyżej 15, łączymy dziesięciocyfrowy ciąg z odpowiednim ciągiem jednocyfrowym.
15
i30
są napisane jako „media” i „cuarto” bez żadnych kosztów.Python 3 zapisuje jedną sieć znaków w Pythonie 2: -4
input
zamiastraw_input
, +2 dla parens w druku, +1 dla//
.źródło
una
nauno
, powinno działać teraz.PHP,
351349360 - 15 = 345 bajtówTen program nie jest wierszem poleceń: pobiera dane przez $ _GET [0]. Może być konieczne wyłączenie powiadomień w pliku php.ini. Teraz jest wyposażony w automatyczny czas bez wprowadzania danych, dzięki Niet the Dark Absol.
Zastosowane sztuczki:
~(...)
zapisuje jeden bajt poprzez bitowe odwracanie łańcucha, ponieważ nie potrzebujesz znaków cudzysłowu, ponieważ PHP zwykle zakłada, że wszystkie ASCII od 0x80 do 0xFF jest łańcuchem.<?=preg_filter(...,...)
: To<?=
skrót do pisania<? echo
.preg_filter()
zwykle stosuje zamiany na łańcuchach za pomocą wyrażenia regularnego, ale możemy użyć amortyzacji / e modyfikator do oceny wynikowego łańcucha jako kodu PHP. Dlatego zamiast rozdzielać łańcuch wejściowy na dwie osobne zmienne, możemy użyć odwołań wstecznych (1 $ i 2 $) na dopasowanym łańcuchu wejściowym, oszczędzając duże ilości bajtów.źródło
$_GET[0]?:date(~·Å–)
odejmiesz 3 od swojego wyniku.C ++:
474...422411 bajtówTa wersja wykorzystuje bonus cuarto / media (-10).
Moja pierwsza próba gry w golfa kodem! Spróbuję to poprawić w ten weekend.
Nie golfowany:
źródło
m%=10
Lua, 450-10 (cuarto / media) - 15 (manana / tarde) = 425
H>=12
wH<12
iw¹czeniu ekspresji zależnego się.table.concat
na ciągi znaków i dodano sugestię @ edc65, ostatecznie dodając 22 bajty.function
ciała do głównej części zmniejszyło jego długość aż o 15 bajtów .źródło
Es la una y uno
D - 484 bajty
źródło
Es la una y uno
Python 3, 409 bajtów
źródło
'string1 string2 string3'.split()
d[j]if i<31 else d[(j+1)%12]
dod[(j+(i>30))%12]
. Ogólnie rzecz biorąc, jeśli dwie alternatywy mają podobną strukturę, często można wykonać proste wyrażenie, które równa się każdemu z nich w zależności od wartości logicznej.Rubin, 313 (338–15–10)
To rozwiązanie tłumaczy aktualny czas, w którym nie podano danych wejściowych, i dodaje trzy frazy „y cuarto”, „y media” i „menos cuarto”.
źródło
Son las ocho y diecioch
Bash 423
(433 - 10 = 423, usuwając znaki diakrytyczne i cuarto, możemy obniżyć do 381)
źródło
Perl - 297 - 10 + 1 = 288 (liczenie
p
flagi)Edycja: dzięki @guifa mogę teraz odebrać bonus :)
Oto ten sam kod w wielu wierszach dla czytelności:
źródło
Es la una y uno
Scala 652 bajtów - 25
źródło
Pyth :
277kilka więcej234 - 10 (cuarto / bonus za media) = 224 bajtyTeraz zmniejszono ponad 50 bajtów z oryginału!
Szaleńczo tęskni za Pyth, ale to dlatego, że są pewne surowe dane. Prawdopodobnie można grać w golfa jeszcze dalej. Używa oczywistej techniki dzielenia zadania na godziny, y / menos, dziesiątkę cyfry minut i jedną cyfrę minut, a następnie tłumaczy liczby za pomocą tablicy translacji i wszystkiego innego za pomocą bzdurnych trójek.
Historia golfa
źródło
":"
i"i"
, użyj\:
i\i
zamiast.