var QUESTION_ID=97585,OVERRIDE_USER=42963;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Odpowiedzi:
Dyalog APL z dfns jest cal , wersja 15.0: 22; Wersja 16.0: 19 bajtów
Funkcja cal jest dostarczana z domyślną instalacją, wystarczy wejść
)copy dfns
.Wersja 15.0:
∊⎕{⍵/⍨2=≢⍎⊢⌿cal⍺⍵}¨⍳12
∊
zaciągnąć się (spłaszczyć)⎕{
...}¨
dane liczbowe jako lewy argument do następującej anonimowej funkcji, przyjmując kolejno każdą z wartości po prawej stronie jako prawy argument⍵/⍨
argument if (daje pustą listę, jeśli nie)2=
dwa (mianowicie niedziela i poniedziałek) są równe≢
suma z⍎
liczby w⊢⌿
najniższy wierszcal
kalendarz dla⍺⍵
rok lewy argument, miesiąc prawy argument, ten ostatni⍳12
Od 1 do 12Wersja 16.0:
⍸2=⎕{≢⍎⊢⌿cal⍺⍵}¨⍳12
⍸
wskaźniki gdzie2=
dwa równe (tj. niedziela i poniedziałek)⎕{
...}¨
dane liczbowe jako lewy argument do następującej anonimowej funkcji, przyjmując kolejno każdą z wartości po prawej stronie jako prawy argument≢
suma z⍎
liczby w⊢⌿
najniższy wierszcal
kalendarz dla⍺⍵
rok lewy argument, miesiąc prawy argument, ten ostatni⍳12
Od 1 do 12źródło
JavaScript (Firefox 30+),
11210910395 bajtówSpójrz, nie ma wbudowanych!
Oto 107-bajtowa wersja ES6:
A oto moja poprzednia próba,
123113 bajtów ES6:Wyjaśnienie
Dzień tygodnia danego roku oblicza się w następujący sposób:
Innymi słowy:
y
.y
(y>>2
).y
(y/100|0
).y
; to 1/4y/100|0
, więc używamy*3/4|0
.Następnie modulujemy wynik o 7. Jeśli pozwolimy na
0
oznaczenie niedzieli,1
średniego poniedziałku itd., Wynik odpowiada dniu tygodnia 31 grudnia tego roku. Dlatego w grudniu chcemy sprawdzić, czy wynik jest1
. To daje nam ostatni znak w ciągu.Ostatni dzień listopada to 31 dni przed ostatnim dniem grudnia. Oznacza to, że aby ostatni dzień listopada był poniedziałkiem, 31 grudnia musi być
(1 + 31) % 7 = 4
= czwartek.Ta procedura jest powtarzana, dopóki nie wrócimy do marca (a
3
). Niezależnie od tego, czy jest dzień przestępny, ostatni dzień lutego przypada 31 dni przed ostatnim dniem marca, więc możemy to również obliczyć (to jest(3 + 31) % 7 = 6
). Trudną częścią jest znalezienie poprawnej wartości dla stycznia:(6 + 29) % 7 = 0
.(6 + 28) % 7 = 6
.Możemy obliczyć, czy jest to rok przestępny za pomocą następującego fragmentu kodu:
Daje to,
0
jeśliy
nie jest to rok przestępny, a dodatnią liczbę całkowitą w przeciwnym razie. To prowadzi nas dodo obliczenia dnia w styczniu. Możemy jednak zrobić to lepiej, odwracając warunki:
Ponieważ wynik fałszowania jest zawsze równy 0, możemy go zredukować do
oszczędzając jeszcze jeden cenny bajt.
Łącząc to wszystko, przeglądamy każdy znak w ciągu, sprawdzając, czy każdy z nich jest równy dniu tygodnia 31 grudnia. Zachowujemy indeksy pasujących, zwracając tę tablicę na końcu. I tak wykonujesz obliczenia roku przestępnego bez wbudowanych funkcji.
źródło
!(y%4)*y%100|!(y%400)
jest. co roku podzielne przez 4, z wyjątkiem lat niepodzielnych przez 100, chyba że podzielne przez 400y+(y>>2)+(z=y/25>>2)+(z>>2)
wciąż oszczędza bajt.(y*5/4-(y/100)*3/4)
.JavaScript (Firefox 30-57),
6765646361 bajtówZaoszczędź
246 bajtów dzięki @ETHproductions.Zapisano kolejny bajt, wyprowadzając miesiące w odwrotnej kolejności.źródło
.keys()
:y=>[for(_ of(m=0,Array(12)))if(new Date(y+400,++m).getDay()==2)m]
Array(12)
całkowicie:y=>[for(_ of(m=0,1e11+""))if(new Date(y+400,++m).getDay()==2)m]
MySQL,
183134129106 bajtówZamień
2016
na żądany rok. Biegać.Wersja 2: Używał
help_topics
tabeli w domyślnej instalacji zamiast tworzenia tabeli tymczasowej.Rev.3: Przyjęty trick arossa
-
i zauważyłem, że mogę również pominąć cytaty"-1"
.Jest to jednak
-1
wymagane w MySQL: potrzebuję pełnej daty.Rev.4: Ograniczenie
m BETWEEN 1 AND 12
może być wykonane jakom>0 AND m<13
(-6), ale w ogóle nie jest potrzebne - nieprawidłowe wartości zostaną zignorowane; ostrzeżenia zostaną policzone, ale nie wymienione.źródło
FROM help_topic
bezmysql.
pracy? Nie próbowałemUSE mysql;
Poprawną bazę danych należy jakoś wybrać.Perl, 64 bajty
Obejmuje +1 dla
-n
Podaj dane wejściowe STDIN:
mon.pl
:źródło
Partia,
160152 bajtówPort odpowiedzi @ ETHproduction. Ze skrótami miesięcznymi dla
197189 bajtów:źródło
J,
483433 bajtówZapisano 15 bajtów przy pomocy @ Adám .
Używa wbudowanego kalendarza do generowania tablicy ciągów reprezentujących miesiące, a następnie analizuje każdy ciąg w celu ustalenia, czy ostatni poniedziałek jest ostatnim dniem miesiąca. Dane wyjściowe są wysyłane każdego miesiąca jako numer każdego miesiąca. Oznacza to, że
Jan = 0
,Feb = 1
, ...,Dec = 11
.Dane wyjściowe
calendar
toStosowanie
Wyjaśnienie
źródło
calendar
to tablica 12 pól, w których każde pole zawiera tablicę 2d znakówI.7=;#&.>".&.>,&.>_2{.&.>calendar 2016
jeśli połączysz wszystkie „niedocenione”, powinieneś być w stanie to dość krótko.Mathematica,
6257 bajtówFunkcja anonimowa. Pobiera liczbę jako dane wejściowe i zwraca listę jednoelementowych list liczb jako danych wyjściowych. Naprawdę nie jestem już pewien, jak to działa.
źródło
Perl + cal, 46 bajtów
Przykład:
źródło
Java 7,
186 182172 bajtyDzięki Kevin za uratowanie 4 bajtów
Dzięki @cliffroot za uratowanie 10 bajtów
bez golfa
Ta wersja jest dostarczana przez @cliffroot ( 168 bajtów )
próbka wyjściowa
źródło
n%4==0
w golfan%4<1
;n%400==0
don%400<1
iint c=...;int[]b=...,a=...
doint c=...,b[]=...,a[]=...
.b
ia
można je zdefiniować wint
części w ten sposób:int ... ,b[]=...,a[]=...
int[]f(int n){int x=--n*365+n/4+n/400-n++/100,k=0,b[]={1,(n%4<1&n%100>0)|n%400<1?-1:-2,1,0,1,0,1,1,0,1,0,1},a[]=new int[12];for(int i:b)a[k++]=(x+=i+30)%7==1?1:0;return a;}
zapisano kilka bajtówb
sięb[]={3,(n%4<1&n%100>0)|n%400<1?1:0,3,2,3,2,3,3,2,3,2,3}
ii+30
abyi+28
przez 2 bajtyint[]f(int n){int b=13561787|((n%4<1&n%100>0)|n%400<1?1<<20:0),x=--n*365+n/4+n/400-n/100,a[]=new int[12],k=0;while(k<12)a[k++]=(x+=(b>>24-k*2&3)+28)%7==1?1:0;return a;}
Python 2, 100 bajtów
Ugh. Matematyka z datami nie jest tak prosta, jak bym chciał.
Wypróbuj online
Ta sama długość:
źródło
MATL , 21 bajtów
Miesiące są wyświetlane jako liczby.
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
Korzysta z wbudowanych funkcji konwersji daty. W danym roku sprawdza, który ostatni dzień miesiąca to poniedziałek.
Zamiast wyraźnego określania ostatniego dnia miesiąca
k
(który może wynosić 28, 29, 30 lub 31), określamy0
-ty dzień miesiącak+1
, który jest równoważny i nie zależy od miesiąca ani roku.źródło
Narzędzia Bash + GNU, 56 bajtów
Wygląda na wymaganą
date
wersję 8.25. Wersja 8.23 w Ideone tego nie wycina.źródło
Excel, 537 bajtów
Ponieważ - wiesz - Excel!
Zajmuje rok wejścia w A1. Zwraca szesnastkową listę miesięcy; 1 = styczeń, C = grudzień. Ponieważ każdy miesiąc jest pojedynczą cyfrą, separator nie jest potrzebny.
Przykład: A1 zawiera 2016. B1 zawiera powyższą formułę i wyświetla się jako
2A
, co oznacza luty i październik.źródło
PHP, 109
180159bajtówwhile
dofor
jak jest to obecnie jeden rok (znowu, dzięki Titus)Stary 2
Obsługuje wszystkie lata od kropki do 10000, pozbyłem się również niezdefiniowanego ostrzeżenia var, którego nie znałem na jednym komputerze. Tak, jest dłuższy niż stara wersja, ale jest bardziej niezawodny.
Stary 1
Jeśli działa na systemie Windows lub 32-bitowym, pojawi się przerażający błąd 2038, ale na 64-bitowym systemie Linux jest w porządku.
Próbowałem użyć,
date("t"...
która ma oznaczać ostatnią datę danego miesiąca, ale wyniki nie były zgodne z poprzednio wymienionymi w tym wątku.źródło
$z
, bez cudzysłowówN
) -1:for
zamiastwhile
-43 : weź dane zgodnie z żądaniem zamiast zapętlania lat -3:join
zamiastimplode
-16: wyjście bezpośrednie:for($z=$argv[1];$m++<12;)if(date(N,strtotime(sprintf("%04d-$m-",$z).cal_days_in_month(0,$m,$z)))<2)echo"$m,";
+9, jeśli nalegasz, aby nie wstawiać przecinka:echo$o=$o?",$m":$m;
PHP, 92 bajty
sprawdź 12 razy 1 miesiąc po pierwszym dniu roku jest wtorek. Jeśli tak, to dzień poprzedzający ostatni dzień miesiąca to poniedziałek.
źródło
C, 214 bajtów
Skompilować
Nie golfił
Z kredytami dla odpowiednich guru.
Michael Keith i Tom Craver dla programu C, aby znaleźć dzień tygodnia dla podanej daty .
Collin Biedenkapp dla Q&A: Jak dowiedzieć się, jaki jest ostatni dzień miesiąca?
źródło
if
w drugą stronę, aby uzyskaćelse
zwrot31
, a zatem możesz wyeliminować wielki==
łańcuch?C, 119 bajtów
Wykorzystuje to tabelę, która zawiera przesunięcie dni tygodnia ostatniego dnia każdego miesiąca dla roku przestępnego, zakodowanego w 32-bitowym słowie ze znakiem 7. Jeśli nie jest to rok przestępny, dodajemy 1 do przesunięcia stycznia (jak widać
y&3||y%25<1&&y&15
służy do sprawdzania przez lata bez dni przestępnych). Następnie po prostu przeglądamy co miesiąc i sprawdzamy, czy ostatni dzień to poniedziałek. Właściwie dość proste, bez brzydkich hacków i sztuczek. Tutaj jest nieco nie golfa:Mógłbym ponownie to zrobić, aby przepisać to jako funkcję zapisywania kilku znaków.
printf
Też zajmuje trochę zbyt dużo miejsca ...źródło
PHP,
96957671696461 bajtówUwaga: numery roku muszą być uzupełnione do 4 znaków, np
0070
.Uruchom tak:
Wyjaśnienie
Iteruje od -1 do -12. Utwórz datę, używając mktime, dzień
0
(ostatni dzień poprzedniego miesiąca) i miesiąc2..13
. Sformatuj datę jako numer dnia , a jeśli wynik to 1, wydrukuj bieżący numer. Znak ujemny-
jest używany jako separator.Millenium Bug znów uderza!
Zauważ, że w tej wersji zakres
0..100
jest interpretowany jako1970..2069
. Nie stanowi to problemu dla zakresu0..69
, ponieważ tygodnie mają wzorzec powtarzający się co 400 lat (146097 dni, dokładnie 20871 tygodni), ale dla zakresu70..99
dodaje się 1900 do numeru roku, który nie jest wielokrotnością 400. Aby naprawić ten problem TYLKO dla liczb 30-letnich w zakresie 10k, najprostszym sposobem jest dodanie 400 do numeru roku, aby zapobiec dwucyfrowej interpretacji ( +4 bajty ):Poprawki
!~-$i
porównać$i
z1
(-1
binarny zanegowana jest0
logicznie negowana jesttrue
, co drugi numer jestfalse
), więc nie są potrzebne nawiasylast day ofYYYY-m
notacji do utworzenia datydate
istrtotime
zamiastdate_create
YYYY-m
części datymktime
zamiaststrtotime
. Przywrócono używanie dnia0
(mktime
obsługuje również miesiąc 13, więc0-13
==31-12
)-R
aby$argn
udostępnićźródło
mktime
usuwa konieczność wypełniania roku, prawda?mktime
jest to sprzeczne z intuicją , ponieważ argumenty są traktowane jakoINT
s. Oznacza to, że nie możesz wypełnić roku ... więc wszystko w zasięgu0..100
jest interpretowane jako1970..2070
. Nie stanowi to problemu dla zakresu,0..70
ponieważ 400 lat ma dokładną liczbę tygodni (więc kalendarze powtarzają wzór co 400 lat), ale70..99
dodaje 1900 (nie wielokrotność 400!). Dlatego nowa wersja. ma błąd.$argv[1]+400
... chyba że dni tygodnia w Julianie i Gregoriańskim są różne.Excel,
4289796 bajtówWprowadź w A1. Wyjście niepodzielonych wartości szesnastkowych (styczeń = 0, grudzień = B)
Dodano 10 bajtów („+2000”), aby umożliwić obsługę dat sprzed 1990 r.
Zaoszczędź 11 bajtów dzięki @ Engineer Toast .
Pierwsza próba (428 bajtów), intensywne pożyczanie z rozwiązania @ Adám .
źródło
297 -> May
powraca6
z tą formułą. Czy nie powinno być 4?1776
daje7A
zamiast tylko8
na wrzesień.Date(A1,3,0)
zamiastEOMONTH(DATE(A1,2,1),0)
Bash + cal, 58 bajtów
źródło
cal
(np. OSX), ale uważaj na końcowe spacje na GNUcal
.Python 2, 94 bajty
repl.it
Funkcja nienazwana, rok całkowity, wyświetla listę numerów miesięcy
[1-12]
.Próbowałem również pokonać liczbę bajtów arytmetyką bez powodzenia (110 bajtów). :
Nienazwana funkcja, która zwraca listę wartości logicznych reprezentujących, czy miesiące [styczeń-grudzień] kończą się w poniedziałek
źródło
Java 7,
200249 bajtówW Javie
GregorianCalendar
jest mieszanką kalendarza gregoriańskiego i kalendarza juliańskiego. Z tego powodu rok1
dał nieprawidłowe wyniki. ZmianaCalendar c=Calendar.getInstance();
doGregorianCalendar c=new GregorianCalendar();c.setGregorianChange(new Date(1L<<63));
poprawek to przez wymuszanie użycia tylko w kalendarzu gregoriańskim. Dzięki @JonSkeet na stackoverflow.com za wyjaśnienie mi tego.Kod niepoznany i testowy:
Wypróbuj tutaj.
Wydajność:
źródło
C # 6C #,171167135 bajtów-32 bajty dzięki Shebang
Drukuj miesiące jako liczby; z ograniczeniem miejsca; z końcową przestrzenią. Teraz ta odpowiedź działa również dla wcześniejszych wersji C #.
Stary, 167 bajtów
-4 bajty dzięki TimmyD
Miesiące wyjściowe to liczby w ciągu zwracanym, rozdzielane przecinkami
Nie golfił
źródło
void q(int y){for(int m=1;m<13;m++){if((int)new DateTime(y,m,DateTime.DaysInMonth(y,m)).DayOfWeek==1){Console.WriteLine(m);}}}
;) Również byłoby krótsze oddanychDayOfWeek
doint
niż byłoby rzucićint
sięDayOfWeek
Action<int>
aby zaoszczędzić trochę bajtówRubinowy, 54 + 6 = 60 bajtów
6 bajtów
-rdate
w wierszu polecenia, aby uzyskać klasę Date ze standardowej biblioteki.Wyjaśnienie: całkiem proste dzięki doskonałej
Date
klasie Ruby stdlib . Nie tylko mieć metod, takich jakmonday?
,tuesday?
itp, konstruktor odbędzie liczby ujemne dla każdej dziedzinie ubiegłym roku oznacza „zalicza to pole wstecz od końca okresu reprezentowane przez poprzedniego pola”.$*
jest skrótemARGV
, więc$*[0]
jest to szybki sposób na uzyskanie pierwszego argumentu wiersza poleceń.źródło
PHP, 84 bajty
Mój pierwszy Code Golf. Jest to najkrótszy jak dotąd PHP w tej kwestii.
EDYCJA: wydaje się, że nie działa przez rok 1. Muszę dowiedzieć się, dlaczego, ale teraz muszę iść.
źródło
for(;$m++<12;)strftime("%w",strtotime($argv[1]+($m/12^0)."-".($m%12+1)."-1"))!=2?:print"$m ";
R,
106999583787774 bajtówSekwencja ostatnich dni każdego miesiąca jest określona przez
seq(as.Date(paste0(x,-2,-1)),,'m',12)-1
:paste0
wymusza -2 i -1 na znaki. Jeślix
było 2016 na przykład,paste0(x,-2,-1)
daje"2016-2-1"
która jest następnie przekształcany do 1 lutego 2016 przezas.Date
.seq
zastosowany do POSIXct lub obiektu Date jestseq(from, to , by, length.out)
: tutajto
nie jest podany,by
jest podany jako taki,'m'
który jest dopasowany'month'
dzięki częściowemu dopasowaniu, ilength.out
jest oczywiście 12.-1
daje nam wtedy ostatni dzień z 12 miesięcy, poczynając od stycznia danego roku.Przypadki testowe:
Stara wersja z 95 bajtami, wyświetlająca nazwy miesięcy zamiast tylko ich liczb:
źródło
seq
że mam metodę dlaDate
-objektów, co rozwiązuje problemas.Date
braku obsługi lat powyżej10000
w mojej usuniętej odpowiedzi.seq.Date
iseq.POSIXt
są dość imponujące: mogą nawet przetwarzać polecenia takie jakseq(time1, time2, by="10 min")
lubseq(date1, date2, by="quarter")
. Bardzo przydatne podczas kreślenia szeregów czasowych.Japt, 24 bajty
Przetestuj online! Zwraca tablicę liczb,
false
zamiast miesięcy, które nie kończą się w poniedziałek.Wystąpił błąd w interpretatorze, który nie pozwalał mi korzystać
Ð
z treści funkcji£
. Po usunięciu błędu i dodaniu innej funkcji w bieżącym zatwierdzeniu jest to 18 bajtów:źródło
Java,
143129 bajtówKorzysta z nowego interfejsu API czasu Java 8.
Wydajność
Zauważ, że każda linia ma dodatkowe spacje na końcu.
Niegolfowany i testowany
Goli
DayOfWeek::ordinal
do porównania ze stałą numeryczną zamiast stałej wyliczeniowej.Dzięki @TimmyD za ogólny pomysł, jeśli nie dokładne rozwiązanie! ;-)
źródło
getValue()
metodę, która zaoszczędziłaby kilka bajtów.ordinal()
pozwala zaoszczędzić 1 bajt więcej w porównaniu dogetValue()
, chociaż zaleca się, aby nigdy go nie używać.GNU awk, 80 bajtów
Przykład
źródło