Hintergrund
Einige Feiertage haben feste, leicht zu merkende Daten, wie der 31. Oktober, der 25. Dezember usw. Einige möchten jedoch problematisch sein. Sie sind angegeben als "der erste Montag im September" oder "der vierte Donnerstag im November". Woher soll ich das wissen?
Alles was ich weiß ist, dass Thanksgiving sich schnell nähert, also brauche ich ein Programm, um herauszufinden, wann es ist. Einige Leute sagen sogar, dass es morgen ist , daher muss Ihr Programm so kurz wie möglich sein, damit ich es rechtzeitig erneut eingeben kann.
Die Herausforderung
Erstellen Sie ein Programm oder eine Funktion, die bei einem bis zu vierstelligen Jahr (z. B. 2015 oder 1984) das Datum des Erntedankfestes der Vereinigten Staaten in diesem Jahr ausgibt oder zurückgibt. Thanksgiving ist laut Wikipedia der vierte Donnerstag im November . (Hinweis: Diese Seite enthält auch einige interessante Informationen zum Datumsmuster.)
Eingabe : Eine Dezimalzahl mit maximal vier Stellen, die ein Jahr in der Common Era (CE) darstellt. Beispiele: 987, 1984, 2101
Ausgabe : Das Datum, einschließlich Monat und Tag, an dem Thanksgiving in diesem Jahr fällt oder fallen würde, wenn es existiert. Dies kann in jedem vernünftigen Format erfolgen. Verwenden Sie Ihr bestes Urteilsvermögen. Verwenden Sie in jedem Fall den Gregorianischen Kalender, auch wenn er zu diesem Zeitpunkt nicht verwendet wurde.
(Hinweis: Achten Sie darauf, Schaltjahre richtig zu behandeln!)
Testfälle
Eingang 1:
2015
Ausgang 1:
Nov 26
Eingang 2:
1917
Ausgang 2:
Nov 22
Wertung
Einsendungen werden in Bytes gewertet . Ich empfehle diese Website , um die Anzahl Ihrer Bytes im Auge zu behalten, obwohl Sie jeden beliebigen Zähler verwenden können.
Boni
-25% auf Ihre Punktzahl, wenn Sie BCE-Daten als negative Zahlen behandeln (z. B. -480 wäre das Schlachtjahr von Thermopylae).
Negative Testfälleingabe:
-480
Entsprechende Ausgabe:
Nov 25
Das ist Code-Golf , also gewinnt die niedrigste Punktzahl!
Bearbeiten: Ich markiere Thomas Kwas TI-BASIC-Einsendung als akzeptiert. Lassen Sie sich davon nicht abhalten, neue Einträge einzureichen!
Bestenlisten
Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
# Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=64785,OVERRIDE_USER=45162;function answersUrl(e){return"http://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"http://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:
TI-BASIC, 15 Bytes * 0,75 = 11,25
Getestet mit meinem TI-84 + Taschenrechner
Danksagung ist der 29. November minus dem Wochentag des 1. September, wobei 1 Sonntag und 7 Samstag ist. Dies wird im Format ausgegeben
MMDD
.Testfälle:
2015
->1126
,1917
->1122
,-480
->1125
wurden verifiziert. TI-BASIC scheint den Gregorianischen Kalender für alle Daten zu verwenden.TI-BASIC unterstützt keine negativen Jahre, aber dies bringt den Bonus, weil wir 10000 zur Eingabe hinzufügen. Da der Gregorianische Kalender einen Zeitraum von 400 Jahren hat, ändert sich der Wochentag nicht.
quelle
dayofWK(
undAns
bestehen jeweils aus 2 und 1 Byte.PHP,
6548424136 (+2 für-F
) = 38 BytesÜbernimmt die Eingabe als erstes Befehlszeilenargument. Läuft mit Warnungen, die von unseren Regeln akzeptiert werden. Druckt
NovDD
, woDD
ist der Tag des Erntedankfestes.Kein Online-Link, da ideone keine Kommandozeilen-Argumente unterstützt und ich keinen Online-Interpreter kenne, der dies tut.
Vielen Dank an Alexander O'Mara, der mir einen neuen Trick beigebracht hat, und an Primo für eine deutliche Reduzierung
quelle
"4thuXI"
. Sie können den Raum zwischen dem Jahr sogar fallen lassen"4thuXI2015"
.-F
kann die Eingabe auf gekürzt werden"4thuXI$argn"
.Md
braucht keine Anführungszeichen, mitE_NOTICE
deaktiviert.Mathematica,
5938 Bytesquelle
WolframAlpha["Thanksgiving " <> #] &
das Datum als Zeichenfolge eingegeben.JavaScript (ES6),
424031 Bytes - 25% = 23,25Da das Datum "in einem vernünftigen Format sein kann", wird diese Funktion verwendet
DD.MM
. Ich habe eine TeaScript-Antwort mit einer anderen Technik geschrieben, aber diese Formel war kürzer.Erläuterung
Da die Monate auf Null basieren, wird
new Date(a,10)
einDate
Objekt zurückgegeben, das den 1. November des angegebenen Jahres darstellt.Da
getDay()
eine Zahl zurückgegeben wird, die den Wochentag von darstellt0..6
, möchten wir eine Karte von erstellendann 22 hinzufügen. Es stellt sich heraus, dass
(11 - new Date(a,10).getDay()) % 7
das den Trick tun wird. Wie @Thomas Kwa betonte, entspricht dies28-new Date(a,8).getDay()
28 minus dem Wochentag des 1. September.quelle
Japt ,
4337363529 Bytes - 25% = 21,75Japt ist eine verkürzte Version von Ja vaScri pt .
Hahaha, ich fand einen wirklich betrügerischen Trick: Der Interpreter ignoriert beim Dekomprimieren alle Klammern in Strings (die zum Einfügen von Code verwendet werden), sodass wir den gesamten Quellcode komprimieren können, um ein Byte zu speichern>: D
Die beiden
?
s sollten die nicht druckbaren Unicode-Zeichen U + 0098 bzw. U + 0085 sein. Probieren Sie es online!Nach der Dekomprimierung ergibt der Code Folgendes:
Welches ergibt:
Welches gibt die richtige Ausgabe.
Verwendet die Technik von intrepidcoder und gibt im Format aus
dd.mm
. Stützt richtig negative Jahre. Vorschläge willkommen!Bearbeiten: Ab dem 2. Dezember können Sie jetzt diesen 11-Byte- Code (mit 8,25 Punkten ) verwenden:
(Ich wünschte, ich hätte dies früher implementiert!)
quelle
Vitsy , 44 Bytes
Ich rechne mit reiner Mathematik !
Golf gespielt:
Ungolfed (verschob den Methodenaufruf in die erste Zeile, um ihn lesbar zu machen):
Es gibt wahrscheinlich einen besseren Algorithmus dafür (und das ist wahrscheinlich schrecklich golfen), aber für diejenigen, die sich fragen, kommt mein Algorithmus von hier .
Probieren Sie es online!
Bekomme ich Bonuspunkte für die Berechnung und genau 42 Bytes?Träume ruiniert.Vielen Dank an @ Hosch250 für den Hinweis, dass ich es falsch gemacht habe. : D behoben.
quelle
Python 38 * 0,75 = 28,5 Bytes
Dies funktioniert mit negativen Jahren in der in der Frage angegebenen Weise, obwohl mir aufgefallen ist, dass der Gregorianische Kalender kein Jahr 0 enthält, sodass dieses Verhalten ein wenig verdächtig ist.
quelle
f=
."Nov "+`...`
-40%7==2
aber-40%-7==-5
JavaScript (ES6), 43.5
Die tatsächliche Byteanzahl beträgt 58. Der Bonus von -25% gilt => 58 * 0,75 = 43,5
So geradlinig
und albernes auch sein mag, ohne knifflige Umgehungen oder Berechnungen.De-Golf (ES5) + Demo:
Beachten Sie, dass die Eingabe von Jahr 0-100 1900-2000 Jahre ergibt. Es sieht jedoch so aus, als gäbe 0-100 Jahre das gleiche Datum wie 1900-2000, wenn man sich die anderen Antworten ansieht.
Ersetzen
a+18
durch22
, weil es nur in "else" aufgerufen wird und "else" nur auftritt, wenn a weder größer noch kleiner als 4 ist, dh genau 4.Ersetzen
a<4?26-a:a>4?a+21:22
durcha<=4?26-a:a+21
quelle
a<4?x:a>4?y:a+18
gleichwertig mita<4?x:a>4?y:22
?TeaScript,
353324 Bytes - 25% = 18Dies ist die gleiche Methode wie bei meiner JavaScript-Antwort , bei der die clevere Formel von Thomas Kwa verwendet wird.
Alternative Version mit Erläuterung
quelle
Jython,
141.155BytesVerwendet die Java Calendar- und Scanner-Klassen mit Python-Syntax.
Bearbeiten: Kleinere Syntaxprobleme, 14 Bytes hinzugefügt.
Siehe auch meine Brainfuck- Version.
quelle
Python,
838178 Bytesquelle
import datetime as d
und dann können Sied
für jedes Mal, wenn Siedatetime
in Ihrem Programm verwenden.import pandas;print'Nov '+`((10-pandas.datetime(input(),11,1).weekday())%7)+22`
from datetime import*
ist noch ein bisschen kürzer, da du das nichtd.
mehrExcel,
36715453 - 25% = 39,75 ByteAngenommen, das Jahr befindet sich in Zelle A1 im Datumsformat. Gibt die Ganzzahl des Tages im November zurück, an dem Thanksgiving stattfindet.
Dies gilt nur für normale Schaltjahre. Es berücksichtigt nicht die Tatsache, dass die Jahre 2100, 2200, 2300 keine Schaltjahre sind.
Dies soll erst ab 1621 funktionieren, dh seit Thanksgiving. (Obwohl es auf jeden Fall bis 0 n. Chr. Funktionieren wird).
Hübsch gedruckt:
Gah! Anstatt nach dem 1. Januar zu rechnen und dann viele Schaltjahrberechnungen durchzuführen, um mit dem 29. Februar fertig zu werden, hätte ich die Berechnungen nach dem 1. November durchführen sollen Die Implementierung hängt jedoch vom Standard-Datumsformat Ihrer Excel-Installation ab. Diese Version ist für TT / MM / JJJJ vorgesehen:
Und jetzt, da ich das Pfaffing durchgeführt habe, um eine knappe Berechnung in Smalltalk zu erhalten, führt das Zurückportieren nach Excel zu:
(mit dem Jahr noch in A1, aber als ganze Zahl). Dies funktioniert sogar für die Jahre 2100, 2200 und 2300 für alle Daten ab 7700BC / E mit dem Datumswiederholungstrick von Thomas Kwa.
quelle
PowerShell,
676484725845 BytesWir nehmen unsere Eingabe-Ganzzahl als
$a
und geben sofortNov
eine neue Zeile aus. Dann stellen wir$a
Nullen und den 1. September voran,00$a/9/1
bevor wir eine neue generierendate
und bestimmen, wasDayOfWeek
das ist. Wenn der 1. September an einem Sonntag (.DayOfWeek
gleich0
) ist, ist Thanksgiving am 28.. Wenn der 1. September an einem Montag ist (.DayOfWeek
gleich1
), ist Thanksgiving am 27.. Und so weiter. Daher subtrahieren wir diesen Wochentag von,28
um unsere Antwort auszugeben.Das Voranstellen mit zweistelligen Nullen berücksichtigt ein- und zweistellige Jahre, ohne das Parsen für drei- oder vierstellige Jahre zu unterbrechen. Funktioniert nicht für negative Zahlen, da .NET
datetime
nicht weniger als Jahre unterstützt0
.Vielen Dank an TessellatingHeckler und Toby Speight für die Unterstützung.
quelle
"{0:D3}/Nov/$_" -f $a
kürzer ist als"$($a.ToString("000"))/Nov/$_"
und das gleiche Ergebnis, und ich denke , Sie nutzen könnten11
stattNov
Nov
war ein Überbleibsel aus der Zeit, als ich versuchte, zweistellige Jahreszahlen richtig zu erkennen, also tausche ich das auch aus. Vielen Dank!date "11/1/$a"
Ergebnisse inThursday, November 1, 2007 12:00:00 AM
. Dies liegt daran, dass wir die Calendar.TwoDigitYearMax- Eigenschaft nicht bearbeiten. Wenn es also analysiert wird , müssen wir doppelt null auffüllen, um das zu umgehen.Golfscript, 25 × 0,75 = 18,75 Bytes
Hierbei wird die Sakamoto-Formel für den Wochentag verwendet. Da es Leute gibt, die dies tun, erfolgt die Ausgabe in Form von
dd-mm
. Mein vorheriger Beitrag ist unten zu finden:quelle
TSQL,
478296 BytesNur für Funsies. Normalerweise hätten Sie eine Datumsmaßtabelle, um dies zu vereinfachen,
select * from dimDate where [Year] = @Year and [Holiday] = 'Thanksgiving'
aber wenn dies nicht der Fall ist ...Ungolfed:
quelle
(28 - ( x - 2 + floor(x / 4) - floor(x / 100) + floor(x / 400) ) % 7
) Ja, das Lesen anderer Antworten ist oft hilfreich.Pyth,
3028 * 75% = 21 BytesIch bin zu 100% davon überzeugt, dass dies verkürzt werden könnte, aber hey, es ist mein erstes Pyth-Programm! \O/
Testsuite
Gibt das Datum im
dd.mm
Format aus.Bitte schlagen Sie Golfmöglichkeiten vor, wenn Sie können! Ich würde gerne mehr über Pyth erfahren.
quelle
Excel,
6448Jahr in A1
= DATE (A1,11, CHOOSE (WOCHENTAG (DATE (A1,11,1)), 26,25,24,23,22,28,27))quelle
13
BytesTEXT
von gespeichert=TEXT(DATE(A1,11,MOD(12-WEEKDAY(DATE(A1,11,1)),7)+22),"d mmm")
- die Ausgabe ist eine Ganzzahl ohne Formatierung.Befunge, 41 Bytes
Führen Sie diesen Interpreter aus .
Erläuterung: Ein gemeinsames Jahr ist 365 = 1 mod 7 Tage, also das Jahr plus all 4 - ten Jahr, minus all 100 th (
d
in ascii) Jahr plus alle 400 - ten Jahren Konten für alle Schalttag (einschließlich dem laufenden Jahr). Das Ergebnis:::4"d"*/\"d"/-\4/++
kann dann als 5. März gedacht werden th , den ersten Tag nach dem Februar am gleichen Tag wie der erste Tag des Jahres gemeinsam Jahre fällt. Danach haben wir uns auf das Muster mit kalibrieren5+7%-
Subtrahieren eine Anzahl von Tagen der Woche vom 28. - ten (die47*
gespeicherten früher) im November. Dann drucken.Eine Version, die BC-Jahre korrigiert, ist derzeit mit 59 -25% = 44,25 Byte länger als der vorgesehene Bonus:
quelle
Matlab, 78 Bytes
quelle
Ruby,
605857 * 0,75 = 42,75 Bytes58 Bytes
60 Bytes
Ungolfed:
Verwendung:
quelle
VBA, 124 Bytes * 75% = 93 Bytes
Ich bin mir nicht sicher, ob Leerzeichen zählen, es liegt irgendwo zwischen 102 und 124, zögern Sie nicht, sie zu bearbeiten.
Wenn Ganzzahlen eine gültige Ausgabe sind, bin ich mehr als glücklich, den
Format
Teil zu entfernen .quelle
PHP 5.3+, 59 Bytes
Dies verwendet die in PHP eingebaute Funktion
strtotime
, um das Datum zu analysieren.Dies erwartet, dass der Wert über den GET-Parameter
Y
ODER über übergeben wirdphp-cli Y=<year>
.Es wird versucht, den nächsten Donnerstag nach dem 19. November zu finden.
Bei den Tests, die ich bisher durchgeführt habe, funktioniert es einwandfrei.
Beachten Sie, dass zweistellige Jahreszahlen möglicherweise unterschiedlich interpretiert werden.
Ich benutze es
gmdate
, um Zeitzonenprobleme zu vermeiden, aber es funktioniert genauso gut mitdate
(zumindest, wo ich wohne).quelle
T-SQL
215 Bytes248 * 0,75 = 186 BytesUngolfed
was mit diesem Testgerüst
ergibt wie gewünscht
quelle
Pike ,
87 91 107 7776 Bytes - 25% = 57Lassen Sie die alte zum Vergleich, weil ich finde es klüger in Bezug auf die Nutzung des Kalendermoduls, aber das oben ist viel kürzer.
quelle
string t(int y){object n=Calendar.Month(y,11);return"Nov "+(n->weeks()->day(4)&n->days())[3]->month_day();}
dann zähle ich das als 107 Bytes.Smalltalk - Squeak und Pharo ,
6957544935343332 - 25% = 24 Byte"Nov nn":
69B49B (-25% = 36,75B)11nn (anInt):
575432B (-25% = 24B)Vorherige Versionen
11nn Ausgang
Nov nn Ausgabe
nn Ausgabe
nb Dies wird nicht als Methode, sondern als Programm - speziell als Workspace-Ausdruck - bereitgestellt.
Es wird davon ausgegangen, dass die Eingabe gegeben ist (gemäß der Formulierung "gegeben mit einem bis zu vierstelligen Jahr".
Wenn die Eingabe deklariert und gegeben wird, werden weitere 11 Zeichen hinzugefügt:
|y|y:=2015.(12-(Date y:y m:11 d:1)w)\\7+1122
Vielen Dank an eMBee, dass Sie gezeigt haben, wie Sie noch ein Zeichen entfernen können - das Leerzeichen unmittelbar vor dem 'w'.
Eigentlich hat mich das dazu inspiriert, das Leerzeichen vor 'd:' zu entfernen:
|y|y:=2015.(12-(Date y:y m:11d:1)w)\\7+1122
Was hat funktioniert!
quelle
GNU-Coreutils, 35 Bytes
Durchsucht einfach die Woche vom 22. bis 28. November nach einem Donnerstag. Führen Sie es in einem C- oder POSIX-Gebietsschema aus, da ich davon abhänge, dass Donnerstag die einzige Abkürzung für einen Tag ist, die ein 'h' enthält.
Hier ist eine klügere Antwort, wenn auch ein Byte länger:
Wir ermitteln die Wochentagsnummer eines Datums in einer ziemlich willkürlichen Woche zwischen März und September (Tag und Monat sind also jeweils eine Ziffer und wir sind nicht von einem möglichen Schalttag betroffen). Wir wählen den Tag so, dass es ein Sonntag (
%w==0
) ist, an dem Thanksgiving am 28. ist. Wir können diesen Wert dann von 28 subtrahieren, um den entsprechenden Donnerstag zu erhalten.quelle
TSQL,
5352 BytesGeige
Berechnen Sie den Montag vor oder am 2. September und addieren Sie 59 Tage
(besser als montags vor oder am 4. oktober berechnen und 31 tage hinzufügen, da der 10. oktober der monat ist und somit 1 byte gespart wird)
quelle
Perl, 92 Bytes
BEARBEITEN: Festes Ausgabeformat, Fehler behoben, zB 2012 Ergebnis, verwendet kürzeres "für" Format. Danke an msh210.
quelle
use Time::Local;(localtime(timelocal 0,0,0,$_,10,$ARGV[0]))[6]==4?print:0for 22..29
. Beide Skripte weisen jedoch die gleichen Mängel auf: (1) Sie geben nicht die erforderliche Darstellung des Monats aus. (2) Sie haben die falsche Ausgabe für zB 2012.