Herausforderung
Peter ist wieder aufgestanden, um uns vor den doppelten Herausforderungen zu retten!
Peter Taylor ist tot , und daran besteht kein Zweifel (abgesehen von den vielen Zweifeln, die wir haben ... aber ignorieren Sie das einfach). In seinem Gedächtnis müssen Sie ein Programm schreiben, das feststellt, ob ein bestimmter Benutzer lebt oder tot ist.
Weitere Informationen
Ein Benutzer ist tot, wenn er länger als einen Tag nicht gesehen wurde, und danach lebt er noch. Überprüfen Sie den zuletzt gesehenen Abschnitt hier:
Die Eingabe ist eine Benutzer-ID (meine ist beispielsweise 30525 und die von Peter Taylor ist 194). Angenommen, alle Eingaben sind gültige PPCG-IDs.
Wenn der Benutzer am Leben ist, sollten Sie Folgendes ausgeben:
[User name] is alive!
Wenn Sie [Benutzername] durch ihren Benutzernamen ersetzen, nicht durch ihre Benutzer-ID.
Wenn der Benutzer tot ist, sollten Sie Folgendes ausgeben:
Sadly, [User name] is dead.
T-SQL-Einträge, die den SE Data Explorer verwenden, sind nicht zulässig.
Gewinnen
Das kürzeste Programm in Bytes gewinnt.
Bestenliste
var QUESTION_ID=59763;OVERRIDE_USER=30525;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:
CJam, 115 Bytes
Die Idee ist die gleiche wie in meiner Bash-Antwort , außer dass diese Antwort keine regulären Ausdrücke verwendet, da CJam keine regulären Ausdrücke hat ...
Der Online-Interpreter führt keine Webanforderungen aus, daher funktioniert dies nur über die Befehlszeile.
quelle
Bash, 151 Bytes
Die Ausgabe an STDERR wird wie gewohnt ignoriert .
Beispiellauf
Idee
Dieser Code sucht nach Zeilen,
s="r
die>
vor ihrem Auftreten keine haben . Beispielsweise:da
, enthält sie das Wortyesterday
oderdays
(wie in2 days ago
).untot.Der Name des Benutzers wird aus einem Twitter-Meta-Tag extrahiert. Beispiel:
quelle
Javascript ES6, 234 Bytes
Kommentierte Version
quelle
PowerShell (Version 4),
228 217 209, 157 Bytez.B
(Entschuldigung, Keith Randall, Sie waren nur der erste Account, den ich mit> 1 Tag seit dem letzten Sehtermin gefunden habe.)
Ich war mit dem soliden, zuverlässigen 209-Byte-1-Prozessor, der die API aufruft, zufrieden, aber Screen-Scraping ist der richtige Weg zum Golfen.
Dadurch wird der Benutzername nun aus der umgeleiteten URI abgerufen, es handelt sich jedoch nicht um eine numerische ID, sondern um einen Namen.
Und es passt zur Linie
Last seen <span title="2015-10-03 13:15:38Z" class="relativetime">2 days ago</span>
mitn <... [nr]s ago<
Versuch , vor Sekunden, vor Minuten, vor Stunden und gerade jetzt zu fangen und "Tage Wochen, Monate" vor oder die langfristigen Daten + Zeiten zu verpassen. Und versuchen, "zuletzt gesehen" und nicht die anderen relativen Zeiten zu fangen. (Danke Dennis).NB.
curl
ist ein Standard-Alias fürInvoke-WebRequest
, es ist nicht das Standard-Curl-Programm, das auf Windows portiert ist.quelle
secs ago
,1 min ago
(keines
), und ich denke , die ich gesehen habejust now
.R,
384.350BytesDas ist für dich, Peter!
Beachten Sie, dass hierfür die
httr
undjsonlite
Pakete installiert werden, obwohl sie für diesen Code zu der Arbeit nicht importiert werden müssen , da wir verweisen explizit Namensraum sind.Ungolfed:
Sparte 5 Bytes auf meinem vorherigen Ansatz und korrigierte einen Fehler in meinem aktuellen Ansatz dank minxomat!
quelle
"/users/"
in eine Variable setzen?scan()
dass nachfolgende Zeilen das Zeug sind, das Sie von STDIN eingeben möchten (wer weiß warum), daher sind in diesem Fall die Semikolons erforderlich. Aber im Allgemeinen hast du recht.AutoIt,
320316308 Bytes_DateDiff
berechnet die Differenz in Tagen ('D'
). Wenn die Differenz weniger als 1 Tag beträgt, ist sie 0, sodass wir sie als Booleschen Wert verwenden können. Das Titel-Tag des Werts "Zuletzt gesehen" enthält einen (fast) Standard-Zeitstempel.quelle
PHP, 187 Bytes
Ein ziemlich simpler Ansatz, der die Domain codegolf.xyz verwendet, ist, dass ich versuche, beide Variablen gleichzeitig abzurufen. Getestet auf einigen Benutzern mit korrekten Ergebnissen, lassen Sie mich bitte wissen, wenn es einige Problembereiche gibt!
Verwendung:
quelle
$m[1] is
erscheint zweimal. Wäre es nicht billiger, das zuerst auszudrucken und das Ternär nur für den toten / lebendigen Teil zu verwenden?Sadly, ...
Teil hat mir im Weg gestanden.time()-strtotime($m[2])
einer einzelnen Zeichenvariablen zu. Dann hall$m[1] is
und endlich die Toten / Lebenden. So habe ich es gemacht - keine Ahnung, ob das in PHP funktioniert :)Groovy, 355 Bytes
Nicht komprimierte Quelle
quelle