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>
Antworten:
Dyalog APL mit DFNS ‚s cal , Version 15.0: 22; Version 16.0: 19 Bytes
Die cal-Funktion wird mit einer Standardinstallation geliefert
)copy dfns
. Geben Sie einfach ein .Version 15.0:
∊⎕{⍵/⍨2=≢⍎⊢⌿cal⍺⍵}¨⍳12
∊
eintreten (abflachen)⎕{
...}¨
numerische Eingabe als linkes Argument für die folgende anonyme Funktion, wobei jeder der Werte auf der rechten Seite als rechtes Argument verwendet wird⍵/⍨
das Argument if (gibt eine leere Liste aus, wenn nicht)2=
zwei (nämlich Sonntag und Montag) ist gleich≢
die Bilanz von⍎
die Zahlen in⊢⌿
die unterste Reihe voncal
der Kalender für⍺⍵
Argument Jahr links, Argument Monat rechts, letzteres ist⍳12
1 bis 12Version 16.0:
⍸2=⎕{≢⍎⊢⌿cal⍺⍵}¨⍳12
⍸
die Indizes wo2=
zwei gleich (nämlich Sonntag und Montag)⎕{
...}¨
numerische Eingabe als linkes Argument für die folgende anonyme Funktion, wobei jeder der Werte auf der rechten Seite als rechtes Argument verwendet wird≢
die Bilanz von⍎
die Zahlen in⊢⌿
die unterste Reihe voncal
der Kalender für⍺⍵
Argument Jahr links, Argument Monat rechts, letzteres ist⍳12
1 bis 12quelle
JavaScript (Firefox 30+),
11210910395 ByteSchau ma, keine eingebauten!
Hier ist eine 107-Byte-ES6-Version:
Und hier ist mein vorheriger Versuch,
123113 Bytes ES6:Erläuterung
Der Wochentag eines bestimmten Jahres wird wie folgt berechnet:
Mit anderen Worten:
y
.y
(y>>2
).y
(y/100|0
).y
; das ist 1/4 vony/100|0
, also verwenden wir*3/4|0
.Dann modulieren wir das Ergebnis um 7. Wenn wir den
0
Sonntag,1
den Montag usw. bedeuten lassen, entspricht das Ergebnis dem Wochentag des 31. Dezember dieses Jahres. Daher wollen wir für Dezember prüfen, ob das Ergebnis ist1
. Dies gibt uns das letzte Zeichen in der Zeichenfolge.Der letzte Tag im November liegt 31 Tage vor dem letzten Tag im Dezember. Dies bedeutet, dass für den letzten Tag im November, der ein Montag sein soll, der 31. Dezember ein
(1 + 31) % 7 = 4
= Donnerstag sein muss.Dieser Vorgang wird wiederholt, bis wir auf März (a
3
) zurückkommen . Unabhängig davon, ob es einen Schalttag gibt oder nicht, der letzte Tag im Februar liegt 31 Tage vor dem letzten Tag im März, daher können wir dies auch berechnen(3 + 31) % 7 = 6
. Der schwierige Teil ist, den richtigen Wert für Januar zu finden:(6 + 29) % 7 = 0
.(6 + 28) % 7 = 6
.Wir können mit dem folgenden Snippet berechnen, ob es sich um ein Schaltjahr handelt oder nicht:
Dies gibt an,
0
oby
kein Schaltjahr ist, und ansonsten eine positive ganze Zahl. Das führt uns zuzur Berechnung des Januartages. Wir können es jedoch besser machen, indem wir die Bedingungen umkehren:
Da das falsche Ergebnis sowieso immer 0 ist, können wir es auf reduzieren
ein weiteres wertvolles Byte speichern.
Zusammengenommen durchlaufen wir alle Zeichen in der Zeichenfolge und prüfen, ob jedes Zeichen dem Wochentag des 31. Dezembers entspricht. Wir behalten die Indizes der übereinstimmenden bei und geben am Ende dieses Arrays zurück. Und so machen Sie Schaltjahresberechnungen ohne Einbauten.
quelle
!(y%4)*y%100|!(y%400)
ist. jedes Jahr durch 4 teilbar, ausser nicht durch 100 teilbar, außer auch durch 400 teilbary+(y>>2)+(z=y/25>>2)+(z>>2)
spart dir noch ein Byte.(y*5/4-(y/100)*3/4)
.JavaScript (Firefox 30-57),
6765646361 BytesGespeichert
246 Byte dank @ETHproductions.Speichert ein weiteres Byte, indem die Monate in umgekehrter Reihenfolge ausgegeben werden.quelle
.keys()
y=>[for(_ of(m=0,Array(12)))if(new Date(y+400,++m).getDay()==2)m]
Array(12)
y=>[for(_ of(m=0,1e11+""))if(new Date(y+400,++m).getDay()==2)m]
MySQL,
183134129106 BytesErsetzen
2016
durch das gewünschte Jahr. Lauf.Rev. 2: Verwendete die
help_topics
Tabelle in der Standardinstallation, anstatt eine temporäre Tabelle zu erstellen.Rev.3: Ich habe den
-
Trick von aross übernommen und festgestellt, dass ich auch die Anführungszeichen für weglassen kann"-1"
.In
-1
MySQL ist jedoch erforderlich: Ich benötige ein vollständiges Datum.Rev. 4: Die Einschränkung
m BETWEEN 1 AND 12
kann wie folgt erfolgenm>0 AND m<13
(-6), ist jedoch überhaupt nicht erforderlich. Ungültige Werte werden ignoriert. Warnungen werden gezählt, aber nicht aufgelistet.quelle
FROM help_topic
ohnemysql.
Arbeit? Ich habe es nicht ausprobiertUSE mysql;
Irgendwie muss die richtige Datenbank ausgewählt werden.Perl, 64 Bytes
Beinhaltet +1 für
-n
Geben Sie Input auf STDIN:
mon.pl
:quelle
Batch,
160152 BytesAntwort von Port of @ ETHproduction. Mit Monatsabkürzungen für
197189 Bytes:quelle
J,
483433 Bytes15 Bytes mit Hilfe von @ Adám gespeichert .
Verwendet den eingebauten Kalender, um ein Array von Zeichenfolgen zu generieren, die die Monate darstellen, und analysiert dann jede Zeichenfolge, um festzustellen, ob der letzte Montag der letzte Tag des Monats ist. Es gibt jeden Monat als Monatszahl aus. Das heißt,
Jan = 0
,Feb = 1
, ...,Dec = 11
.Die Ausgabe von
calendar
istVerwendung
Erläuterung
quelle
calendar
ein Array von 12 Feldern, wobei jedes Feld ein 2D-Array von Zeichen enthältI.7=;#&.>".&.>,&.>_2{.&.>calendar 2016
Wenn Sie alle "under-open" kombinieren, sollten Sie in der Lage sein, es ziemlich kurz zu machen.Mathematica,
6257 BytesAnonyme Funktion. Nimmt eine Zahl als Eingabe und gibt eine Liste von Zahlen mit einzelnen Elementen als Ausgabe zurück. Ich bin mir ehrlich gesagt nicht mehr sicher, wie es funktioniert.
quelle
Perl + cal, 46 Bytes
Beispiel:
quelle
Java 7,
186 182172 BytesVielen Dank an Kevin für das Speichern von 4 Bytes.
Vielen Dank an @cliffroot für das Speichern von 10 Bytes
ungolfed
Diese Version wird bereitgestellt von @cliffroot ( 168 Bytes )
Ausgabebeispiel
quelle
n%4==0
aufn%4<1
;n%400==0
zun%400<1
undint c=...;int[]b=...,a=...
zuint c=...,b[]=...,a[]=...
.b
unda
kann in demint
Teil wieint ... ,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;}
Wenige Bytes gespeichertb
zub[]={3,(n%4<1&n%100>0)|n%400<1?1:0,3,2,3,2,3,3,2,3,2,3}
undi+30
aufi+28
2 für mehr Bytesint[]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 Bytes
Pfui. Mathe mit Daten ist nicht so einfach, wie ich es gerne hätte.
Probieren Sie es online aus
Die gleiche Länge:
quelle
MATL , 21 Bytes
Monate werden als Zahlen angezeigt.
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Dies verwendet integrierte Funktionen zur Datumskonvertierung. Für das angegebene Jahr wird geprüft, welcher Monat der letzte Tag des Monats Montag ist.
Anstatt den letzten Tag des Monats
k
(der 28, 29, 30 oder 31 sein kann) explizit anzugeben , geben wir den0
-ten Tag des Monats ank+1
, der äquivalent ist und nicht von Monat oder Jahr abhängt.quelle
Bash + GNU-Dienstprogramme, 56 Bytes
Scheint,
date
Version 8.25 zu erfordern . Die Version 8.23 in Ideone schneidet es nicht.quelle
Excel, 537 Bytes
Weil - du weißt schon - Excel!
Nimmt das Eingabejahr in A1 auf. Gibt die hexadezimale Liste der Monate zurück. 1 = Januar, C = Dezember. Da jeder Monat eine einzelne Ziffer ist, ist kein Trennzeichen erforderlich.
Beispiel: A1 enthält 2016. B1 enthält die obige Formel und wird wie folgt angezeigt
2A
: Februar und Oktober.quelle
PHP, 109
180159Byteswhile
zu,for
da es jetzt ein einziges Jahr ist (noch einmal, danke Titus)Alt 2
Unterstützt alle Jahre von Punkt bis 10000 und behebt eine undefinierte var-Warnung, die ich auf einem PC nicht kannte. Ja, es ist länger als die alte Version, aber robuster.
Alt 1
Wenn Sie mit Windows oder einem 32-Bit-System arbeiten, tritt der gefürchtete 2038-Fehler auf, aber auf einem 64-Bit-Linux-System ist dies in Ordnung.
Ich habe versucht, ein
date("t"...
Datum zu verwenden, das das letzte Datum des angegebenen Monats darstellen soll, aber die Ergebnisse stimmen nicht mit den zuvor in diesem Thread erwähnten überein.quelle
$z
, keine Anführungszeichen fürN
) -1:for
stattwhile
-43 : Nehmen Sie die gewünschten Eingaben vor, anstatt die Jahre zu durchlaufen -3:join
stattimplode
-16: direkte Ausgabe: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, wenn Sie darauf bestehen, kein nachgestelltes Komma zu haben:echo$o=$o?",$m":$m;
PHP, 92 Bytes
check 12 mal 1 Monat nach dem ersten Tag eines Jahres ist ein Dienstag. Wenn es dann ist, ist der Tag vor dem letzten Tag im Monat ein Montag.
quelle
C 214 Bytes
Kompilieren
Ungolfed
Mit Credits zu den jeweiligen Gurus.
Michael Keith und Tom Craver für das C-Programm ermitteln das angegebene Datum für den Wochentag .
Collin Biedenkapp für Fragen und : Wie finde ich den letzten Tag des Monats heraus?
quelle
if
die andere Richtung drehen , um Ihreelse
Rückkehr zu erreichen31
, und daher die große==
Kette beseitigen können ?C 119 Bytes
Dies verwendet eine Tabelle, die den Versatz der Wochentage des letzten Tages jedes Monats für ein Schaltjahr enthält, codiert in einem vorzeichenbehafteten 32-Bit-Wort unter Verwendung von Basis 7. Wenn es kein Schaltjahr ist, addieren wir 1 zum Versatz von Januar (wie Sie sehen können,
y&3||y%25<1&&y&15
wird verwendet, um Jahre ohne Schalttage zu überprüfen). Dann durchlaufen wir einfach jeden Monat und prüfen, ob der letzte Tag ein Montag ist. Ganz einfach, keine hässlichen Hacks oder Tricks. Hier ist es leicht ungolfed:Ich könnte dies nochmals besuchen, um es als Funktion zum Speichern einiger Zeichen umzuschreiben. Das
printf
nimmt auch etwas zu viel Platz in Anspruch ...quelle
PHP
96957671696461 BytesHinweis: Jahreszahlen müssen mit 4 Zeichen aufgefüllt werden
0070
.Laufen Sie wie folgt:
Erläuterung
Iteriert von -1 bis -12. Erstelle ein Datum mit mktime, day
0
(dem letzten Tag des vorherigen Monats) und month2..13
. Formatieren Sie das Datum als Tageszahl. Wenn das Ergebnis 1 ist, drucken Sie die aktuelle Zahl. Das negative Vorzeichen-
wird als Begrenzer verwendet.Der Millenium Bug schlägt wieder zu!
Beachten Sie, dass bei dieser Version der Bereich
0..100
als interpretiert wird1970..2069
. Dies ist für den Bereich kein Problem0..69
, da Wochen ein Muster haben, das sich alle 400 Jahre wiederholt (146097 Tage, genau 20871 Wochen), aber für den Bereich70..99
wird der Jahreszahl 1900 hinzugefügt, was kein Vielfaches von 400 ist Das Problem ist NUR für 30-Jahres-Zahlen in einem Bereich von 10 KB. Die einfachste Möglichkeit besteht darin, der Jahreszahl 400 hinzuzufügen, um die zweistellige Interpretation ( +4 Byte ) zu verhindern:Optimierungen
!~-$i
Vergleichen$i
mit1
(-1
binär negiert ist0
, logisch negiert ist) wurde ein Byte gespeicherttrue
; jede andere Zahl istfalse
), sodass Klammern nicht erforderlich sindlast day ofYYYY-m
Notation zum Erstellen des Datumsdate
und gespeichertstrtotime
anstelle vondate_create
YYYY-m
Teil des Datums verwendet wirdmktime
anstelle vonstrtotime
. Zurückgesetzt, um Tag zu verwenden0
(mktime
unterstützt auch Monat 13, also0-13
==31-12
)-R
, um$argn
verfügbar zu machenquelle
mktime
beseitigt die Notwendigkeit, das Jahr aufzuschreiben, nicht wahr?mktime
ist kontraintuitiv , weil die Argumente als genommen werdenINT
s. Das bedeutet, dass Sie das Jahr nicht auffüllen können ... also wird alles im Bereich0..100
als interpretiert1970..2070
. Dies ist für den Bereich kein Problem,0..70
da 400 Jahre eine genaue Anzahl von Wochen haben (Kalender wiederholen das Muster also alle 400 Jahre), aber70..99
1900 addieren (kein Vielfaches von 400!). Daher neu ver. hat einen Fehler.$argv[1]+400
... es sei denn, Julianische und Gregorianische Wochentage unterscheiden sich.Excel,
4289796 BytesEingabe in A1. Ungetrennte Hexadezimalwerte ausgeben (Januar = 0, Dezember = B)
10 Bytes ("+2000") hinzugefügt, um die Verarbeitung von Daten vor 1990 zu ermöglichen.
11 Bytes dank @ Engineer Toast eingespart .
Erster Versuch (428 Bytes), stark von @ Adáms Lösung entlehnt .
quelle
297 -> May
kehrt6
mit dieser Formel. Sollte es nicht 4 sein?1776
gibt7A
statt nur8
für September.Date(A1,3,0)
anstelle vonEOMONTH(DATE(A1,2,1),0)
Bash + cal, 58 Bytes
quelle
cal
(zB OSX), aber achten Sie auf nachfolgende Leerzeichen unter GNUcal
.Python 2, 94 Bytes
repl.it
Eine unbenannte Funktion, die ein ganzzahliges Jahr annimmt, gibt eine Liste der Monatszahlen aus
[1-12]
.Ich habe auch versucht, die Byteanzahl mit Arithmetik ohne Erfolg zu schlagen (110 Bytes). :
Eine unbenannte Funktion, die eine Liste von Booleschen Werten zurückgibt, die angibt, ob die Monate [Jan-Dez] an einem Montag enden
quelle
Java 7,
200249 BytesIn Java
GregorianCalendar
ist eine Mischung aus einem Gregorianischen und einem Julianischen Kalender. Aus diesem Grund1
ergab das Jahr falsche Ergebnisse. Das Ändern,Calendar c=Calendar.getInstance();
umGregorianCalendar c=new GregorianCalendar();c.setGregorianChange(new Date(1L<<63));
dieses Problem zu beheben, erzwingt nur die Verwendung des Gregorianischen Kalenders. Vielen Dank an @ JonSkeet auf stackoverflow.com für die Erklärung.Ungolfed & Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
C # 6C #,171167135 Bytes-32 Bytes dank Shebang
Monate als Zahlen ausgeben; mit Raum begrenzt; mit Leerzeichen. Diese Antwort funktioniert jetzt auch für frühere Versionen von C #.
Alt, 167 Bytes
-4 Bytes dank TimmyD
Ausgabemonate sind durch Kommas getrennte Zahlen in der Rückgabezeichenfolge
Ungolfed
quelle
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);}}}
;) Auch wäre es kürzer die zu werfen ,DayOfWeek
umint
als es die zu werfen wäreint
zuDayOfWeek
Action<int>
paar Bytes zu sparenRuby, 54 + 6 = 60 Bytes
6 Bytes für
-rdate
in der Befehlszeile, um die Date-Klasse aus der Standardbibliothek abzurufen.Erklärung: Ziemlich unkompliziert dank der großartigen
Date
Klasse der Ruby-Stdlib . Nicht nur , dass es Methoden wiemonday?
,tuesday?
usw., wird der Konstruktor nimmt negative Zahlen für jedes Feld vergangenes Jahr bedeutet ‚vom Ende dieses Feld rückwärts zählt der Periode vom vorherigen Feld‘ dargestellt.$*
ist eine Abkürzung fürARGV
, also$*[0]
eine schnelle Möglichkeit, das erste Befehlszeilenargument abzurufen.quelle
PHP, 84 Bytes
Mein erster Code Golf. Dies ist das bisher kürzeste PHP in dieser Frage.
BEARBEITEN: Scheint für das erste Jahr nicht zu funktionieren. Ich muss herausfinden, warum, aber jetzt muss ich gehen.
quelle
for(;$m++<12;)strftime("%w",strtotime($argv[1]+($m/12^0)."-".($m%12+1)."-1"))!=2?:print"$m ";
R
106999583787774 BytesDie Reihenfolge der letzten Tage eines jeden Monats ist gegeben durch
seq(as.Date(paste0(x,-2,-1)),,'m',12)-1
:paste0
zwingt -2 und -1 zu Zeichen. Wenn dasx
zum Beispiel 2016 war,paste0(x,-2,-1)
gibt"2016-2-1"
das dann zum 1. Februar 2016 umgerechnet durchas.Date
.seq
angewendet auf ein POSIXct- oder ein Date-Objekt lautetseq(from, to , by, length.out)
: hierto
wird nicht angegeben,by
wird angegeben,'m'
was'month'
dank partiellem Abgleich abgeglichen wird , undlength.out
ist natürlich 12.-1
gibt uns dann den letzten tag der 12 monate beginnend mit januar des jeweiligen jahres.Testfälle:
Alte Version bei 95 Bytes, die die Monatsnamen anstelle nur ihrer Zahlen ausgibt:
quelle
seq
ein Verfahren zum hatteDate
-Objekte und diese löst das Problem deras.Date
nicht Jahre über Umgang10000
in meiner gelöschten Antwort.seq.Date
undseq.POSIXt
sind recht beeindruckend: sie können sogar Befehle wieseq(time1, time2, by="10 min")
oder verarbeitenseq(date1, date2, by="quarter")
. Sehr nützlich beim Plotten einer Zeitreihe.Japt, 24 Bytes
Online testen! Gibt ein Array von Zahlen mit aus
false
anstelle von Monaten kein Montag endet.Es gab einen Fehler im Interpreter, der es mir nicht erlaubte, ihn
Ð
im Funktionskörper zu verwenden£
. Nach dem Bugfix und einem weiteren Feature-Zusatz sind dies 18 Bytes im aktuellen Commit:quelle
Java,
143129 BytesDies verwendet die neue Zeit-API von Java 8.
Ausgabe
Beachten Sie, dass jede Zeile am Ende ein zusätzliches Leerzeichen enthält.
Ungolfed und Prüfung
Rasiert
DayOfWeek::ordinal
Zum Vergleichen mit einer numerischen Konstante anstelle der Enum-Konstante.Danke @TimmyD für die allgemeine Idee, wenn nicht die genaue Lösung! ;-)
quelle
getValue()
Methode, die einige Bytes einspart.ordinal()
spart 1 Byte mehr alsgetValue()
, obwohl empfohlen wird, es niemals zu verwenden.GNU awk, 80 Bytes
Beispiel
quelle